MySQL二進制日誌

二進制日誌由包含「 事件 」的文件組成,這些 事件描述了對數據庫內容的修改。服務器以二進制格式寫入這些文件。
1.查看binlog文件名列表
show binary logs;
MySQL二進制日誌mysql

2.查看binlog文件內容
show binlog events in 'mysql-bin.000001' limit 10;
MySQL二進制日誌sql

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二進制日誌app

5.刷新日誌
flush logs;ide

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.000001oop

基於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,

mysqlbinlog --read-from-remote-server --host=host_name --raw
--to-last-log binlog.000001
--raw:寫入原始(二進制)輸出, binlog.000001:第一個文件, --to-last-log:最後一個文件讀完退出

實時讀取日誌mysqlbinlog --read-from-remote-server --host=host_name --raw--stop-never binlog.000001--stop-never:到達最後一個日誌文件的末尾後保持與服務器的鏈接並繼續讀取新事件,沒有必要指定 --to-last-log讀取最後一個日誌文件,由於該選項是隱含的。

相關文章
相關標籤/搜索