Xtrabackupバックアップリカバリ

16342 ワード

一、Xtrabackupの説明とインストール
一、Xtrabackupの説明とインストール
二、Xtrabackup全バックアップと回復
三、Xtrabackupフル・バックアップとインクリメンタル・バックアップとリカバリ
四、Xtrabackup部分の完備と増分と回復
一、Xtrabackupの説明とインストール
1.Xtrabackupの紹介と説明
Percona XtraBackupは世界で唯一オープンソースの無料MySQLホットバックアップソフトウェアで、非ブロックを実行できます.
InnoDBとXtraDBデータベースのバックアップ.Percona XtraBackupを使用すると、次のようなメリットが得られます.
バックアップを迅速かつ確実に完了
バックアップ中の無停止トランザクション
ディスク容量とネットワーク帯域幅の削減
自動バックアップ検証
リカバリ時間が短縮されるため、通常の稼働時間が長くなります.
Percona XtraBackupは、すべてのバージョンのPercona Server、MySQL、MariaDBのMySQLホットバックアップを提供しています.実行
ストリーミング、圧縮、インクリメンタルMySQLバックアップ.
Percona XtraBackupはMySQL、MariaDB、Percona Serverに適用されます.完全な非ブロックバックアップをサポート
のInnoDB、XtraDB、HailDBストレージエンジンです.また、次のストレージエンジンを簡単にバックアップできます.
バックアップ終了時に書き込みを一時停止:MyISAM、Merge、Archive、パーティションテーブル、トリガ、
データベース・オプション.
2、Xtrabackupダウンロードインストール
2.1.ダウンロードアドレス
https://www.percona.com/downloads/XtraBackup/LATEST/
2.3.インストール
yum install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

依存perlパッケージをインストールする必要があります
2.4.インストール結果の表示
# rpm -ql percona-xtrabackup-24-2.4.7-1.el7.x86_64
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/share/doc/percona-xtrabackup-24-2.4.7
/usr/share/doc/percona-xtrabackup-24-2.4.7/COPYING
/usr/share/man/man1/innobackupex.1.gz
/usr/share/man/man1/xbcrypt.1.gz
/usr/share/man/man1/xbstream.1.gz
/usr/share/man/man1/xtrabackup.1.gz

二、Xtrabackup全バックアップ
1.Xtrabackup準備完了
1.1.完全準備開始
バックアップディレクトリの作成
# mkdir /data/backups

準備前のデータ表示:
MariaDB [ckldb]> select * from jone;
+------+--------+
| id   | name   |
+------+--------+
|    1 | wukaka |
|    2 | side   |
|    3 | ckl    |
|    4 | kk     |
|    5 | zld    |
|    6 | ned    |
|    7 | stark  |
+------+--------+
7 rows in set (0.00 sec)

1.2.バックアップの開始
# innobackupex --user=root /data/backups/                        
170430 23:04:14 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".

170430 23:04:14  version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;port=3306;mysql_socket=/tmp/mysql.sock' as 'root'  (using password: NO).
170430 23:04:14  version_check Connected to MySQL server
170430 23:04:14  version_check Executing a version check against the server...
170430 23:04:14  version_check Done.
170430 23:04:14 Connecting to MySQL server host: localhost, user: root, password: not set, port: 3306, socket: /tmp/mysql.sock
Using server version 10.1.22-MariaDB
innobackupex version 2.4.7 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 6f7a799)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /data/mysql/3306/data
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup:   innodb_data_home_dir = /data/mysql/3306/data
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /data/mysql/3306/data
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 67108864
........
170430 23:04:24 Executing UNLOCK TABLES
170430 23:04:24 All tables unlocked
170430 23:04:24 Backup created in directory '/data/backups/2017-04-30_23-04-14/'
MySQL binlog position: filename 'mysql-bin.000009', position '745', GTID of the last change '0-1-62'
170430 23:04:24 [00] Writing backup-my.cnf
170430 23:04:24 [00]        ...done
170430 23:04:24 [00] Writing xtrabackup_info
170430 23:04:24 [00]        ...done
xtrabackup: Transaction log of lsn (1634473) to (1634473) was copied.
170430 23:04:25 completed OK!

