mysql binlog 回滚_MySQL通过binlog日志回滚数据

优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。

缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)

2、基于行的复制(row-based replication, RBR):不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。

优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。

缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。

3、混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

这里我这都我的数据库日志使用ROW格式。

fbf8007cb56969b85bd13b6b9ea89ad3.png

登录数据查看数据库的数据信息:

94df5467d77960ead957bc9be30aa309.png

核实相关的binlog日志的报错路径以及日志是否开启。show variables like "log_bin%";

44d1a20cfc86146635b6c9e3779c231a.png

核实最新的binlog日志信息:show master logs; show binary logs; show master status;

cf737c4c1b5a984a441da82b4503991c.png

二、下面进行相关的数据恢复实践:

创建测试数据库:

b3b3e1fd1f55b643b60b7ad4f34d534f.png

创建数据表:相关的数据是下载网络资源的数据。

25a381fbb58893add7f33805e2cafd09.png

将数据删除:

52bf5cfd06f5b729a9398d514ed9016e.png

三、通过binlog日志核实删除以及创建数据的时间点或者pos点。

我这里演示通过pos点进行数据恢复。

通过mysqlbinlog 命令核实最近的binlog日志名称进行日志查看。核实具体的时间节点。

1ba450ecf1d1f25705c541ec1a0acca2.png

19238afff5663c828b511fcffa349527.png

确认时间点后,进行数据回滚,相关命令还是通过mysqlbinlog进行数据回滚操作。

mysqlbinlog --no-defaults --start-position="239" --stop-position="736" /var/lib/mysql/ON.000015 | mysql -uroot -p

参数说明,--start-position #开始的pos时间点。

--stop-position #结束的pos时间

如果是通过日期时间回滚的命令如下:

mysqlbinlog --start-datetime ‘2019-07-02 21:42:36‘ --stop-datetime ‘2019-07-02 21:57:42‘ /var/lib/mysql/ON.000013 | mysql -uroot -p

执行回滚后会出现如下的信息,回车确认,我这里数据比较少,回滚时间较快。

2344b68091e89b270852e20d1fea44d2.png

再次核实相关的数据信息。

4b9175413f7d37ea602386237ed4b501.png

注:mysqlbinlog相关的命令参数可以通过mysqlbinlog --help 核实查看。

原文:https://blog.51cto.com/zhanx/2416449

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值