Monday, June 10, 2013

Percona Xtrabackup / innobackupexバックアップと復元プロセス

Original post: http://anothermysqldba.blogspot.com/2013/06/percona-xtrabackupinnobackupex-backup.html

これはPercona Xtrabackup / innobackupexを使用する方法の非常に単純な例です。 

このMariaDBはただ持って世界データベース例データとして、その中に。 
これは、すべてのスクリプトかもしれないけど、今のところ、それはデモを目的としています。 

フルバックアップを作成します: 

MariaDB [(none)]> create database Start_Of_Demo; -- Just here for the demo
Query OK, 1 row affected (0.00 sec)


[root@Fedora64 src]# innobackupex --no-lock --parallel=4 --user=root --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ --no-timestamp /usr/local/src/fullbackup/

xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.

innobackupex: Backup created in directory '/usr/local/src/fullbackup'
130609 15:41:39 innobackupex: Connection to database server closed
130609 15:41:39 innobackupex: completed OK!

[root@Fedora64 src]# ls -al fullbackup/
total 18472
drwxr-xr-x. 6 root root 4096 Jun 9 15:41 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:41 backup-my.cnf
-rw-r-----. 1 root root 18874368 Jun 9 15:41 ibdata1
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:41 world
-rw-r--r--. 1 root root 13 Jun 9 15:41 xtrabackup_binary
-rw-r-----. 1 root root 89 Jun 9 15:41 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:41 xtrabackup_logfile

増分バックアップを作成します。

MariaDB [(none)]> create database incremental_1; -- Just here for the demo
Query OK, 1 row affected (0.00 sec)

[root@Fedora64 src]#innobackupex --incremental --no-lock --parallel=4 --no-timestamp --user=root --incremental-basedir=/usr/local/src/incremental_last_checkpoint/ --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ /usr/local/src/incremental/

xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.

innobackupex: Backup created in directory '/usr/local/src/incremental'
130609 15:47:20 innobackupex: Connection to database server closed
130609 15:47:20 innobackupex: completed OK!

[root@Fedora64 src]# ls -al incremental
total 64
drwxr-xr-x. 7 root root 4096 Jun 9 15:47 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:47 backup-my.cnf
-rw-r-----. 1 root root 16384 Jun 9 15:47 ibdata1.delta
-rw-r-----. 1 root root 44 Jun 9 15:47 ibdata1.meta
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 incremental_1
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:47 world
-rw-r--r--. 1 root root 13 Jun 9 15:47 xtrabackup_binary
-rw-r-----. 1 root root 93 Jun 9 15:47 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:47 xtrabackup_logfile 


別の増分バックアップを作成します。

MariaDB [(none)]> create database incremental_2;-- Just here for the demo
Query OK, 1 row affected (0.00 sec)

[root@Fedora64 src]# innobackupex --incremental --no-lock --parallel=4 --no-timestamp --user=root --incremental-basedir=/usr/local/src/incremental_last_checkpoint/ --extra-lsndir=/usr/local/src/incremental_last_checkpoint/ /usr/local/src/incremental_2/

xtrabackup: Transaction log of lsn (1597964) to (1597964) was copied.

innobackupex: Backup created in directory '/usr/local/src/incremental_2'
130609 15:49:49 innobackupex: Connection to database server closed
130609 15:49:49 innobackupex: completed OK!
[root@Fedora64 src]# ls -al incremental_2
total 68
drwxr-xr-x. 8 root root 4096 Jun 9 15:49 .
drwxr-xr-x. 6 root root 4096 Jun 9 15:49 ..
-rw-r--r--. 1 root root 260 Jun 9 15:49 backup-my.cnf
-rw-r-----. 1 root root 16384 Jun 9 15:49 ibdata1.delta
-rw-r-----. 1 root root 44 Jun 9 15:49 ibdata1.meta
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 incremental_1
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 incremental_2
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:49 world
-rw-r--r--. 1 root root 13 Jun 9 15:49 xtrabackup_binary
-rw-r-----. 1 root root 93 Jun 9 15:49 xtrabackup_checkpoints
-rw-r-----. 1 root root 2560 Jun 9 15:49 xtrabackup_logfile 


