MySQL的二進(jìn)制日志

MySQL的二進(jìn)制日志是主從復(fù)制的重要組成部分
開啟日志的變量為log_bin
在配置文件中添加下面配置

[mysqld]
log_bin =mysql-bin

配置的類型
statement
row
mixed
binlog_format = row|statement|mixed
statement模式
記錄使數(shù)據(jù)產(chǎn)生變化的SQL語句,行數(shù)據(jù)修改和表格結(jié)構(gòu)的修改,觸發(fā)器的變化等等。
由于只記錄命令行和相關(guān)信息,所以日志量較小,但對(duì)于某些不確定的函數(shù)執(zhí)行時(shí)候,可能會(huì)產(chǎn)生主從不一致的情況,如CURRENTTIME()函數(shù),UUID()函數(shù)
row模式
記錄每一條變化的數(shù)據(jù)變更記錄,然后在從機(jī)器上進(jìn)行重放,是最安全的模式,但是在修改大量語句時(shí)候可能會(huì)產(chǎn)生大量的日志,浪費(fèi)磁盤和網(wǎng)絡(luò)IO,
在mysql5.6之后,加入了參數(shù)binlog_row_image來緩解這個(gè)問題,默認(rèn)為FULL。
mysql> show variables like "binlog_row_image";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| binlog_row_image | FULL |
+------------------+-------+
1 row in set (0.00 sec)

FULL為默認(rèn)值, 意思是記錄一行紀(jì)錄里面的所有內(nèi)容, 無論該列是否被修改。
MINIMAL僅記錄被修改的列, 這樣就可以大大減少記錄量。
NOBLOB和FULL類型相似, 區(qū)別在于在TEXT和BLOB類型無更新時(shí)不會(huì)記錄。

mixed模式
存在不確定函數(shù)時(shí)候,使用statement,其他時(shí)候使用row模式記錄,雖然看似集合了兩種模式的優(yōu)點(diǎn),但是個(gè)人并不推薦使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容