MySQL的二進制日志是主從復制的重要組成部分
開啟日志的變量為log_bin
在配置文件中添加下面配置
[mysqld]
log_bin =mysql-bin
配置的類型
statement
row
mixed
binlog_format = row|statement|mixed
statement模式
記錄使數(shù)據(jù)產(chǎn)生變化的SQL語句,行數(shù)據(jù)修改和表格結構的修改,觸發(fā)器的變化等等。
由于只記錄命令行和相關信息,所以日志量較小,但對于某些不確定的函數(shù)執(zhí)行時候,可能會產(chǎn)生主從不一致的情況,如CURRENTTIME()函數(shù),UUID()函數(shù)
row模式
記錄每一條變化的數(shù)據(jù)變更記錄,然后在從機器上進行重放,是最安全的模式,但是在修改大量語句時候可能會產(chǎn)生大量的日志,浪費磁盤和網(wǎng)絡IO,
在mysql5.6之后,加入了參數(shù)binlog_row_image來緩解這個問題,默認為FULL。
mysql> show variables like "binlog_row_image";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| binlog_row_image | FULL |
+------------------+-------+
1 row in set (0.00 sec)
FULL為默認值, 意思是記錄一行紀錄里面的所有內容, 無論該列是否被修改。
MINIMAL僅記錄被修改的列, 這樣就可以大大減少記錄量。
NOBLOB和FULL類型相似, 區(qū)別在于在TEXT和BLOB類型無更新時不會記錄。
mixed模式
存在不確定函數(shù)時候,使用statement,其他時候使用row模式記錄,雖然看似集合了兩種模式的優(yōu)點,但是個人并不推薦使用。