模拟无备份操作:
dbadmin@test 11:57:10>select * from t;
+-------+
| id |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
模拟误操作:
dbadmin@test 11:57:17>truncate table t; Query OK, 0 rows affected (0.01 sec)
模拟恢复操作:
step 1:找到误操作的log position
dbadmin@test 11:58:06>show master logs;
dbadmin@test 11:58:18>show binlog events in 'mysql-bin.000001';
1333
step 2:恢复全量
检测并应用日志:
mysqlbackup --backup-dir=/data/backup/2017-04-29_11-53-20 apply-log
step 3:应用增量
mysqlbackup --backup-dir=/data/backup/2017-04-29_11-53-20 --incremental-backup-dir=/data/backup/incremental/2017-04-29_11-55-54 apply-incremental-backup
step 4:物理文件复制还原
mysqlbackup --backup-dir=/data/backup/2017-04-29_11-53-20 copy-back
数据恢复到备份的时候:
dbadmin@test 12:09:49>select * from t;
+-------+
| id |
+-------+
| 1 |
| 2 |
+-------+
2 rows in set (0.00 sec)
恢复完成之后,data目录下会生成backup_variables.txt的文件(其实在备份的时候就已经有这些文件的),找到备份的时候的log position,然后从binlog恢复无备份的数据。
binlog_position=mysql-bin.000001:1076 mysqlbinlog mysql-bin.000001 --start-position=1076 --stop-position=1333 -vv >increment.sql
dbadmin@test 12:14:07>source /u01/my3307/log/increment.sql dbadmin@test 12:14:16>select * from t;
+-------+
| id |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
至此数据恢复。
大致梳理一下操作步骤,来了解一下恢复的原理:
首先检测并应用全备事务日志文件(这里是因为我备份的时候用的是backup而不是backup-and-apply-log),然后基于全备去应用增量的log。这个时候如果有多次增量备份也可以(基于LSN点向后应用)。 所有的都应用完成之后就是一个可以直接cp的了。
个人感觉这个工具比xtrabackup好用,但是xtrabackup是开源的,所以市场占有量才会大,才会更有名,更用吧。
三、mysqlhotcopy
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-51609-5.html
加速了中国造假业的发展
这个新闻