標籤:tar art form -- 主鍵 3.1 row 必須 datetime
用途:
1、資料快速復原2、從binlog產生標準sql
使用限制:
1、必須設定binlog_format=ROW2、binlog_row_image=full,該參數預設為FULL3、恢複使用者擁有的最小許可權集合為:select, super/replication client, replication slave
建議授權 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO許可權說明 select:需要讀取server端information_schema.COLUMNS表,擷取表結構的元資訊,拼接成可視化的sql語句 super/replication client:兩個許可權都可以,需要執行‘SHOW MASTER STATUS‘, 擷取server端的binlog列表 replication slave:通過BINLOG_DUMP協議擷取binlog內容的許可權
1、下載安裝
git clone https://github.com/danfengcao/binlog2sql.gitwget https://bootstrap.pypa.io/get-pip.py --no-check-certificatepython get-pip.pycd binlog2sqlpip install –r requirements.txt
2、使用說明
mysql串連配置-h host:資料庫地址-P port:資料庫連接埠-u user:資料庫連接使用者-p password:資料庫連接密碼解析模式--stop-never 持續解析binlog。可選。預設False,同步至執行命令時最新的binlog位置。-K, --no-primary-key 對INSERT語句去除主鍵。可選。預設False。-B, --flashback 產生復原SQL,可解析大檔案,不受記憶體限制。可選。預設False。與stop-never或no-primary-key不能同時添加。--back-interval -B模式下,每列印一千行復原SQL,加一句SLEEP多少秒,如不想加SLEEP,請設為0。可選。預設1.0。解析範圍控制--start-file 起始解析檔案,只需檔案名稱,無需全路徑 。必須。--start-position/--start-pos 起始解析位置。可選。預設為start-file的起始位置。--stop-file/--end-file 終止解析檔案。可選。預設為start-file同一個檔案。若解析模式為stop-never,此選項失效。--stop-position/--end-pos 終止解析位置。可選。預設為stop-file的最末位置;若解析模式為stop-never,此選項失效。--start-datetime 起始解析時間,格式‘%Y-%m-%d %H:%M:%S‘。可選。預設不過濾。--stop-datetime 終止解析時間,格式‘%Y-%m-%d %H:%M:%S‘。可選。預設不過濾。對象過濾-d, --databases 只解析目標db的sql,多個庫用空格隔開,如-d db1 db2。可選。預設為空白。-t, --tables 只解析目標table的sql,多張表用空格隔開,如-t tbl1 tbl2。可選。預設為空白。--only-dml 只解析dml,忽略ddl。可選。預設TRUE。--sql-type 只解析指定類型,支援INSERT, UPDATE, DELETE。多個類型用空格隔開,如--sql-type INSERT DELETE。可選。預設為增刪改都解析。用了此參數但沒填任何類型,則三者都不解析。
3、優缺點
3.1、限制(對比mysqlbinlog)
mysql server必須開啟,離線模式下不能解析參數 binlog_row_image 必須為FULL,暫不支援MINIMAL解析速度不如mysqlbinlog
3.2、優點(對比mysqlbinlog)
純Python開發,安裝與使用都很簡單內建flashback、no-primary-key解析模式,無需再裝補丁flashback模式下,更適合閃回實戰解析為標準SQL,方便理解、篩選代碼容易改造,可以支援更多個人化解析
4、使用參考
python binlog2sql.py -hlocalhost -P3306 -uroot -p -dowms-hh --start-file=‘master-bin.000011‘ --start-datetime=‘2017-12-25 11:47:51‘ --stop-datetime=‘2017-12-25 11:47:58‘ -B > /data/t_rollback.sql
binlog2sql閃回恢複資料