首页 > 数据库 > MySQL > 7.5 使用binary log 做基于时间点的恢复
7.5 Point-in-time Recovery Using the Binary Log
时间点的恢复基于以下规则:
数据库必须开启binary logging
log-bin需要再my.cnf文件中设置
可以使用mysqlbinlog工具将events 转换为text格式以便于查看。
mysqlbinlog --no-defaults mysql-bin.000004 | more
可以使用mysqlbinlog工具去回放binary log 中的events.
mysqlbinlog --no-defaults mysql-bin.000004 | mysql -u root -p
可以使用通过mysqlbinlog 工具去查找event time 和positions
mysqlbinlog --no-defaults mysql-bin.000004 > tmpfile
vi tmpfile
可以使用用vi编辑后的文件进行events的回放
mysql -uroot -p < tmpfile
当你的环境中使用的通过GTIDs进行主从复制时,可以使用--skip-gtids 将文件转换到文件中,比如:
mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql
mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
mysql -uroot -p -e "source /tmp/dump.sql"
7.5.1 通过Event Times 进行时间点的恢复
通过指定start 和 end 时间点进行恢复, 在使用mysqlbinlog时指定--start-datetime 和--stop-datetime。比如在10:00 a.m.on April 20,2005这个时间点删除了一张大表。为了恢复此表数据,可以使用下面的命令:
mysqlbinlog --stop-datetime="2005-04-20 9:59:59" bin.123456 | mysql -uroot -p
此命令会恢复--stop-datetime指定时间点的所有数据,如果想继续恢复10:00 a.m以后的数据可以使用下面的命令:
mysqlbinlog --start-datetime="2005-04-20 10:01:00" bin.123456 | mysql -uroot -p
7.5.2 通过 Events Positions 进行时间点的恢复
除了通过指定时间进行时间点的恢复,也可以通过指定--start-position和--stop-position来进行时间点的恢复。
a. 恢复到368312 位点
mysqlbinlog --stop-position=368312 bin.123456 | mysql -uroot -p
b. 从368315位点开始恢复
mysqlbinlog --start-position=368315 bin.123456 | mysql -uroot -p
可以阅读下面链接内容进行mysqlbinlog 工具的学习:
https://www.cnblogs.com/Presley-lpc/p/9619571.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2728039/ ,如需转载,请注明出处,否则将追究法律责任。