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


MySQL 8.4 參考手冊  /  ...  /  NDB Cluster 複寫的一般要求

25.7.2 NDB Cluster 複寫的一般要求

複寫通道需要兩個 MySQL 伺服器充當複寫伺服器(來源和複本各一個)。例如,這表示在具有兩個複寫通道的複寫設定中(提供額外的通道以實現冗餘),應共有四個複寫節點,每個叢集兩個。

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

重要事項

如果您嘗試使用 --binlog-format=STATEMENT 執行 NDB Cluster 複寫,複寫將無法正常運作,因為來源叢集上的 ndb_binlog_index 資料表和複本叢集上 ndb_apply_status 資料表的 epoch 欄位未更新(請參閱第 25.7.4 節「NDB Cluster 複寫的綱要與資料表」)。而是只有充當複寫來源的 MySQL 伺服器上的更新會傳播到複本,並且不會複寫來源叢集中任何其他 SQL 節點的更新。

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

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

一般而言,在 MySQL 複寫中,所涉及的兩個 MySQL 伺服器(mysqld 程序)在所使用的複寫協定版本和其支援的 SQL 功能集方面必須彼此相容(請參閱第 19.5.2 節「MySQL 版本之間的複寫相容性」)。正是由於 NDB Cluster 和 MySQL 伺服器 8.4 發行版本中二進制檔案之間的這種差異,NDB Cluster 複寫還有額外要求,即 mysqld 二進制檔案都來自 NDB Cluster 發行版本。確保 mysqld 伺服器相容的最簡單方法是針對所有來源和複本 mysqld 二進制檔案使用相同的 NDB Cluster 發行版本。

我們假設複本伺服器或叢集專用於複寫來源叢集,並且沒有其他資料儲存在其上。

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

注意

可以使用基於陳述式的複寫來複寫 NDB Cluster。但是,在這種情況下,適用以下限制:

  • 對充當來源的叢集上的資料列的所有更新都必須導向單一 MySQL 伺服器。

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

  • 只會複寫在 SQL 層級所做的變更。

這些限制是除了基於陳述式的複寫相對於基於列的複寫的其他限制之外的;請參閱第 19.2.1.1 節「基於陳述式和基於列的複寫的優缺點」,以取得有關兩種複寫格式之間差異的更具體資訊。