Mysql
從 Master->Master 複製對的鍊式 MySQL 複製
這是我所擁有的圖片視圖:
Master 1<----->Master 2 | | | | V V Slave 1 Slave 2
主伺服器永遠不會同時寫入,而主伺服器 2 是備用伺服器。兩位大師都
log-slave-updates
開啟了my.cnf
。如果在 Master 1 上的複制數據庫中創建表,則它存在於 Master 1、Master 2 和 Slave 1 上。它不存在於 Slave 2 上。
同樣,如果在 Master 2 上的複制數據庫中創建表,則它存在於 Master 1、Master 2 和 Slave 2 上。它不存在於 Slave 1 上。
為什麼會這樣?如果兩者都打開了 log-slave-updates,它是否是 MySQL 如何阻止主/主複製伺服器創建複製循環的限制?
有沒有辦法可以工作?
要回答我自己的問題,“修復”是將 binlog_format 更改為
STATEMENT
. 以前是MIXED
。不完全確定這背後的原因 - MySQL 在使用 MIXED 模式時應該對哪些內容被複製為語句和哪些內容被複製為行是智能的。
由於您有 binlog/replicate 過濾,這可能是發生了什麼:
USE non_replicated_db; CREATE TABLE replicated_db.table_name ...;
過濾適用於
USE
語句中的 db 限定,而不是 db 限定。(PS,您使用的可能是標準複製的最佳佈局:雙主單寫,再加上兩個掛起的從屬。如果主控位於不同的物理位置,那就更好了。)