binlog日志_MySQL基于binlog日志做恢复

6cdabc62eb6ccd655e9e20834e36f0a2.png

备注:公司新来了一个妹子,操作失误,执行了 rm -rf / ,完蛋,整个服务器全部GG,通过ext3grep等软件只能恢复到binlog日志。怎么办?数据库每天凌晨全量备份一次,前提是mysqldump执行的备份文件是在别的服务器上,否则只能将所有的binlog日志回放一遍,今天来介绍下如何通过binlog日志恢复mysql。

一、我们将最新的mysqldump文件恢复到新的数据库实例上。

二、找到今日凌晨到数据库删除时的binlog日志,通常情况下binlog日志是按照对应的时间节点进行的切割。

9d8980cea5c46638101f72647ac27972.png

三、假如需要将某一个binlog完全恢复,只需要执行以下命令:

mysqlbinlog mysql-bin.000010 | mysql -uroot -p

四、binlog文件处于凌晨备份的时间节点(这种情况下,复杂一些。)

方法1、根据起始和终止时间进行恢复

mysqlbinlog mysql-bin.000001 --start-datetime='2019-07-12 19:50:36' --stop-datetime='2019-07-13 19:23:40'  | mysql -uroot -p

方法2、根据起始节点和终止节点进行恢复

#查看binlog日志的节点位置情况
show binlog events in 'mysql-bin.000001'  G;

#根据binlog起始和结束节点做恢复
mysqlbinlog mysql-bin.000001 --start-position=100 --stop-position=200 | mysql -uroot -p

fba9a99b64403b2304957327ffe913a3.png

五、linux不是太熟悉的同学看这里(前面文章有介绍过)

#将mysqlbinlog 转为可读、可执行的sql文件
mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001 > text.log

六、后记

1、mysqldump备份mysql时切记需要全路径,否则备份得到的文件是空的。

2、reset master 命令不要随便执行,它会将你的mysqlbinlog全部删除。

3、mysql 5.6以上版本备份时会有个gtid,备份时最好关闭,否则恢复时会有个error,百度告诉你,你需要reset master,然后你的binlog全都丢失,切记切记。

#关闭gtid的mysqldump备份命令
/usr/bin/mysqldump --set-gtid-purged=off --opt -h$DB_HOST -u$DB_ROOT -p$DB_PASS $DB_PROJECT > /root/mysqlbak/project/${DB_PROJECT}_${data}.sql

4、记得实战演练(不要随便去升级mysql的版本,你会发现很多意想不到的事情等着你。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值