innobakcupexベースのインスタンス間不完全なリカバリ手順


MySQLは、ホット・スペア・ベースで、既存のインスタンスの完全または不完全なリカバリを実現します.従来のインスタンスにDRBDやMHAなどが配備されている場合が多く、この場合、既存のインスタンスに基づいたリカバリは、元の障害現場やアーキテクチャに影響し、インスタンス間リカバリによって損失や異常データをリカバリすることができます.また、インスタンス・レベル・データベースの移行は、インスタンス全体に基づいて実行できます.次に、インスタンス間での不完全なリカバリに基づいて説明します.
 
1、主要ステップa、新規インスタンスbの準備、ホット・スペアに基づくprepareおよびrecoverc、完全なバックアップを新規インスタンスにコピー(ホスト間で新規ホストにコピーすべき場合)d、新規インスタンスeの起動、必要に応じてbinlogを障害点fにリカバリ、検証結果
 
2、実例にまたがる不完全なリカバリのプレゼンテーション
--   :            
--             :3306 /data/mysqldata
--             :3307 /data/recoverdata
a、     
--          
SHELL# mkdir -p /data/recoverdata     

--       
SHELL# cp /etc/my.cnf /etc/my3307.cnf
SHELL# vi /etc/my3307.cnf             --        ,  ,   ,servier_id  
SHELL# /app/soft/mysql/scripts/mysql_install_db --user=mysql --ldata=/data/recoverdata --basedir=/app/soft/mysql \
> --defaults-file=/etc/my3307.cnf
 
SHELL# /app/soft/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &
SHELL# /app/soft/mysql/bin/mysqladmin -u root password '***' -P3307 -S /tmp/mysql3307.sock
SHELL# /app/soft/mysql/bin/mysqladmin -uroot -p*** -P3307 -S /tmp/mysql3307.sock shutdown

b、     prepare recover
--        :
--20150128   ,20150129   ,20150130   ,20150131   ,       3 
--     2015-01-31 23:53:54
--      :
SHELL# pwd
/backup/hotbak/physical/20150128
SHELL# ls
base_20150128  inc_20150129  inc_20150130  inc_20150131

--prepare   
SHELL# innobackupex --apply-log --redo-only --user=root --password=*** --port=3307 \
--socket=/tmp/mysql3307.sock --defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128

--prepare   
SHELL# innobackupex --apply-log --redo-only --user=root --password=*** --port=3307 \
--socket=/tmp/mysql3307.sock --defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \
--incremental-dir=/backup/hotbak/physical/20150128/inc_20150129

--prepare   
SHELL# innobackupex --apply-log --redo-only --user=root --password=*** --port=3307 \
--socket=/tmp/mysql3307.sock --defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \
--incremental-dir=/backup/hotbak/physical/20150128/inc_20150130

--prepare   ,  ,         --redo-only  ,         
SHELL# innobackupex --apply-log --user=root --password=*** --port=3307 --socket=/tmp/mysql3307.sock \
--defaults-file=/etc/my3307.cnf /backup/hotbak/physical/20150128/base_20150128 \
--incremental-dir=/backup/hotbak/physical/20150128/inc_20150131

c、           
SHELL# cp -R /backup/hotbak/physical/20150128/base_20150128/* /data/recoverdata
SHELL# chown mysql:mysql -R /data/recoverdata

# Author : Leshami
# Blog   : http://blog.csdn.net/leshami

d、     
--            
SHELL# /app/soft/mysql/bin/mysqld_safe --defaults-file=/etc/my3307.cnf &

e、      binlog    
--         2015-01-31 23:53:54,     binlog        。
--       binlog     
SHELL# more /backup/hotbak/physical/20150128/inc_20150131/xtrabackup_binlog_info 
mysql-bin.000036        100130712
SHELL# mysqlbinlog /data/mysqldata/mysql-bin.000036 --start-position=100130712 --stop-datetime="2015-01-31 23:53:54" \   
> |mysql -uroot -p*** -P3307 -S /tmp/mysql3307.sock

f、    
mysql> select * from test.heartbeat;
+----------------------------+-----------+------------------+-----------+-----------------------+---------------------+
| ts                         | server_id | file             | position  | relay_master_log_file | exec_master_log_pos |
+----------------------------+-----------+------------------+-----------+-----------------------+---------------------+
| 2015-01-31T23:53:53.001690 |        11 | mysql-bin.000459 | 703735593 | NULL                  |                NULL |
+----------------------------+-----------+------------------+-----------+-----------------------+---------------------+