1. 程式人生 > >主從 binlog_format 設置關系

主從 binlog_format 設置關系

所有 如果 ren man 執行 base 例如 alt cti

1. 主庫是row,從庫必須是row/mixed。如果是statement,主庫有變更時,從庫報如下錯誤(無論什麽變更都報錯,如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. 主庫是statement,從庫可以是任意模式(statement/mixed/row),但可能造成數據不一致,故不建議使用。
3. 主庫是mixed,從庫必須是row/mixe格式。如果從庫是statement,主庫一般情況下修改數據,從庫不報錯。特殊情況下,則從庫報如下錯誤。
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.‘ 以上所說的一般情況是:主庫將binlog記錄為statement格式。 以上所說的特殊情況是:主庫將binlog記錄為row格式。具體為以下幾種:

(1) 當時用UUID()函數時
(2) 當一個或多個擁有AUTO_INCREMENT列的表被更新同時有‘trigger’或者‘stored function’被調用時
(3) 執行INSERT DELAYED時
(4) 當視圖裏的某一部分需要row-based復制(例如UUID())時,創建該視圖的語句被改為row-based
(5) 使用用戶自定義函數(UDF)時
(6) 當某語句被判定為row-based,並且執行它的session需要用到臨時表,則session下的所有子語句都將以ROW格式記錄
(7) 當使用USER(),CURRENT_USER()或者 CURRENT_USER
(8) 當語句引用了一個或多個system variables。
(9) 當使用LOAD_FILE()

mysql將mixed記錄為row的幾種情況,請參考官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/binary-log-mixed.html

主從 binlog_format 設置關系