1.3.バックアップファイルの表示
# ll /data/backups/2017-04-30_23-04-14/
total 75800
-rw-r-----. 1 root root      418 Apr 30 23:04 backup-my.cnf
drwxr-x---. 2 root root       52 Apr 30 23:04 ckldb
-rw-r-----. 1 root root 77594624 Apr 30 23:04 ibdata1
drwxr-x---. 2 root root     4096 Apr 30 23:04 mysql
drwxr-x---. 2 root root       20 Apr 30 23:04 performance_schema
drwxr-x---. 2 root root       20 Apr 30 23:04 test
-rw-r-----. 1 root root       28 Apr 30 23:04 xtrabackup_binlog_info
-rw-r-----. 1 root root      113 Apr 30 23:04 xtrabackup_checkpoints
-rw-r-----. 1 root root      494 Apr 30 23:04 xtrabackup_info
-rw-r-----. 1 root root     2560 Apr 30 23:04 xtrabackup_logfile

# cd /data/backups/2017-04-30_23-04-14/
# cat xtrabackup_binlog_info  
mysql-bin.000009        745     0-1-62
#                POS       

LSN,     ,Innodb         64    
# cat xtrabackup_checkpoints 
backup_type = full-backuped  #       
from_lsn = 0  #LSN    
to_lsn = 1634473  #LSN    
last_lsn = 1634473  #  LSN  
compact = 0
recover_binlog_info = 0

1.4.シミュレーションによるファイルの削除
# rm -rf /data/mysql/3306/data

2.リカバリの準備
バックアップを作成した後、データをリストアする準備ができていません.コミットされていないトランザクション、またはログを再生するトランザクションが取り消される場合があります.これらの待機操作を行うと、準備フェーズの目的でデータファイルが一致します.完了すると、データは使用できます.innobackupexを使用してバックアップを準備するには、--apply-logとバックアップディレクトリのパスをパラメータとして使用する必要があります.
2.1.データベースの停止
# service mysqld stop

2.2.リカバリの準備
# innobackupex --apply-log /data/backups/2017-04-30_23-04-14/
170430 23:18:35 innobackupex: Starting the apply-log operation

IMPORTANT: Please check that the apply-log run completes successfully.
           At the end of a successful apply-log run innobackupex
           prints "completed OK!".
.......
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 1634856
170430 23:18:46 completed OK!

2.3.リカバリの開始
# innobackupex --copy-back /data/backups/2017-04-30_23-04-14/
170430 23:20:31 innobackupex: Starting the copy-back operation

IMPORTANT: Please check that the copy-back run completes successfully.
           At the end of a successful copy-back run innobackupex
           prints "completed OK!".
......
170430 23:20:42 [01] Copying ./ibtmp1 to /data/mysql/3306/data/ibtmp1
170430 23:20:42 [01]        ...done
170430 23:20:43 completed OK!

2.4.リカバリされたファイルの表示
# ll
total 219148
drwxr-x---. 2 root root       52 Apr 30 23:20 ckldb
-rw-r-----. 1 root root 77594624 Apr 30 23:20 ibdata1
-rw-r-----. 1 root root 67108864 Apr 30 23:20 ib_logfile0
-rw-r-----. 1 root root 67108864 Apr 30 23:20 ib_logfile1
-rw-r-----. 1 root root 12582912 Apr 30 23:20 ibtmp1
drwxr-x---. 2 root root     4096 Apr 30 23:20 mysql
drwxr-x---. 2 root root       20 Apr 30 23:20 performance_schema
drwxr-x---. 2 root root       20 Apr 30 23:20 test
-rw-r-----. 1 root root       23 Apr 30 23:20 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root      494 Apr 30 23:20 xtrabackup_info

権限の追加、データベースの起動:
# chown -R mysql.mysql data/
# service mysqld start

リカバリ結果の表示:
MariaDB [(none)]> use ckldb
Database changed
MariaDB [ckldb]> show tables;
+-----------------+
| Tables_in_ckldb |
+-----------------+
| jone            |
+-----------------+
1 row in set (0.00 sec)

MariaDB [ckldb]> select * from jone;
+------+--------+
| id   | name   |
+------+--------+
|    1 | wukaka |
|    2 | side   |
|    3 | ckl    |
|    4 | kk     |
|    5 | zld    |
|    6 | ned    |
|    7 | stark  |
+------+--------+
7 rows in set (0.01 sec)

