mysql-binlog詳解

MySQL binlog格式

binlog的格式也有三種:STATEMENT、ROW、MIXED 。
1、STATMENT模式:基於SQL語句的複製(statement-based replication, SBR),每一條會修改數據的sql語句會記錄到binlog中。
優點:不需要記錄每一條SQL語句與每行的數據變化,這樣子binlog的日誌也會比較少,減少了磁盤IO,提高性能。
缺點:在某些情況下會導致master-slave中的數據不一致(如sleep()函數, last_insert_id(),以及user-defined functions(udf)等會出現問題)
2、基於行的複製(row-based replication, RBR):不記錄每一條SQL語句的上下文信息,僅需記錄哪條數據被修改了,修改成了什麼樣子了。
優點:不會出現某些特定情況下的存儲過程、或function、或trigger的調用和觸發無法被正確複製的問題。
缺點:會產生大量的日誌,尤其是alter table的時候會讓日誌暴漲。
3、混合模式複製(mixed-based replication, MBR):以上兩種模式的混合使用,一般的複製使用STATEMENT模式保存binlog,對於STATEMENT模式無法複製的操作使用ROW模式保存binlog,MySQL會根據執行的SQL語句選擇日誌保存方式。

binlog配置

在MySQL配置文件my.cnf文件中的mysqld節中添加下面的配置文件:

vim /etc/my.cnf

[mysqld]
#設置日誌格式
binlog_format = mixed
#設置日誌路徑,注意路經需要mysql用戶有權限寫
log-bin = /data/mysql/logs/mysql-bin.log
#設置binlog清理時間
expire_logs_days = 7
#binlog每個日誌文件大小
max_binlog_size = 100m
#binlog緩存大小
binlog_cache_size = 4m
#最大binlog緩存大小
max_binlog_cache_size = 512m
重啓MySQL生效,如果不方便重啓服務,也可以直接修改對應的變量即可。

總結

無論是增量備份還是主從複製,都是需要開啓mysql-binlog日誌,最好跟數據目錄設置到不同的磁盤分區,可以降低io等待,提升性能;並且在磁盤故障的時候可以利用mysql-binlog恢復數據。

mysql查看binlog日誌內容

https://blog.csdn.net/a1010256340/article/details/80306952

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章