binlog的三种模式
# 查看binlog有没有开启
SHOW VARIABLES LIKE 'log_bin%';
# 查看当前binlog的模式
SHOW VARIABLES LIKE 'binlog%';
在配置文件中添加一行:binlog_format="ROW",即可设置成row模式,其他模式同理
-- 查看当前是在哪个日志文件中
SHOW MASTER STATUS;
# 截断日志文件,重新定向到新的日志文件中
# 每次操作binlog恢复前,都需要执行下此命令,能够保证之前的日志文件不会再有新的日志在到这个文件中,影响恢复。
FLUSH LOGS;
# 查询出这些日志文件保存的路径
show variables like '%datadir%';
# get所有的操作记录
SHOW binlog EVENTS IN 'MysqL-bin.000001';
cd /var/lib/MysqL
# get这个binlog文件所有的操作记录, 有详细时间
MysqLbinlog --no-defaults MysqL-bin.000001
# get某个区间的操作记录
MysqLbinlog --no-defaults --start-position=120 --stop-position=220226 MysqL-bin.000001
# 在后面加管道符|MysqL -uroot -p,用这个区间的操作记录去恢复到数据库
MysqLbinlog --no-defaults --start-position=120 --stop-position=220226 MysqL-bin.000001 ||MysqL -uroot -p
MysqLbinlog --stop-datetime="2022-2-26 20:17:33" MysqL-bin.000001 |MysqL -uroot -p
MysqLbinlog --start-datetime="2022-2-25 20:17:00" --stop-datetime="2022-2-26 20:17:33" MysqL-bin.0000* |MysqL -uroot -p
注意事项
- 每次重启MysqL服务都会创建一个新的binlog文件
FLUSH LOGS;
也会创建一个新的binlog- 恢复之前建议
FLUSH LOGS;
生成一个新的binlog,把恢复操作都写到新的binlog中。 - 恢复的过程中可能遇到主键冲突,可能是有binlog记录了MysqL的一些自带数据的创建,应该找好恢复的开始位置,别把MysqL数据的创建记录也恢复了。
- 去找这些binlog,以自己数据库的创建position开始,一个个binlog去恢复,直到最近被删除前的位置。
- 建议以位置position或者整个binglog文件恢复。当然也可以
MysqL-bin.0000*
匹配所有binlog然后指定--start-datetime
和--stop-datetime
去恢复。 - position的选取,取
SHOW binlog EVENTS IN 'MysqL-bin.000001';
结果的End_log_pos
列的值。
清空binlog
先用navicat导出一份数据,
删除数据库,
然后清空binlog文件
cd /var/lib/MysqL
rm -f MysqL-bin.0000*
:> MysqL-bin.index
重启MysqL
systemctl restart MysqL
用navicat导入数据,
查看binlog日志
SHOW binlog EVENTS IN 'MysqL-bin.000001';
FLUSH LOGS;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。