三、Xtrabackupフル・バックアップとインクリメンタル・バックアップとリカバリ
1.バックアップ済みの完全バックアップを実行し、今回は不要
2.インクリメンタルバックアップ
2.1.初回データの追加
MariaDB [ckldb]> insert into jone values(8,'lanester'),(9,'gonku');
Query OK, 2 rows affected (0.39 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [ckldb]> select * from jone;
+------+----------+
| id   | name     |
+------+----------+
|    1 | wukaka   |
|    2 | side     |
|    3 | ckl      |
|    4 | kk       |
|    5 | zld      |
|    6 | ned      |
|    7 | stark    |
|    8 | lanester |
|    9 | gonku    |
+------+----------+
9 rows in set (0.00 sec)

2.2.1回目のインクリメンタル・バックアップの実行
# innobackupex --incremental /data/backups/ --incremental-basedir=/data/backups/2017-04-30_23-04-14/
170430 23:37:49 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".
.......
xtrabackup: Transaction log of lsn (1636718) to (1636718) was copied.
170430 23:37:56 completed OK!

バックアップ結果の表示:
# ls /data/backups/
2017-04-30_23-04-14  2017-04-30_23-37-49

# cd /data/backups/2017-04-30_23-37-49
backup_type = incremental
from_lsn = 1634473
to_lsn = 1636718
last_lsn = 1636718
compact = 0
recover_binlog_info = 0

2.3.2回目のデータを追加
MariaDB [ckldb]> insert into jone values(10,'dragon'),(11,'lanli'); 
Query OK, 2 rows affected (0.61 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [ckldb]> select * from jone;
+------+----------+
| id   | name     |
+------+----------+
|    1 | wukaka   |
|    2 | side     |
|    3 | ckl      |
|    4 | kk       |
|    5 | zld      |
|    6 | ned      |
|    7 | stark    |
|    8 | lanester |
|    9 | gonku    |
|   10 | dragon   |
|   11 | lanli    |
+------+----------+
11 rows in set (0.00 sec)

2.4.2回目のインクリメンタル・バックアップの実行
# innobackupex --incremental /data/backups/ --incremental-basedir=/data/backups/2017-04-30_23-37-49/
170430 23:41:46 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".
......
xtrabackup: Transaction log of lsn (1638894) to (1638894) was copied.
170430 23:41:54 completed OK!

バックアップ結果の表示:
# du -sh /data/backups/*
224M    /data/backups/2017-04-30_23-04-14
1.3M    /data/backups/2017-04-30_23-37-49
1.1M    /data/backups/2017-04-30_23-41-46

# cd /data/backups/2017-04-30_23-41-46/
# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 1636718
to_lsn = 1638894
last_lsn = 1638894
compact = 0
recover_binlog_info = 0

3.アナログ削除データベース
# rm -rf /data/mysql/3306/data/

4.インクリメンタルバックアップ・リカバリ
innobackupexでインクリメンタルバックアップの準備インクリメンタルバックアップの準備はちょっと違います
完全な.これは、より多くの注目が必要な段階かもしれません.
まず、各バックアップにコミットするトランザクションが必要です.これにより、ベース・バックアップとインクリメンタルが統合されます.
その後、バックアップを使用するには、コミットされていないトランザクションをロールバックする必要があります.
コミットされたトランザクションをリプレイし、基本バックアップでコミットされていないトランザクションをロールバックする場合は、実行できません.
増分を追加します.この操作をインクリメンタルで実行すると、その時点からデータを追加できません.
および残りの増分.
4.1.リカバリの準備
# innobackupex --apply-log --redo-only /data/backups/2017-04-30_23-04-14/

4.1.1回目のインクリメンタル・バックアップ・リカバリの準備
# innobackupex --apply-log --redo-only /data/backups/2017-04-30_23-04-14/ --incremental-dir=/data/backups/2017-04-30_23-37-49

4.2.2回目のインクリメンタル・バックアップ・リカバリの準備
# innobackupex --apply-log --redo-only /data/backups/2017-04-30_23-04-14/ --incremental-dir=/data/backups/2017-04-30_23-41-46/

5.リカバリの開始
# innobackupex --copy-back /data/backups/2017-04-30_23-04-14/

6.リカバリデータおよびファイルの表示
# chown -R mysql.mysql /data/mysql/3306/data/
# service mysqld start

データの表示
MariaDB [(none)]> use ckldb
Database changed
MariaDB [ckldb]> select * from jone;
+------+----------+
| id   | name     |
+------+----------+
|    1 | wukaka   |
|    2 | side     |
|    3 | ckl      |
|    4 | kk       |
|    5 | zld      |
|    6 | ned      |
|    7 | stark    |
|    8 | lanester |
|    9 | gonku    |
|   10 | dragon   |
|   11 | lanli    |
+------+----------+
11 rows in set (0.00 sec)

2回のインクリメンタルバックアップデータがリカバリされました
四、Xtrabackup部分の完備と増分と回復
Percona XtraBackupは一部のバックアップを提供します.これは、特定のテーブルまたは
データベース.バックアップするテーブルは、後で作成または変更するため、別のテーブルスペースにある必要があります.
サーバでinnodb_を有効にしましたfile_per_tableオプション.
バックアップの一部に関する警告は1つだけです.バックアップのバックアップをコピーしないでください.バックアップの一部をリストア
従来の-copy-backオプションではなく、テーブルをインポートして完了する必要があります.いくつかあるけれど
ファイルをコピーして復元できるシーンは、データベースが一致しない可能性があります.
ケースはお勧めの方法ではありません.
部分バックアップを作成するには、データ全体をバックアップするどの部分を指定するかを3つの方法があります.一般
式(--include)、ファイル内のテーブル(--tables-file)を列挙するか、データベースのリスト(-データベース)を指定します.
--includeオプションを使用して提供される正規表現は、完全限定と一致します.
データベース名を含むテーブル名databasename.tablename.
1.単一ライブラリの完全な準備
# innobackupex --include='ckldb' /data/backups/
170501 00:07:31 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".
.......
170501 00:07:35 Backup created in directory '/data/backups/2017-05-01_00-07-31/'
MySQL binlog position: filename 'mysql-bin.000001', position '313', GTID of the last change ''
170501 00:07:35 [00] Writing backup-my.cnf
170501 00:07:35 [00]        ...done
170501 00:07:35 [00] Writing xtrabackup_info
170501 00:07:35 [00]        ...done
xtrabackup: Transaction log of lsn (1634875) to (1634875) was copied.
170501 00:07:35 completed OK!

バックアップ・ファイルの表示:
# cd /data/backups/2017-05-01_00-07-31/
[root@localhost 2017-05-01_00-07-31]# ls
backup-my.cnf  ckldb  ibdata1  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

2.単一ライブラリインクリメンタルバックアップ
#innobackupex --include='ckldb' --incremental /data/backups/ --incremental-basedir=2017-05-01_00-07-31

3.データの追加、2回目のインクリメンタルバックアップ
3.1.データの追加
MariaDB [ckldb]> insert into jone values(12,'firegod'),(13,'sevenGod');
Query OK, 2 rows affected (0.38 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [ckldb]> select * from jone;                                   
+------+----------+
| id   | name     |
+------+----------+
|    1 | wukaka   |
|    2 | side     |
|    3 | ckl      |
|    4 | kk       |
|    5 | zld      |
|    6 | ned      |
|    7 | stark    |
|    8 | lanester |
|    9 | gonku    |
|   10 | dragon   |
|   11 | lanli    |
|   12 | firegod  |
|   13 | sevenGod |
+------+----------+
13 rows in set (0.00 sec)

3.2.2回目のインクリメンタルバックアップを開始します.
# innobackupex --include='ckldb' --incremental /data/backups/ --incremental-basedir=/data/backups/2017-05-01_00-10-00/

4.シミュレーションによるデータベースの削除
MariaDB [(none)]> drop database ckldb; 
Query OK, 1 row affected (0.19 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

5.リカバリの準備
5.1.リカバリの準備
# innobackupex --apply-log --export /data/backups/2017-05-01_00-07-31/

5.2.最初のインクリメンタルバックアップの準備
# innobackupex --apply-log --redo-only /data/backups/2017-05-01_00-07-31/ --incremental-dir=/data/backups/2017-05-01_00-10-00/

5.3.2回目のインクリメンタル・バックアップの準備
# innobackupex --apply-log --redo-only /data/backups/2017-05-01_00-07-31/ --incremental-dir=/data/backups/2017-05-01_00-13-35/

6.回復開始
# \cp -rf /data/backups/2017-05-01_00-07-31/* /data/mysql/3306/data/

アクセス権の追加:
# chown -R mysql.mysql /data/mysql/3306/data/
# service mysqld start

データの表示:
MariaDB [(none)]> use ckldb
Database changed
MariaDB [ckldb]> select * from jone;
+------+----------+
| id   | name     |
+------+----------+
|    1 | wukaka   |
|    2 | side     |
|    3 | ckl      |
|    4 | kk       |
|    5 | zld      |
|    6 | ned      |
|    7 | stark    |
|    8 | lanester |
|    9 | gonku    |
|   10 | dragon   |
|   11 | lanli    |
|   12 | firegod  |
|   13 | sevenGod |
+------+----------+
13 rows in set (0.06 sec)