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(数据库)
  • 相关阅读:
    hdu1257
    P6198 [EER1]单调栈 题解(分治+构造)
    P3193 [HNOI2008]GT考试 题解(kmp+矩阵快速幂)
    Product of GCDs 题解(欧拉降幂+贡献)
    P2501 [HAOI2006]数字序列 题解(dp+构造)
    欧拉降幂
    I love max and multiply 题解(二进制dp)
    永不言弃 题解(线段树维护hash+二分)
    Problem D. Ice Cream Tower 题解(二分+贪心)
    E. Kefa and Watch 题解(线段树维护hash+循环节结论)
  • 原文地址:https://www.cnblogs.com/dlcode/p/14243526.html
Copyright © 2011-2022 走看看