reverse_sql工具的使用

首先需要确认二进制日志设置是ROW格式或row_image是full。
因为程序运行时会检测binlog_format != 'ROW' and binlog_row_image != 'FULL',如果成立则直接退出。

然后下载:

https://github.com/hcymysql/reverse_sql

在服务器上解压后,授权:

chmod 755 reverse_sql

选项说明:

options:
-h, --help show this help message and exit
-ot ONLY_TABLES [ONLY_TABLES ...], --only-tables ONLY_TABLES [ONLY_TABLES ...]
设置要恢复的表,多张表用,逗号分隔
-op ONLY_OPERATION, --only-operation ONLY_OPERATION
设置误操作时的命令(insert/update/delete)
-H MYSQL_HOST, --mysql-host MYSQL_HOST
MySQL主机名
-P MYSQL_PORT, --mysql-port MYSQL_PORT
MySQL端口号
-u MYSQL_USER, --mysql-user MYSQL_USER
MySQL用户名
-p MYSQL_PASSWD, --mysql-passwd MYSQL_PASSWD
MySQL密码
-d MYSQL_DATABASE, --mysql-database MYSQL_DATABASE
MySQL数据库名
-c MYSQL_CHARSET, --mysql-charset MYSQL_CHARSET
MySQL字符集,默认utf8
--binlog-file BINLOG_FILE
Binlog文件
--binlog-pos BINLOG_POS
Binlog位置,默认4
--start-time ST 起始时间
--end-time ET 结束时间
--max-workers MAX_WORKERS
线程数,默认10
--print 将解析后的SQL输出到终端
--replace 将update转换为replace操作

示例:

 ./reverse_sql -u 'wenjie.wang' -p 123 -H 10.10.4.154 -P 3306 -d scmprd -ot srm_pur_mat_require_main,srm_pur_mat_require_line --binlog-file /binlog/mysqlbin.000451 --start-time "2023-09-25 09:40:00" --end-time "2023-09-25 10:00:00"

工具运行后,会在当前目录下生成一个{db}_{table}_recover.sql文件,保存着原生SQL(原生SQL会加注释)和反向SQL。
但注意,如果字段值中包含换行符,则原生SQL后几行不会被注释,需要手动处理。

注:reverse_sql支持MySQL 5.7/8.0和MariaDB,适用于CentOS 7系统。

参考:

https://github.com/hcymysql

你可能感兴趣的:(reverse_sql工具的使用)