• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql5.7使用binlog 恢复数据的方法

    第一步:保证mysql已经开启binlog

    show variables like '%log_bin%';
    log_bin 为 on是开启。
    

    第二步:进入binlog文件目录,找到二进制日志文件


    mysql> show binary logs; #获取binlog文件列表
    mysql> show master status; #查看当前正在写入的binlog文件
    mysql> reset master; 重置binlog

    第三步: 通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)或者直接指定binlog

    例子1:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,输入如下命令将数据写入到一个备用的txt文件中

    /usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

    例子2:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,并且过滤出 只包括 g_user表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中

    /usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt

    例子3:查询2021-3-15 15:25:00到2021-3-15 15:35:00 数据库为 g_shoptest 的操作日志,并输出到屏幕上
    /usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime=“2021-3-15 15:25:00” --stop-datetime=“2021-3-15 15:35:00” /data/mysql/mysql-bin.000001 |more


    图片和例1、例2内容一样 看到了truncate操作 和记录点 就可以做恢复操作了!

    第四步:测试利用bin_log恢复数据

    登录mysql
    测试

    1、 reset master; 重置binlog并重新生成记录日志

    2、 测试某个表 插入一条数据 然后不小心删除了。

    3、 查看bin-log 命令:show binlog events in ‘mysql-bin.000001';

    如上图
    我们看到删除点在928到 1294 ;之前的新增的数据 在154到520


    /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest

    执行完毕之后 去看看删除那条数据吧 又回来了

    binlog命令

    1.最长用的就是回复指定数据端的数据了,可以直接恢复到数据库中:

    mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456 

    2.指定开始\结束位置,从上面的查看产生的binary log我们可以知道某个log的开始到结束的位置,我们可以在恢复的过程中指定回复从A位置到B位置的log.需要用下面两个参数来指定:

    /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 7903538 --stop-position 7904498|mysql -uroot -p123456

    **常见错误 ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log', data_len: 31, event_type: 35

    *问题为mysqlbinlog版本所导致

    查看当前os使用的mysqlbinlog

    shell> which mysqlbinlog
    /usr/bin/mysqlbinlog
    

    查看mysql当前使用的mysqlbinlog

    ±--------------±------------------+
    | Variable_name | Value |
    ±--------------±------------------+
    | basedir | /usr/local/mysql/ |
    ±--------------±------------------+
    

    mysql> show variables like ‘basedir';

    对比两个版本

    shell> /usr/bin/mysqlbinlog --version
    shell> /usr/local/mysql/bin/mysqlbinlog --version
    

    解决此问题指定mysqlbinlog路径即可

    /usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

    到此这篇关于mysql5.7使用binlog 恢复数据的方法的文章就介绍到这了,更多相关mysql binlog 恢复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL数据库恢复(使用mysqlbinlog命令)
    • MySQL中的binlog相关命令和恢复技巧
    • Mysql的Binlog数据恢复:不小心删除数据库详解
    • mysql如何利用binlog进行数据恢复详解
    • 教你自动恢复MySQL数据库的日志文件(binlog)
    • Linux上通过binlog文件恢复mysql数据库详细步骤
    • 解说mysql之binlog日志以及利用binlog日志恢复数据的方法
    • MySQL使用mysqldump+binlog完整恢复被删除的数据库原理解析
    • MySQL使用binlog日志做数据恢复的实现
    • 如何利用MySQL的binlog恢复误删数据库详解
    上一篇:MySQL8.0无法启动3534的解决方法
    下一篇:MySQL删除和插入数据很慢的问题解决
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql5.7使用binlog 恢复数据的方法 mysql5.7,使用,binlog,恢复,