1. 程式人生 > >MySQL開啟binlog並且儲存7天有效資料

MySQL開啟binlog並且儲存7天有效資料

開啟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