操作流程
1 查看数据库是否开启binlog模式与binlog日志存放位置
1.1 进入数据库运行以下命令查看数据库是否开启binlog模式
# log_bin是ON,就说明打开了 OFF就是关闭状态,以下操作,只有为 ON 时有效。
show variables like 'log_bin';
ROW:行模式,因为它提供了更好的数据一致性。
STATEMENT:表示使用语句模式,这种模式可能会丢失一些数据,因为它仅记录执行的sql语句
MIXED:表示混合模式,在这种模式下,mysql会根据需要自动切换模式和语句模式
1.2 查看binlog日志位置,一般在mysql的data文件夹下
查看所有binlog文件名
show master logs;
查看当前正在使用的binlog文件
show master status;
查看binlog文件保存的目录位置
show VARIABLES LIKE 'log_bin_basename';
show variables like '%datadir%';
2 确定误操作时间、目标库表以及执行语句
库:orgdb 表:t_enterpribase
执行语句:delete from t_enterpribase;
3 选取对应的文件,获取对应的binlog片段
mysqlbinlog --no-defaults --start-datetime='2025-02-10 21:00:00' --stop-datetime='2025-02-11 02:00:00' --base64-output=decode-rows -d databasename -vv binlog.000183 > /myhome/binlog_000183.sql
4 找到对应语句以及pos区间
操作的开始pos
操作结束的pos
5 导出改动区间的sql
mysqlbinlog --no-defaults --start-position=107070608 --stop-position=107646361 --base64-output=decode-rows -vv binlog.000183 > /myhome/binlog_000183_pos