MySQL開啟binlog並且儲存7天有效資料
阿新 • • 發佈:2018-12-31
開啟binlog日誌(在[mysqld]下修改或新增如下配置):
server-id=1
log-bin=mysql-bin
binlog_format=MIXED
binlog日誌模式
Mysql複製主要有三種方式:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)。對應的,binlog的格式也有三種:STATEMENT,ROW,MIXED。
1、STATEMENT模式(SBR)
每一條會修改資料的sql語句會記錄到binlog中。優點是並不需要記錄每一條sql語句和每一行的資料變化,減少了binlog日誌量,節約IO,提高效能。缺點是在某些情況下會導致master-slave中的資料不一致(如sleep()函式, last_insert_id(),以及user-defined functions(udf)等會出現問題)
2、ROW模式(RBR)
不記錄每條sql語句的上下文資訊,僅需記錄哪條資料被修改了,修改成什麼樣了。而且不會出現某些特定情況下的儲存過程、或function、或trigger的呼叫和觸發無法被正確複製的問題。缺點是會產生大量的日誌,尤其是alter table的時候會讓日誌暴漲。
3、MIXED模式(MBR)
以上兩種模式的混合使用,一般的複製使用STATEMENT模式儲存binlog,對於STATEMENT模式無法複製的操作使用ROW模式儲存binlog,MySQL會根據執行的SQL語句選擇日誌儲存方式。
檢視預設的日誌儲存天數
show variables like '%expire_logs_days%';
0-表示永不過期
設定為7天有效期(修改配置檔案)
expire_logs_days=7
binlog使用
mysqlbinlog /var/lib/mysql/mysql-bin.000003