使用mysqldump 进行增量恢复
模拟,生产环境恢复数据
1.full back (3 rows) 3pm 前一天的全备份
2,insert 3 rows 5pm 第二天新增数据
3,delete from table 7pm 误操作
4,insert 3 rows 8pm 不断新增数据
5,recovery databases 9pm 恢复数据
1,全备份
/mysqldump -uroot -p db1 > /root/mysqlbackup/t2.sql
2,模拟生成新的二进制日志
/etc/init.d/mysqld restart mysqladmin -uroot -p123456 --flush-log
3,新增数据
insert into t2 values (4,40),(5,50),(6,60);
4,误操作
delete from t2;
5,不断更新数据
insert into t2 values (7,70),(8,80),(9,90);
6,开始恢复
cp data/mysql-bin.0000002 /back 备份现有二进制日志,防止二次损坏
mysql -uroot -p db1 < /root/mysqlbackup/t2.sql 全部恢复
7,下面跳过delete 这条记录,或者删除delete这条语句,恢复其他position的记录
# at 526
#150512 7:50:58 server id 1 end_log_pos 640 CRC32 0x4f6549a3 Querythread_id=1exec_time=0error_code=0
SET TIMESTAMP=1431388258/*!*/;
insert into t2 values (4,40),(5,50),(6,60)
/*!*/;
# at 640
#150512 7:50:58 server id 1 end_log_pos 671 CRC32 0x253a2239 Xid = 60
COMMIT/*!*/;
# at 671
#150512 7:52:11 server id 1 end_log_pos 748 CRC32 0x7617cce8 Querythread_id=1exec_time=0error_code=0
SET TIMESTAMP=1431388331/*!*/;
BEGIN
/*!*/;
# at 748
#150512 7:52:11 server id 1 end_log_pos 834 CRC32 0x112802bc Querythread_id=1exec_time=0error_code=0
SET TIMESTAMP=1431388331/*!*/;
delete from t2
/*!*/;
# at 834
#150512 7:52:11 server id 1 end_log_pos 865 CRC32 0x8895c353 Xid = 62
COMMIT/*!*/;
# at 865
#150512 7:52:38 server id 1 end_log_pos 942 CRC32 0xa34076dd Querythread_id=1exec_time=0error_code=0
SET TIMESTAMP=1431388358/*!*/;
BEGIN
/*!*/;
# at 942
#150512 7:52:38 server id 1 end_log_pos 1056 CRC32 0xa1c9c171 Querythread_id=1exec_time=0error_code=0
SET TIMESTAMP=1431388358/*!*/;
insert into t2 values (7,70),(8,80),(9,90)
/*!*/;
# at 1056
#150512 7:52:38 server id 1 end_log_pos 1087 CRC32 0x73a98385 Xid = 64
COMMIT/*!*/;
8,开始恢复:
bin/mysqlbinlog --start-position=526 --stop-position=640 data/mysql-bin.000004 | mysql -uroot -p bin/mysqlbinlog --start-position=942 --stop-position=1056 data/mysql-bin.000004 | mysql -uroot -p
或者使用第二种恢复方法(删除binlog中的delete)
/bin/mysqlbinlog data/mysql-bin.00002 >bin.sql mysql -uroot -p <bin.sql
9, 恢复完成后建议在此刷新bin log。
10,查询恢复的数据