二進制日志由包含“ 事件 ”的檔案組成,這些 事件描述了對資料庫内容的修改。伺服器以二進制格式寫入這些檔案。
1.檢視binlog檔案名清單
show binary logs;

2.檢視binlog檔案内容
show binlog events in 'mysql-bin.000001' limit 10;
3.檢視binlog目前位置點
show master status;
4.檢視binlog 格式
日志格式:statement,row,
row:優點:日志比較清楚,會記錄每行資料修改細節 缺點:會産生大量的日志
statement:優點:隻記錄sql語句,解決了row格式的缺點,減少了日志量,節省I/O 及存儲資源,提高了性能。 缺點:有些sql語句不能複制到slava,導緻主從不一緻,存在一些bug,語句執行錯誤不易恢複。
mixed:處于row與statement格式之間,很好的處理了其優缺點。
SELECT @@binlog_format;
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讀取最後一個日志檔案,因為該選項是隐含的。