查看mysql是否开启binlog
show variables like '%log_bin%';
查询文件目录
show variables like '%datadir%';
查看所有binlog日志文件列表
show master logs;
刷新日志,开启一个新的编号
flush logs
清空所有binlog日志命令
reset master
查看binlog文件内容,使用查看工具
方法一:
mysqlbinlog --no-defaults -vv --base64-output=decode-rows binlog.000001
方法二:
show binlog events in 'binlog.000001'
恢复
# 恢复整个binlog中的数据
mysqlbinlog --no-defaults binlog.000001|mysql -u root -p test
# 恢复指定位置数据
mysqlbinlog --no-defaults --start-position=612 --stop-position=759 binlog.000001|mysql -u root -p test
# 恢复指定时间段数据
mysqlbinlog --no-defaults --start-datetime="2022-07-05 11:32:42" --stop-datetime="2022-07-05 11:32:53" binlog.000001|mysql -u root -p test
--start-position=50
指定了pos的点从50开始
-stop-position=100
指定了pos的点从100结束
--start-date="2019-03-02 11:55:00"
指定了从这个时间开始
--stop-date="2018-03-02 12:00:00"
指定了从这个时间结束
--no-defaults
可以避免 my.cnf 里配了 [client] 某些 mysqlbinlog 没有的参数导致 mysqlbinlog 失败
-vv
从行格式中重建伪SQL(带注释)
--base64-output=decode-rows
指定为decode-rows表示不显示binglog二进制部分
--database=test
指定数据库
--skip-gtids
不保留 GTID 事件信息,这样回放 binlog 时会跟执行新事物一样,生成新的 GTID