文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  NDB Cluster 複製的一般需求

25.7.2 NDB Cluster 複製的一般需求

一個複製通道需要兩個 MySQL 伺服器作為複製伺服器(來源和副本各一個)。例如,這表示在具有兩個複製通道(提供額外的備援通道)的複製設定中,應該總共有四個複製節點,每個叢集兩個。

如本節及後續章節所述的 NDB 叢集複製,取決於基於列的複製。這表示複製來源 MySQL 伺服器必須以 --binlog-format=ROW--binlog-format=MIXED 執行,如 第 25.7.6 節「啟動 NDB 叢集複製(單一複製通道)」中所述。有關基於列的複製的一般資訊,請參閱 第 19.2.1 節「複製格式」

重要事項

如果您嘗試將 NDB 叢集複製與 --binlog-format=STATEMENT 搭配使用,則複製將無法正常運作,因為來源叢集上的 ndb_binlog_index 資料表和副本叢集上 ndb_apply_status 資料表的 epoch 欄位不會更新(請參閱 第 25.7.4 節「NDB 叢集複製結構描述和資料表」)。相反地,只有作為複製來源的 MySQL 伺服器上的更新會傳播到副本,而來源叢集中任何其他 SQL 節點的更新都不會被複製。

--binlog-format 選項的預設值為 MIXED

在任一叢集中用於複製的每個 MySQL 伺服器,都必須在參與任一叢集的所有 MySQL 複製伺服器中唯一識別(您不能在來源和副本叢集上都擁有共享相同 ID 的複製伺服器)。這可以透過使用 --server-id=id 選項啟動每個 SQL 節點來完成,其中 id 是一個唯一的整數。雖然這不是絕對必要,但為了本文討論的目的,我們假設所有 NDB 叢集二進位檔都使用相同的發行版本。

在 MySQL 複製中,通常情況下,所涉及的兩個 MySQL 伺服器(mysqld 程序)必須彼此相容,包括所使用的複製協定版本和它們支援的 SQL 功能集(請參閱 第 19.5.2 節「MySQL 版本之間的複製相容性」)。正是由於 NDB 叢集和 MySQL Server 9.0 發行版中的二進位檔存在此類差異,NDB 叢集複製才有了額外的要求,即 mysqld 二進位檔都必須來自 NDB 叢集發行版。確保 mysqld 伺服器相容的最簡單和最容易的方法,是將相同的 NDB 叢集發行版用於所有來源和副本 mysqld 二進位檔。

我們假設副本伺服器或叢集專用於複製來源叢集,並且不會在其上儲存任何其他資料。

所有要複製的 NDB 資料表都必須使用 MySQL 伺服器和用戶端建立。使用 NDB API 建立的資料表和其他資料庫物件(例如,使用 Dictionary::createTable())對於 MySQL 伺服器不可見,因此不會被複製。NDB API 應用程式對使用 MySQL 伺服器建立的現有資料表所做的更新可以被複製。

注意

可以使用基於語句的複製來複製 NDB 叢集。但是,在這種情況下,以下限制適用

  • 對作為來源的叢集上的資料列的所有更新都必須定向到單個 MySQL 伺服器。

  • 無法使用多個同時執行的 MySQL 複製程序來複製叢集。

  • 僅複製在 SQL 層級所做的變更。

這些限制是基於語句的複製與基於列的複製相比的其他限制之外的;有關兩種複製格式之間差異的更多具體資訊,請參閱 第 19.2.1.1 節「基於語句和基於列的複製的優缺點」