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(数据库)
  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/dlcode/p/14243526.html
Copyright © 2011-2022 走看看