Mysql

MySQL 5.7 中的 Log_Slave_Updates 在 Linux 中的複制是否失敗?

  • April 5, 2017

我在 RHEL 中為 2 個節點設置了 Master Master 複製設置。一台伺服器充當 Master 以及另一台伺服器(也是 Master 和 Slave)的從屬伺服器讓我們說 A 伺服器和 B 伺服器

我在 B 伺服器上啟用了 log_slave_updates,以便從主伺服器(伺服器 A)接收的所有語句都應該記錄到伺服器 B 的二進制日誌中。

我期待 Replication 會失敗,因為:

        1. Created a Table on Server A.
        2. It get replicated to Server B.

現在來自從 B 的二進制日誌將轉到伺服器 A,這應該會破壞複製,說“表已存在”。但它沒有

這裡的邏輯是什麼?

編輯部分:

  1. 兩台伺服器上的伺服器ID不同

方面#1

請確保 ServerA 和 ServerB 已啟用log_slave_updates

方面#2

此設置不會中斷複製,因為每次在二進制日誌中記錄事務時,事務的 server_id 也會被寫入。

假設 ServerA 的 server_id=10 和 ServerB 的 server_id=20

所以,當你在 ServerA 上執行它時

INSERT INTO mytable (col) VALUES (1);

該事務將包括 server_id 10。當 ServerB 查看其中繼日誌並看到 server_id 10 時,它將與自己的 server_id (20) 進行比較。由於沒有匹配,執行就OK了。

ServerB 在其二進制日誌中記錄該事務。ServerA 將從其中繼日誌中選擇該事務。當 ServerA 查看其中繼日誌並看到 server_id 10 時,它將與自己的 server_id (10) 進行比較。由於存在匹配,因此它拒絕執行。

我之前在過去的答案中討論過這個

引用自:https://dba.stackexchange.com/questions/169071