美文网首页
Mysql - 使用binLog恢复数据简单实例

Mysql - 使用binLog恢复数据简单实例

作者: 一点温柔 | 来源:发表于2021-07-15 16:47 被阅读0次

    前言

    通过这边文章你能收获:

    没有接触过mysql使用binLog恢复数据的朋友们可以对如何使用binLog恢复数据
    有个入门级的认识

    一、实际case

    目前存在entity_storage_0库以及库中的表entity_detail,
    1、张三执行插入指令插入了一条数据
    2、李四以为是测试库,把entity_detail表中的数据清空了
    3、现在需要恢复张三插入的数据,如何恢复?

    二、确定思路

    step1、确定要恢复的数据范围
    step2、确定恢复数据的binLog文件名
    step3、找出binLog中对应数据的记录信息
    step4、执行恢复指令

    三、相关指令

    show MASTER status;
    
    flush log
    
    show BINLOG EVENTS in '你的binLog文件名';
    
    ./mysqlbinlog --start-position 起始position  --stop-position 结束position -d 数据库名称 /var/lib/mysql/目标binLog文件 | mysql -u数据用户名-p数据库密码 目标数据库名称
    

    四、开始应用

    套用基本思路中的模型(通常我们会在回复数据前在客户端使用flush log指令刷一下日志文件)

    1、确认需恢复的数据范围

    张三插入的那条记录

    2、确定恢复数据的binLog文件名

    在mysql客户端使用show master status指令,查看当前的binLog文件名(由于是测试使用,且没有flush log,所以当前的file就是我们的目标binLog文件,如果是mysql宕机或者其他场景,那么需要根据实际情况确认文件)

    image.png
    3、找出binLog中对应数据的记录信息

    在mysql客户端使用show BINLOG EVENTS in 'binlog.000006';指令,分析出需要执行的end_log_pos

    image.png
    4、执行恢复指令

    在mysql的bin目录下,执行指令./mysqlbinlog --start-position 330 --stop-position 606 -d entity_storage_0 /var/lib/mysql/binlog.000006 | mysql -uroot -p111111 entity_storage_0

    image.png

    然后去数据库查看数据,可以发现数据正常恢复.

    image.png

    至此,入门小实例done!

    参考资料

    mysql官网 - https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery-binlog.html

    相关文章

      网友评论

          本文标题:Mysql - 使用binLog恢复数据简单实例

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