今、あなたは、これを覚えておく必要があります。
  • もちろんのデータベースをシャットダウンしなければならない。
    • あなたはそれがとにかくクラッシュ可能性があり、復元を行っている場合
  • データディレクトリは空でなければなりません。

サーバは当社のデータディレクトリをクリアし、その後オフになっていることを確認してください。

[root@Fedora64 src]# ps -ef | grep mysql
root 4538 1940 0 15:54 pts/2 00:00:00 grep --color=auto mysql

[root@Fedora64 src]# ls -al /var/lib/mysql/
total 28724
drwxr-xr-x. 8 mysql mysql 4096 Jun 9 15:53 .
drwxr-xr-x. 43 root root 4096 Jun 8 19:41 ..
-rw-rw----. 1 mysql mysql 16384 Jun 9 15:53 aria_log.00000001
-rw-rw----. 1 mysql mysql 52 Jun 9 15:53 aria_log_control
-rw-r--r--. 1 mysql mysql 18874368 Jun 9 15:53 ibdata1
-rw-rw----. 1 mysql mysql 5242880 Jun 9 15:53 ib_logfile0
-rw-rw----. 1 mysql mysql 5242880 Jun 9 15:17 ib_logfile1
drwx------. 2 mysql mysql 4096 Jun 9 15:43 incremental_1
drwx------. 2 mysql mysql 4096 Jun 9 15:48 incremental_2
drwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 mysql
drwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 performance_schema
drwx------. 2 mysql mysql 4096 Jun 9 15:40 Start_Of_Demo
drwxr-xr-x. 2 mysql mysql 4096 Jun 9 15:16 world

[root@Fedora64 src]# rm -Rf /var/lib/mysql/*

今、あなたは、これを覚えておく必要があります。 あなたはバックアップと次の増分バックアップを作成するときは、最初の完全バックアップを復元してから、すべての増分バックアップを適用する必要があります。 ですから、後でただ最後の増分からリストアフルバックアップを行うことができるとは思わない。 別のフルバックアップが必要となる前に、維持する余裕ができますどのように多くの増分バックアップは、常に心に留めておく。

ただ、完全バックアップを復元するには:

innobackupex --copy-back /usr/local/src/fullbackup/

innobackupex: Starting to copy InnoDB log files
innobackupex: in '/usr/local/src/fullbackup'
innobackupex: back to original InnoDB log directory '/var/lib/mysql'
innobackupex: Finished copying back files.

130609 15:54:57 innobackupex: completed OK!

[root@Fedora64 src]# ls -al /var/lib/mysql/
total 18456
drwxr-xr-x. 6 mysql mysql 4096 Jun 9 15:54 .
drwxr-xr-x. 43 root root 4096 Jun 8 19:41 ..
-rw-r--r--. 1 root root 18874368 Jun 9 15:54 ibdata1
drwxr-xr-x. 2 root root 4096 Jun 9 15:54 mysql
drwxr-xr-x. 2 root root 4096 Jun 9 15:54 performance_schema
drwxr-xr-x. 2 root root 4096 Jun 9 15:54 Start_Of_Demo
drwxr-xr-x. 2 root root 4096 Jun 9 15:54 world


[root@Fedora64 mysql]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 5.5.31-MariaDB MariaDB Server


それは、フルバックアップを行いますが、私はその後の増分バックアップを行いました。 だから、シャットダウンと一掃データディレクトリなければならないでしょう。 なぜですか?あなたはそれを復元し完全に増分バックアップを適用する必要があります。 それは、次の例に示すように行われます。



innobackupex --apply-log --redo-only /usr/local/src/fullbackup/
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
130609 15:57:59 InnoDB: Starting shutdown...
130609 15:58:00 InnoDB: Shutdown completed; log sequence number 1597964
130609 15:58:00 innobackupex: completed OK!

