MySQL-增量备份

测试增量备份

 
#生成新的备份日志文件,这样旧的日志文件就不会输入新的日志,方便排查问题。(类似切割日志)
mysqladmin -uroot -p -S /usr/local/mysql/mysql.sock flush-logs;
 
#新建测试表
CREATE TABLE test(
     `id` int NOT NULL AUTO_INCREMENT,
     `name` varchar(255) NULL,
     PRIMARY KEY (`id`)
);
#插入测试数据
insert into test (id, name) values(1, 'test1');
insert into test (id, name) values(2, 'test2');
insert into test (id, name) values(3, 'test3');
insert into test (id, name) values(4, 'test4');
 
#误删id=3和id=4这两条数据
delete from test where id > 3;
 
#继续插入id=5和id=6条数据
insert into test (id, name) values(5, 'test5');
insert into test (id, name) values(6, 'test6');
 
#备份文件在/usr/local/mysql目录下,假如生成的最新日志文件为mysql-bin.000002,我们通过旧的日志文件mysql-bin.000001来还原数据。
 
#生成新的备份日志文件,这样旧的日志文件就不会输入新的日志,方便排查问题。(类似切割日志)
mysqladmin -uroot -p -S /usr/local/mysql/mysql.sock flush-logs;
 
#切换到mysql目录
cd /usr/local/mysql/
#解码目录下的日志文件(mysql-bin.000001),可以看到生成的日志文件内容
mysqlbinlog  --no-defaults --base64-output=decode-rows -v mysql-bin.000001> /usr/local/bk01.txt
 
#查看bk01.txt,找到错误发生前后位置时间点
#错误开始时间点:BEGIN后紧跟的at就是
#错误结束时间:COMMIT后紧跟的at就是
 
#开始断点恢复
mysql> drop table test;
mysql> source /usr/local/001.sql
#恢复到错误前(位置/时间点)
mysqlbinlog --no-defaults --stop-position='571' /usr/local/mysql/mysql-bin.000001 | mysql -uroot -pabc123
#mysqlbinlog --no-defaults --stop-datetime='2020-08-24 23:22:43' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123
 
#跳过错误时间点
mysqlbinlog --no-defaults --start-position='710' /usr/local/mysql/mysql-bin.000001 | mysql -uroot -pabc123
# mysqlbinlog --no-defaults --start-datetime='2020-08-24 23:24:10' /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pabc123