文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 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 參考手冊  /  ...  /  將不同資料庫複製到不同的複本

19.4.6 將不同資料庫複製到不同的複本

在某些情況下,您可能有一個單一來源伺服器,並希望將不同的資料庫複製到不同的複本。例如,您可能希望將不同的銷售資料分配給不同的部門,以協助在資料分析期間分散負載。此佈局的範例顯示在圖 19.2,「將資料庫複製到個別複本」中。

圖 19.2 將資料庫複製到個別複本

The MySQL source has three databases, databaseA, databaseB, and databaseC. databaseA is replicated only to MySQL Replica 1, databaseB is replicated only to MySQL Replica 2, and databaseC is replicated only to MySQL Replica 3.

您可以透過正常設定來源和複本,然後使用每個複本上的 --replicate-wild-do-table 設定選項來限制每個複本處理的二進制日誌陳述式,來達成此分離。

重要

當使用基於陳述式的複製時,您應該將 --replicate-do-db 用於此目的,因為基於陳述式的複製會導致此選項的效果根據目前選取的資料庫而有所不同。這也適用於混合格式複製,因為這會讓一些更新使用基於陳述式的格式進行複製。

但是,如果您只使用基於列的複製,則使用 --replicate-do-db 用於此目的應該是安全的,因為在這種情況下,目前選取的資料庫不會影響選項的操作。

例如,為了支援如圖 19.2,「將資料庫複製到個別複本」所示的分離,您應該在執行 START REPLICA 之前,將每個複本設定如下:

  • 複本 1 應該使用 --replicate-wild-do-table=databaseA.%

  • 複本 2 應該使用 --replicate-wild-do-table=databaseB.%

  • 複本 3 應該使用 --replicate-wild-do-table=databaseC.%

此設定中的每個複本都會收到來自來源的整個二進制日誌,但只會執行二進制日誌中適用於該複本上生效的 --replicate-wild-do-table 選項所包含的資料庫和資料表的事件。

如果您有必須在複製開始之前同步到複本的資料,您有許多選擇

  • 將所有資料同步到每個副本,並刪除您不想保留的資料庫、表格或兩者。

  • 使用 mysqldump 為每個資料庫建立個別的傾印檔案,並在每個副本上載入適當的傾印檔案。

  • 使用原始資料檔案傾印,並且僅包含每個副本所需的特定檔案和資料庫。

    注意

    除非您使用 innodb_file_per_table,否則此方法不適用於 InnoDB 資料庫。