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()html
mysql將mixed記錄爲row的幾種狀況,請參考官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/binary-log-mixed.htmlmysql