mysqlbinlog經常使用於binlog導出分析及mysql數據恢復。html
下面有一些經常使用選項,簡單介紹一下。mysql
--base64-output=name sql
決定binlog輸出格式選項shell
'never'選項 數據庫
不輸出Sql語句格式bash
'decode-rows' 選項ide
將輸出語句格式轉換爲註釋的SQL語句格式,由於binlog日誌如今大部分都是rows日誌,不是語句日誌,因此轉換語句輸出也只是rows變動的語句,不是當時輸入的sql語句。編碼
若是沒有 --base64-output[=name] 選項,默認給出所有格式,默認是 'auto'。spa
·自動 ("auto") 或未指定 ("UNSPEC") 將自動顯示 BINLOG 語句全部格式(即二進制格式和語句格式)。日誌
若是沒有--base64-output 選項給出的效果與 --base64-output=AUTO 相同。
--start-datetime=name
開始讀取binlog日誌的指定時間,時區是日誌本地時區,時間格式例子‘2016-12-25 11:25:56 ’(要使用引號,避免shell裏識別出錯。)
--stop-datetime=name
中止讀取binlog日誌的指定時間,時區是日誌本地時區,時間格式例子‘2016-12-25 11:25:56 ’(要使用引號,避免shell裏識別出錯。)
--start-position=#
開始讀取 binlog 日誌在 指定position號碼. 讀取範圍更精準,能夠避免時區錯誤,恢復數據時建議使用。
--stop-position=#
中止讀取 binlog 日誌在 指定position號碼. 讀取範圍更精準,能夠避免時區錯誤,恢復數據時建議使用。
-v 從行事件中重建僞 sql 語句。
-vv 從行事件中重建僞 sql 語句,添加對數據類型的註釋。
--database=name
指定導出的數據庫
--skip-gtids
輸出時忽略全局事物ID號碼。
導出時間範圍內的binlog日誌,從行事件中重建僞sql 語句,使用Sql語句編碼,若是有多個binlog文件,後續使用>>添加到導出文件,儘可能使用絕對路徑。
mysqlbinlog -v --base64-output=decode-rows --start-datetime='2016-12-25 11:25:56' \ --stop-datetime='2016-12-25 11:59:59' binlogname > filename.sql
捉取準確的position號碼範圍,導出sql文件。
mysqlbinlog --start-position=10000 --stop-position=20000 binlogname > filename.sql
mysql進行數據導入。
mysql -u'user' -p'password' < filename.sql #危險操做!!!
參考資料:
1,RDS Mysql中binlog日誌查看 https://help.aliyun.com/knowledge_detail/41709.html
2,mysqlbinlog官方手冊 https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html