使用xtrbackup/mysqldump全量备份+binlog备份恢复到最近一个时间点

先用xtrabackup做全备:
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=123 /home/backup/xtrabackup/
全备完成之后新建sanguoyanyi表,并插入数据:
mysql> create table sanguoyanyi (
    -> id int,
    -> people varchar(13)
    -> );
Query OK, 0 rows affected (0.12 sec)
mysql> insert into sanguoyanyi values (1,'guojia');
Query OK, 1 row affected (0.01 sec)
关闭mysql:
service mysql stop
mv /data/mysql/data_test/* /data/mysql/data/
注:不能先mv再关闭mysql;这样的话,在进行xtrabackup做数据恢复的时候会报错如下:
Original data directory /data/mysql/data_test is not empty!
查看目录:
[root@host-192-168-1-21 data_test]# ls
ib_buffer_pool
原因:这个文件会在mysql关闭的时候生成,具体和innodb_buffer_pool_dump_at_shutdown=on参数有关
mysql> show variables like 'innodb_buffer_pool_dump_at_shutdown';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| innodb_buffer_pool_dump_at_shutdown | ON    |
+-------------------------------------+-------+
1 row in set (0.00 sec)
恢复全备数据:
innobackupex --apply-log --redo-only /home/backup/xtrabackup/2017-05-12_02-37-01/
innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /home/backup/xtrabackup/2017-05-12_02-37-01/
chown -R mysql:mysql /data/mysql/data_test/
service mysql start
查看数据,数据恢复到全备时候:
mysql> show tables;
+------------------+
| Tables_in_sbtest |
+------------------+
| Shuihuzhuan      |
| hongloumeng      |
| test             |
| xiyouji          |
+------------------+
4 rows in set (0.00 sec)
查看全备的时候最后的binlog的位置:
[root@host-192-168-1-21 2017-05-12_02-37-01]# cat xtrabackup_binlog_info 
mysql-bin.000019 154
重新启动mysql之后的binlog位置:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000020 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
利用binlog恢复到最近一个时间点:
mysqlbinlog mysql-bin.000019 mysql-bin.000020 --start-position=154 | mysql -uroot -p -S /usr/local/mysql5711/mysql.sock
查看数据:
mysql> show tables;
+------------------+
| Tables_in_sbtest |
+------------------+
| Shuihuzhuan      |
| hongloumeng      |
| sanguoyanyi      |
| test             |
| xiyouji          |
+------------------+
5 rows in set (0.00 sec)
mysql> select * from sanguoyanyi;
+------+--------+
| id   | people |
+------+--------+
|    1 | guojia |
+------+--------+
1 row in set (0.00 sec)
数据恢复到最新的时间点。
注:当多个二进制日志文件同时执行时,--start-position和--stop-position分别只应用于第一个列出的二进制日志文件和最后一个列出的二进制日志文件

猜你喜欢

转载自blog.csdn.net/wukong_666/article/details/71750613