今私たちは最初の増分ディレクトリを適用できます。 あなたがincremental_1ディレクトリが今fullbackupディレクトリに適用されていることを以下の例に見ることができます。 これは、以前のケースではなかった。

innobackupex --apply-log --redo-only /usr/local/src/fullbackup/ --incremental-dir=/usr/local/src/incremental/
130609 15:58:42 innobackupex: completed OK!
[ルート@ Fedora64 SRC]#LS-アルfullbackup /
合計20520
をdrwxr-xr - xに。 7ルートルート4096 6月9日午後3時58分。
をdrwxr-xr - xに。 6ルートルート4096 6月9日15時49分..
-RW-R - rを - 。 1ルートルート260 6月9日15時41分バックアップのmy.cnf
-RW-R -----。 1ルートルート18874368 6月9日15時58分ibdata1を
をdrwxr-xr - xに。 2ルートルート4096 6月9日15時58 incremental_1
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後03時41分のmysql
をdrwxr-xr - xに。 2ルートルートperformance_schema 4096 6月9日午前15時41分
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後3時41分Start_Of_Demo
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後3時41分の世界
-RW-R - rを - 。 1ルートルート13 6月9日夜03時41 xtrabackup_binary
-RW-R -----。 1ルートルート89 6月9日午前15時58 xtrabackup_checkpoints
-RW-R -----。 1ルートルート2097152 6月9日午後3時58 xtrabackup_logfile

今私たちは第二インクリメンタルディレクトリを適用してみましょう。 あなたがincremental_2ディレクトリが今fullbackupディレクトリに適用されていることを以下の例に見ることができます。 これは、以前のケースではなかった。
innobackupex --apply-log /usr/local/src/fullbackup/ --incremental-dir=/usr/local/src/incremental_2/
innobackupex:コピー '/ usr/local/src/incremental_2/Start_Of_Demo/db.opt'は/ usr / local / srcに/ fullbackup / Start_Of_Demo / db.opt 'へ
130609夜04時00分09秒innobackupex:完成したOK!

[ルート@ Fedora64 SRC]#LS-アルfullbackup /
合計20524
をdrwxr-xr - xに。 8ルートルート4096 6月9日16時00分。
をdrwxr-xr - xに。 6ルートルート4096 6月9日15時49分..
-RW-R - rを - 。 1ルートルート260 6月9日15時41分バックアップのmy.cnf
-RW-R -----。 1ルートルート18874368 6月9日午前16時00分ibdata1を
をdrwxr-xr - xに。 2ルートルート4096 6月9日15時58 incremental_1
をdrwxr-xr - xに。 2ルートルート4096 6月9日16時00分incremental_2
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後03時41分のmysql
をdrwxr-xr - xに。 2ルートルートperformance_schema 4096 6月9日午前15時41分
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後3時41分Start_Of_Demo
をdrwxr-xr - xに。 2ルートルート4096 6月9日午後3時41分の世界
-RW-R - rを - 。 1ルートルート13 6月9日夜03時41 xtrabackup_binary
-RW-R -----。 1ルートルート89 6月9日午前16時00 xtrabackup_checkpoints
-RW-R -----。 1ルートルート2097152 6月9日午後3時58 xtrabackup_logfile


今私たちはフルバックアップディレクトリを適用してみましょう。 あなたがincremental_2ディレクトリが今fullbackupディレクトリに適用されていることを以下の例に見ることができます。 これは、以前のケースではなかった。

[root@Fedora64 src]# rm -Rf /var/lib/mysql/*
[ルート@ Fedora64 SRC]#innobackupex - コピーバックは/ usr / local / srcに/ fullbackup /
[ルート@ Fedora64 SRC]#chownは-Rのmysql:mysqlのは/ var / libに/ mysqlの

すべてが今復元され、提供されています:

[root@Fedora64 mysql]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 5.5.31-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
Start_Of_Demo |
incremental_1 |
incremental_2 |
| mysql |
| performance_schema |
world |
+--------------------+

参考のために利用可能なリンク。