在某些情況下,您可能有一個單一來源伺服器,並希望將不同的資料庫複製到不同的複本。例如,您可能希望將不同的銷售資料分配給不同的部門,以協助在資料分析期間分散負載。此佈局的範例顯示在圖 19.2,「將資料庫複製到個別複本」中。
您可以透過正常設定來源和複本,然後使用每個複本上的 --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
資料庫。