zoukankan      html  css  js  c++  java
  • MySQL:binlog恢复数据

    如果删库了,先别急着跑路。

    binlog是MySQL的二进制日志,会记录我们的操作。删除的数据可以通过binlog恢复,不过要先开启binlog功能,编辑my.cnf文件完成下面配置后重启。

    log-bin=/usr/local/mysql/data/binlog/mysql-bin
    # 自定义,保证唯一性
    server-id=111
    # binlog格式,有3种statement,row,mixed,使用row即可,不会丢失数据
    binlog-format=ROW
    # 表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
    sync-binlog=1

    重启后连接MySQL,查看开启情况:

    mysql> show variables like '%log_bin%'; 

    其他相关命令:

    mysql> flush logs; // 会多一个最新的bin-log日志
    mysql> show master status; // 查看最后一个bin-log日志的相关信息
    mysql> reset master; // 清空所有的bin-log日志

    如何恢复数据?先看一下binlog文件数据,是二进制文件,无法直接阅读,使用mysql提供的工具:

    mysql> /usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001

    不需要全懂,能找到关键信息就行,比如begin,commit,根据其对应的position就可以进行恢复

    恢复binlog中的全部数据:

    /usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 | mysql -uroot -p test(数据库)

    恢复指定位置数据:

    /usr/local/mysql/bin/mysqlbinlog --no-defaults --start-position="100" --stop-position="200"  /usr/local/mysql/data/binlog/mysql-bin.000001 | mysql -uroot -p test(数据库)

    恢复指定时间的数据:

    /usr/local/mysql/bin/mysqlbinlog --no-defaults /usr/local/mysql/data/binlog/mysql-bin.000001 --stop-date= "2021-01-06 17:50:00"  --start-date= "2021-01-06 17:51:00" | mysql -uroot -p test(数据库)
  • 相关阅读:
    C#学习
    1.计算机的硬件
    C++ bitset——高端压位卡常题必备STL
    Aragorn's Story
    Sql Server DTS使用
    Django的SQL注意事项(以及时间戳转换日期格式)
    HTML中复选框的使用方法
    Http常见状态码
    scrapy yield 回调函数不执行解决方案
    jsonp跨域请求
  • 原文地址:https://www.cnblogs.com/dlcode/p/14243526.html
Copyright © 2011-2022 走看看