innobackupex恢復到指定的增量備份

測試驗證恢復到指定的增量備份:


root@debian:/var/lib# mysql -uroot -pleyou test

mysql> show tables;

Empty set (0.00 sec)


進行一個全備:

innobackupex --defaults-file=/etc/mysql/my.cnf  --user=root --password=leyou   /home/data/backup/full


創建表:


mysql> create table t(id int);

Query OK, 0 rows affected (0.00 sec)


mysql> insert into t values (1),(2),(3);

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0


mysql> create table t2 as select * from t;

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0



基於全備的增量備份:


innobackupex  --defaults-file=/etc/mysql/my.cnf  --user=root --password=leyou --incremental /home/data/backup/incr/ --incremental-basedir=/home/data/backup/full/2017-03-07_15-58-18/ --parallel=2



模擬故障,錯誤drop 表 t2:


mysql> drop table t2;

Query OK, 0 rows affected (0.00 sec)

mysql> create table t3 as select * from t;

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0


mysql> create table t4 as select * from t;

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0


增量備份2正常進行:

innobackupex  --defaults-file=/etc/mysql/my.cnf  --user=root --password=leyou --incremental /home/data/backup/incr/ --incremental-basedir=/home/data/backup/incr/2017-03-07_16-04-41/  --parallel=2



查看checkpoint信息:

root@debian:/home/data/backup/incr/2017-03-07_16-04-41# cat xtrabackup_checkpoints 

backup_type = incremental

from_lsn = 31407802020

to_lsn = 31407817345

last_lsn = 31407817345

compact = 0

root@debian:/home/data/backup/incr/2017-03-07_16-04-41# 

root@debian:/home/data/backup/incr/2017-03-07_16-04-41# 

root@debian:/home/data/backup/incr/2017-03-07_16-04-41# 

root@debian:/home/data/backup/incr/2017-03-07_16-04-41# cd ../2017-03-07_16-06-42/

root@debian:/home/data/backup/incr/2017-03-07_16-06-42# 

root@debian:/home/data/backup/incr/2017-03-07_16-06-42# cat xtrabackup_checkpoints 

backup_type = incremental

from_lsn = 31407817345

to_lsn = 31407833800

last_lsn = 31407833800

compact = 0





發現剛剛drop t2了,t2是個很重要的表,然後恢復,由於這個操作是在增量備份2之前操作的,因此需要恢復增量備份1。



先恢復full的日誌:


 innobackupex --defaults-file=/etc/mysql/my.cnf   --apply-log  --redo-only  /home/data/backup/full/2017-03-07_15-58-18/



將增量備份1應用到完全備份

innobackupex --defaults-file=/etc/mysql/my.cnf  --apply-log  /home/data/backup/full/2017-03-07_15-58-18/ --incremental-dir=/home/data/backup/incr/2017-03-07_16-04-41/




此時增量備份其實都合併到全備上了,恢復是只需要使用全備進行恢復就可以了 

模擬數據故障[關閉數據庫,刪除數據庫的數據目錄,執行如下命令還原] 


 innobackupex --defaults-file=/etc/mysql/my.cnf  --copy-back  /home/data/backup/full/2017-03-07_15-58-18/


 chown -R mysql:mysql /var/lib/mysql/ 



啓動數據庫,可以發現在增量備份2之後drop t2, create table t4 、t3 都沒有了,t2已經恢復。


mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| t              |

| t2             |

+----------------+

2 rows in set (0.00 sec)


mysql> 

mysql> 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章