my10 使用binlog2sql閃回DML操作

2022-06-17 04:42:09 字數 4048 閱讀 7404

原理使用python連線到指定的庫,讀取要恢復表的表結構和對應的binlog日誌,在binlog 為row格式並且dml記錄所有字段值的情況下,將set 與where後字段值對換位置,拼接成的sql就是回滾sql。

安裝unzip binlog2sql-master.zip

cd binlog2sql-master/

pip install -r requirements.txt

誤操作mysql -uautomng -p'automng_123' -p3319

update sbtest7 set pad='wa ka ka ' where id=3;

update sbtest8 set pad='wa ka ka ' where id=3;

mysql> show master status\g;

*************************** 1. row ***************************

file: mysql-bin.000035

# python binlog2sql.py -h127.0.0.1 -p3319 -uautomng -p'

automng_123

' -dtxdb -t sbtest7 sbtest8 --start-file='

mysql-bin.000035

' --start-datetime='

2018-08-01 15:50:00

' --stop-datetime='

2018-08-01 16:01:00

'update `txdb`.`sbtest7` set `c`='

39314051591-30329702885-35198042800-16393519874-56867884250-41805987558-63125675500-93376317385-90603675036-63992232134

', `k`=149507, `pad`='

wa ka ka

', `id`=3 where `c`='

39314051591-30329702885-35198042800-16393519874-56867884250-41805987558-63125675500-93376317385-90603675036-63992232134

' and `k`=149507 and `pad`='

90728107484-01984250703-04244069858-02683578329-82506775849

' and `id`=3 limit 1; #start 4 end 758

time

2018-08-01

16:00:12

update `txdb`.`sbtest8` set `c`='

22165230283-89382372870-64352117725-29359509089-24558560067-39564369546-34463527363-05997343623-26127428609-19766153460

', `k`=202756, `pad`='

wa ka ka

', `id`=3 where `c`='

22165230283-89382372870-64352117725-29359509089-24558560067-39564369546-34463527363-05997343623-26127428609-19766153460

' and `k`=202756 and `pad`='

54879921302-82844293345-80647833951-55849410697-97809519145

' and `id`=3 limit 1; #start 785 end 1393

time

2018-08-01

16:00:21

#start

4 end 758

time

2018-08-01

16:00:12

#start

785 end 1393

time

2018-08-01

16:00:21

# python binlog2sql.py --flashback -h127.0.0.1 -p3319 -uautomng -p'

automng_123

' -dtxdb -t sbtest7 sbtest8 --start-file='

mysql-bin.000035

' --start-position=4 --stop-position=1393

update `txdb`.`sbtest8` set `c`='

22165230283-89382372870-64352117725-29359509089-24558560067-39564369546-34463527363-05997343623-26127428609-19766153460

', `k`=202756, `pad`='

54879921302-82844293345-80647833951-55849410697-97809519145

', `id`=3 where `c`='

22165230283-89382372870-64352117725-29359509089-24558560067-39564369546-34463527363-05997343623-26127428609-19766153460

' and `k`=202756 and `pad`='

wa ka ka

' and `id`=3 limit 1; #start 785 end 1393

time

2018-08-01

16:00:21

update `txdb`.`sbtest7` set `c`='

39314051591-30329702885-35198042800-16393519874-56867884250-41805987558-63125675500-93376317385-90603675036-63992232134

', `k`=149507, `pad`='

90728107484-01984250703-04244069858-02683578329-82506775849

', `id`=3 where `c`='

39314051591-30329702885-35198042800-16393519874-56867884250-41805987558-63125675500-93376317385-90603675036-63992232134

' and `k`=149507 and `pad`='

wa ka ka

' and `id`=3 limit 1; #start 4 end 758

time

2018-08-01

16:00:12

回滾python binlog2sql.py --flashback -h127.0.0.1 -p3319 -uautomng -p'automng_123' -dtxdb -t sbtest7 sbtest8 --start-file='mysql-bin.000035' --start-position=4 --stop-position=1393 > /tmp/rollback.sql | cat

事務號一定要看清楚並寫對了,如果……如果不小心寫錯了一位數,你可以想象一下後果……

mysql -uautomng -p'automng_123' -p3319 txdb < /tmp/rollback.sql

在嘗試通過遠端的方式操作時,失敗了,不知是不支援遠端還是**遇到了問題,正在排查中……如果不能通過遠端的方式操作,那麼就需要提前在伺服器上安裝這個指令碼。

其他mysqlbinlog --no-defaults -v -v --base64-output=decode-rows --start-datetime="2021-04-09 10:55:08" --stop-datetime="2021-04-09 11:05:08" /data/mysql_33061/log_bin/bin.000002  > /tmp/bin.sql

mysql使用規範 MySQL使用規範 MySQL

bitscn.com mysql使用規範 一 核心規範 1.不用資料庫做運營,如md5 order by rand 2.控制單錶資料量 a 單錶純int不超過1000w b 單錶含char不超過500w c 單庫不超過300 400個表 3.表字段數少而精 a 影響因素 i.io高效 ii.全表遍歷...

使用binlog快取非同步化

在高併發的系統中關於快取的重要性不言而喻,快取在專案當中大量使用,扛住了大部分的查詢流量,但也有很多點需要注意,最為典型的例子就是資料一致性問題,快取擊穿問題,快取高可用問題等等。這次需要解決的問題是乙個秒殺場景的高併發問題。快取一致性就是說db的資料與快取的資料保持一致,理論上同一瞬間去變更兩個值...

mysql linux下使用yum安裝mysql

linux下使用yum安裝mysql 1 安裝 檢視有沒有安裝過 yum list installed mysql rpm qa grep mysql 檢視有沒有安裝包 yum list mysql 安裝mysql客戶端 yum install mysql 安裝mysql 伺服器端 yum inst...