官方github
https://github.com/liuhr/my2sql
1、安裝
本想用源碼安裝,但一直報錯,后來直接下載的二進制文件
wget https://raw.githubusercontent.com/liuhr/my2sql/master/releases/centOS_release_7.x/my2sql chmod +x my2sql ./my2sql
2、使用
語法和 binlog2sql 類似,不過有一些binlog2sql上的bug,在這個軟件中沒有。
比如timestamp(3)問題:
https://github.com/danfengcao/binlog2sql/issues/90
分析在線binlog,正向解析SQL
./my2sql -user root -password c123456 -host 127.0.0.1 -port 3357 -mode repl -work-type 2sql -start-file mysql-bin.000038 -start-datetime "2020-07-16 10:20:00" -output-dir ./tmpdir
分析在線binlog,生成回滾SQL
./my2sql -user root -password c123456 -host 127.0.0.1 -port 3357 -mode repl -work-type rollback -start-file mysql-bin.000038 -start-datetime "2020-07-16 10:20:00" -output-dir ./tmpdir
正向解析的SQL
root@ip-172-31-30-45:~/czg/tmpdir# cat forward.38.sql UPDATE `ceshi`.`t1` SET `sj`='2022-01-17 10:18:18.188' WHERE (`c1`='a' AND `c2`='b' AND `sj`='2022-01-17 09:41:22.451'); #解析的逆向SQL root@ip-172-31-30-45:~/czg/tmpdir# cat rollback.38.sql UPDATE `ceshi`.`t1` SET `sj`='2022-01-17 09:41:22.451' WHERE (`c1`='a' AND `c2`='b' AND `sj`='2022-01-17 10:18:18.188');
分析已經離線binlog,生成回滾SQL
./my2sql -user root -password c123456 -host 127.0.0.1 -port 3357 -mode file -work-type 2sql -local-binlog-file /usr/local/mysql57/data/mysql-bin.000038 -start-file /usr/local/mysql57/data/mysql-bin.000038 -start-datetime "2020-07-16 10:20:00" -output-dir ./tmpdir
解析時由於binlog內部的開始時間與結束時間采的是操作系統時區,
而binlog內容的timestamp類型存儲的是UTC時間戳,在解析binlog時間范圍,及binlog內容解析出來后,總會有與北京時間差8小的時問題,
用 -tl 參數可以解決這個問題,查詢binlog的時間及生成的SQL都會是北京時間。
./my2sql -user root -password 123456 -host 127.0.0.1 -port 3306 -mode repl -work-type rollback -start-file mysql-bin.000008 -databases ceshi -tables t1 -start-datetime "2022-10-18 15:42:53" -stop-datetime "2022-10-18 15:45:00" -tl "Asia/Shanghai" -full-columns -output-dir ./tmpdir1
分析大事務、長事務:
統計時間范圍各個表的DML操作數量,統計一個事務大於500條、時間大於300秒的事務
在線解析binlog
我在其中加入 tl 參數,指定時間時為北京時間就可以
./my2sql -user root -password xxx -host xxx.com -port 3306 -mode repl -work-type stats -start-file mysql-bin-changelog.169378 --stop-file mysql-bin-changelog.169379 -start-datetime "2023-02-09 10:20:00" -stop-datetime "2023-02-10 11:00:00" -big-trx-row-limit 500 -long-trx-seconds 300 -tl "Asia/Shanghai" -output-dir ./tmpdir
離線解析binlog,但還是需要連接數據庫
./my2sql -user root -password xxx -host xxx.com -port 3306 -mode file -local-binlog-file ./mysql-bin-changelog.169378 -work-type stats -start-file mysql-bin-changelog.169378 -start-datetime "2023-02-09 10:20:00" -stop-datetime "2023-02-10 11:00:00" -big-trx-row-limit 500 -long-trx-seconds 3 -tl "Asia/Shanghai" -output-dir ./tmpdir