ITPub博客

首页 > 数据库 > MySQL > 7.5 使用binary log 做基于时间点的恢复

7.5 使用binary log 做基于时间点的恢复

翻译 MySQL 作者:kakaxi9521 时间:2020-10-21 10:37:39 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据库范式
请登录后发表评论 登录
全部评论

注册时间:2009-04-13

  • 博文量
    136
  • 访问量
    179046