天天看點

MySQL二進制日志

二進制日志由包含“ 事件 ”的檔案組成,這些 事件描述了對資料庫内容的修改。伺服器以二進制格式寫入這些檔案。

1.檢視binlog檔案名清單

show binary logs;

MySQL二進制日志

2.檢視binlog檔案内容

show binlog events in 'mysql-bin.000001' limit 10;

MySQL二進制日志

3.檢視binlog目前位置點

show master status;

MySQL二進制日志

4.檢視binlog 格式

日志格式:statement,row,

row:優點:日志比較清楚,會記錄每行資料修改細節 缺點:會産生大量的日志

statement:優點:隻記錄sql語句,解決了row格式的缺點,減少了日志量,節省I/O 及存儲資源,提高了性能。 缺點:有些sql語句不能複制到slava,導緻主從不一緻,存在一些bug,語句執行錯誤不易恢複。

mixed:處于row與statement格式之間,很好的處理了其優缺點。

SELECT @@binlog_format;

MySQL二進制日志

5.重新整理日志

flush logs;

6.清除日志

reset master;

7.用mysqlbinlog工具檢視

mysqlbinlog -v --base64-output=decode-rows /usr/app/mysqllog/mysql_bin.000001

基于開始/結束時間

mysqlbinlog --start-datetime='2018-12-13 00:00:00' --stop-datetime='2018-12-14 15:01:01' -d hadoop /usr/app/mysqllog/mysql-bin.000001

基于pos值輸出到壓縮檔案 ,注:test是庫名,/var/lib/mysql/mysql-bin.000001是二進制檔案路徑

mysqlbinlog --start-position=2098 --stop-position=2205 -d test /usr/app/mysqllog/mysql-bin.000001 |gzip >test.sql.gz

提取指定位置的多個binlog日志檔案

mysqlbinlog --start-position="120" --stop-position="332" /usr/app/mysqllog/mysql-bin.000001 /usr/app/mysqllog/mysql-bin.000002|more

提取指定資料庫binlog并轉換字元集到UTF8

mysqlbinlog --database=test --set-charset=utf8 /usr/app/mysqllog/mysql-bin.000001 /usr/app/mysqllog/mysql-bin.000002 >test.sql

恢複資料

mysqlbinlog --start-position="120" --stop-position="332" /usr/app/mysqllog/mysql-bin.000001 | mysql -uroot -p

備份日志:必須由兩個mysqlbinlog 完成

mysqlbinlog --read-from-remote-server --host=host_name --raw

binlog.000001 binlog.000131 binlog.000132

--read-from-remote-server可以用-R替代:連接配接到伺服器并請求其二進制日志, --host:主機ip,

--to-last-log binlog.000001

--raw:寫入原始(二進制)輸出, binlog.000001:第一個檔案, --to-last-log:最後一個檔案讀完退出

實時讀取日志

--stop-never binlog.000001

--stop-never:到達最後一個日志檔案的末尾後保持與伺服器的連接配接并繼續讀取新事件,沒有必要指定 --to-last-log讀取最後一個日志檔案,因為該選項是隐含的。

繼續閱讀