mysqlbinlog 指令以使用者可視的方式展示出二進制日志中的内容。同時,也可以将其中的内容讀取出來,供其他MySQL實用程式使用。
1. 擷取目前二進制日志清單
SHOW BINARY LOGS;或 SHOW MASTER LOGS; |
2. 擷取特定資料庫條目
mysqlbinlog -d databasename mysqld-bin.000001 > data.sql 同--database |
3. 禁止恢複過程産生日志
mysqlbinlog -d -D databasename mysqld-bin.000001 > data.sql 效果:在輸出第二行會添加SQL_LOG_BIN=0 需root權限 |
4. 在輸出中控制base-64 BINLOG
四個可選項: auto:預設 never:不顯示類似的行BINLOG ' IeZ4WQ8BAAAAZgAAABAA decode-rows:基于行的事件解碼成一個SQL語句,特别是當指定-verbose選項時 例:mysqlbinlog --base64-output=decode-rows --verbose mysqld-bin.000001 always:(5.7用unspec)隻顯示了BINLOG項 |
5. 跳過前N個條目
-o指定跳過前多少個條目 mysqlbinlog -o 10000 mysqld-bin.000001 |
6. 儲存輸出到檔案
兩種方法,重定向和-r: mysqlbinlog -r output.log mysqld-bin.000001 --server-id= 指定是是由給定伺服器生成的日志 mysqlbinlog --server-id=1 -r output.log mysqld-bin.000001 |
7. 從一個特定位置提取條目
從指定位置開始讀:--start-position/-j mysqlbinlog -j 15028 mysqld-bin.000001 > from-15028.out 讀到結束位置: mysqlbinlog --stop-position=15028 mysqld-bin.000001 > upto-15028.out |
8. 重新整理日志以清除Binlog輸出
如日志中出現Warning: this binlog is either in use or was not closed properly 是因為二進制日志沒有被正确的關閉,需連接配接mysql重新整理日志mysql> flush logs; |
9. 在輸出中隻顯示語句
不顯示附加資訊要加選項 -s / --short-form |
10.檢視特定時間的條目
根據時間截取 --start-datetime --stop-datetime 例:mysqlbinlog --stop-datetime="2017-08-16 15:00:00" mysqld-bin.000001 |
11. 擷取遠端伺服器二進制日志