利用binlog恢复mysql数据库数据

前提:mysql数据库开启了binlog日志 

    通过  show variables like 'log_%'; 查看是否开启binlog日志。

    

操作步骤:

    在数据库中执行

    show master status;

    查看当前数据库对应的binlog文件

    

    再执行

    show binlog events in 'binlog.000010';

    查看binlog日志记录,查找到相应的Pos节点

   执行 /usr/local/mysql/bin/mysqlbinlog --start-position=7171 --stop-position=7546 --database=mydatabase --skip-gtids /var/lib/mysql/binlog.000010 | mysql -uroot -p数据库密码 mydatabase

指定结束点之前的数据恢复   只有--stop-position=7546 无--start-position=7171

指定区间恢复 --start-position=7171 --stop-position=7546

指定时间区间恢复 --start-datatime="2018-11-01 11:11:11"  --stop-datatime="2018-11-11 11:11:11"

PS:通过binlog恢复的根本原理就是按照指定区间的sql操作重新执行一遍,因此其间有创建表的语句的话,可能回合当前数据库表冲突,需要略过

另外: 

刷新binlog日志,产生新的binlog日志文件    flush logs; 每次mysqld服务重启时,会自动执行此命令,刷新binlog日志。

猜你喜欢

转载自blog.csdn.net/baidu_22234049/article/details/84138795