《mysql 主從 binlog_format 設(shè)置關(guān)系》要點(diǎn):
本文介紹了mysql 主從 binlog_format 設(shè)置關(guān)系,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
導(dǎo)讀:1. 主庫(kù)是row,從庫(kù)必須是row/mixed.如果是statement,主庫(kù)有變更時(shí),從庫(kù)報(bào)如下錯(cuò)誤(無(wú)論什么變更都報(bào)錯(cuò),如insert/update/delete/alte...
1. 主庫(kù)是row,從庫(kù)必須是row/mixed.如果是statement,主庫(kù)有變更時(shí),從庫(kù)報(bào)如下錯(cuò)誤(無(wú)論什么變更都報(bào)錯(cuò),如insert/update/delete/alter等):
? ? Last_Error: Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'
?
2. 主庫(kù)是statement,從庫(kù)可以是任意模式(statement/mixed/row),但可能造成數(shù)據(jù)不一致,故不建議使用.
?
3. 主庫(kù)是mixed,從庫(kù)必須是row/mixe格式.如果從庫(kù)是statement,主庫(kù)一般情況下修改數(shù)據(jù),從庫(kù)不報(bào)錯(cuò).特殊情況下,則從庫(kù)報(bào)如下錯(cuò)誤.
? ? Last_Error: Error executing row event: 'Cannot execute statement: impossible to write to binary log since statement is in row format and BINLOG_FORMAT = STATEMENT.'
?
以上所說(shuō)的一般情況是:主庫(kù)將binlog記錄為statement格式.
以上所說(shuō)的特殊情況是:主庫(kù)將binlog記錄為row格式.具體為以下幾種:
(1) 當(dāng)時(shí)用UUID()函數(shù)時(shí)
(2) 當(dāng)一個(gè)或多個(gè)擁有AUTO_INCREMENT列的表被更新同時(shí)有‘trigger’或者‘stored function’被調(diào)用時(shí)
(3) 執(zhí)行INSERT DELAYED時(shí)
(4) 當(dāng)視圖里的某一部分需要row-based復(fù)制(例如UUID())時(shí),創(chuàng)建該視圖的語(yǔ)句被改為row-based
(5) 使用用戶自定義函數(shù)(UDF)時(shí)
(6) 當(dāng)某語(yǔ)句被判定為row-based,并且執(zhí)行它的session需要用到臨時(shí)表,則session下的所有子語(yǔ)句都將以ROW格式記錄
(7) 當(dāng)使用USER(),CURRENT_USER()或者 CURRENT_USER
(8) 當(dāng)語(yǔ)句引用了一個(gè)或多個(gè)system variables.
(9) 當(dāng)使用LOAD_FILE()
mysql將mixed記錄為row的幾種情況,請(qǐng)參考官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/binary-log-mixed.html
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/5538.html