美文网首页工具
mysql基于binlog日志恢复数据库

mysql基于binlog日志恢复数据库

作者: 寂寞的棍棍 | 来源:发表于2019-09-25 15:21 被阅读0次

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

    一、我们将最新的mysqldump文件恢复到新的数据量实例上,至于命令,我前面的文章有详细的解读。

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

    mysql binlog日志截图

    三、假如需要将某一个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
    
    show binlog events in 'mysql-bin.000001' 执行之后的效果

    五、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的版本,你会发现很多意想不到的事情等着你。)

    相关文章

      网友评论

        本文标题:mysql基于binlog日志恢复数据库

        本文链接:https://www.haomeiwen.com/subject/ketsyctx.html