使用限制
- 只能回滚DML, 不能回滚DDL
- 使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响
- MySQL8.0版本需要在配置文件中加入default_authentication_plugin =mysql_native_password,用户密码认证必须是mysql_native_password才能解析
- 此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限
- 支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
下载
wget https://github.com/liuhr/my2sql/blob/master/releases/centOS_release_7.x/my2sql
chmod +x my2sql && mv my2sql /usr/local/bin/
更改数据
UPDATE `test`.`t1` SET `b` = 'aa' WHERE `id` = 2
确定flashback位置
mysql> show master status ;
+---------------+-----------+--------------+------------------+----------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+-----------+--------------+------------------+----------------------------------------------+
| binlog.000014 | 569558719 | | | aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-35800 |
+---------------+-----------+--------------+------------------+----------------------------------------------+
找出误操作的语句与开发确认
my2sql -user test -password=Zzj@123456 -mode repl -work-type rollback -start-file binlog.000014 -start-datetime "2024-09-14 10:00:00" -stop-datetime "2024-09-14 10:10:00" -output-dir ./
回滚误操作
$ ll
total 124M
-rw-r--r-- 1 root root 107 Sep 14 10:09 biglong_trx.txt
-rw-r--r-- 1 root root 288 Sep 14 10:10 binlog_status.txt
-rw-r--r-- 1 root root 315 Sep 14 10:10 rollback.14.sql
$ cat rollback.14.sql
UPDATE `test`.`t1` SET `b`='b' WHERE `id`=2;
标签:10,闪回,binlog,--,root,datetime,my2sql,数据 From: https://www.cnblogs.com/zuozhengjun/p/18470416数据闪回并不是万能的,备份恢复是最后底线。