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