my2sql 工具 恢复数据

下载

该工具是 go版 MySQL binlog解析工具,通过解析 MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息

git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .

注意

binlog格式必须为row, 且 binlog_row_image=full, DML统计以及大事务分析不受影响

模拟删除数据

mysql> create table tmp1108 (a int);
Query OK, 0 rows affected (0.03 sec)


mysql>
mysql>
mysql>
mysql> insert into tmp1108  values (1);
t into tmp1108  values (2);Query OK, 1 row affected (0.02 sec)


mysql> insert into tmp1108  values (2);
Query OK, 1 row affected (0.01 sec)


mysql>
mysql>
mysql>
mysql> select * from tmp1108;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)


mysql>
mysql>
mysql>
mysql>
mysql> flush logs;   ---为了方便演示,重新生成一个binlog 
Query OK, 0 rows affected (0.02 sec)


mysql>
mysql>
mysql>
mysql> delete from tmp1108;
Query OK, 2 rows affected (0.01 sec)


mysql>
mysql>
mysql>
mysql>
mysql> select * from tmp1108;
Empty set (0.00 sec)

查看 当前 binlog 文件

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000006 |      440 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

回滚恢复

进入该目录下(测试环境为 Ubuntu20.04)

cd /my2sql/releases/centOS_release_7.x

解析 binlog 文件

/my2sql -user root -password 123456 -port 3306 -host 127.0.0.1 -databases test -tables tmp1108 -mode repl -work-type 2sql  -start-file /var/lib/mysql/binlog.000006 -output-dir /tmp/

my2sql 工具 恢复数据_第1张图片

生成的 信息文件 放入到 /tmp 目录下

my2sql 工具 恢复数据_第2张图片

发现出现 biglong_trx.txtbinlog_status.txtforward.6.sql

文件binlog_status.txt和biglong_trx.txt是事务的统计信息

文件forward.2.sql是binlog解析之后的sql

记录误操作位点

cat binlog_status.txt 

发现 pos位置311409 之间出现 delete 操作

查看 日志 再次确认位点

mysqlbinlog /var/lib/mysql/binlog.000006

my2sql 工具 恢复数据_第3张图片

发现 事务 在 311409 发生了 delete 数据的操作,与 信息文件 中的 位置点 可以对上

生成 闪回sql 文件

./my2sql -user root -password 123456 -port 3306 -host 127.0.0.1 -databases test -tables tmp1108 -mode repl -work-type rollback  -start-file /var/lib/mysql/binlog.000006 -start-pos 311 -stop-pos 409  -output-dir /tmp/

生成 闪回sql文件 -work-type 需要换成 rollback 回滚,生成 删除操作的 回滚语句

在目标 /tmp 目录下 生成  rollback.6.sql 文件

my2sql 工具 恢复数据_第4张图片

查看文件

 cat /tmp/rollback.6.sql

确实生成了 回滚语句

恢复

mysql -uroot -p123456 -h127.0.0.1 test < /tmp/rollback.6.sql

验证

my2sql 工具 恢复数据_第5张图片

你可能感兴趣的:(mysql,数据库,adb)