以下章節說明如何設定複本。在繼續操作之前,請確保您已完成以下事項:
使用必要的設定屬性設定來源。請參閱第 19.1.2.1 節,「設定複製來源組態」。
取得來源狀態資訊,或在資料快照關機期間建立的來源二進位日誌索引檔案複本。請參閱第 19.1.2.4 節,「取得複製來源的二進位日誌座標」。
在來源上,釋放讀取鎖定
mysql> UNLOCK TABLES;
在複本上,編輯 MySQL 組態。請參閱第 19.1.2.2 節,「設定複本組態」。
接下來的步驟取決於您是否有現有資料要匯入複本。請參閱第 19.1.2.5 節,「選擇資料快照的方法」以取得更多資訊。選擇以下其中一個選項:
如果您沒有要匯入的資料庫快照,請參閱第 19.1.2.6.1 節,「設定使用新的來源和複本的複製」。
如果您有要匯入的資料庫快照,請參閱第 19.1.2.6.2 節,「設定使用現有資料的複製」。
當沒有先前資料庫的快照可供匯入時,請設定複本以從新的來源開始複寫。
若要在來源和新的複本之間設定複寫
啟動複本。
在複本上執行
CHANGE REPLICATION SOURCE TO
陳述式,以設定來源組態。請參閱 第 19.1.2.7 節「在複本上設定來源組態」。
在每個複本上執行這些複本設定步驟。
如果您要設定新的伺服器,但擁有來自不同伺服器的現有資料庫傾印,並想將其載入複寫組態,也可以使用此方法。透過將資料載入新的來源,資料會自動複寫到複本。
如果您要使用來自不同現有資料庫伺服器的資料來建立新的來源,請在新來源上執行從該伺服器產生的傾印檔案。資料庫更新會自動傳播到複本。
$> mysql -h source < fulldb.dump
使用現有資料設定複寫時,請在開始複寫之前,將快照從來源傳輸到複本。將資料匯入複本的流程取決於您如何在來源上建立資料快照。
若要部署多個 MySQL 執行個體,您可以使用 InnoDB Cluster,這讓您可以在 MySQL Shell 中輕鬆管理一組 MySQL 伺服器執行個體。InnoDB Cluster 將 MySQL Group Replication 包裝在程式設計環境中,讓您可以輕鬆部署 MySQL 執行個體叢集,以實現高可用性。此外,InnoDB Cluster 與 MySQL Router 無縫介接,這讓您的應用程式可以連線到叢集,而無需撰寫自己的容錯移轉流程。但是,對於不需要高可用性的類似使用案例,您可以使用 InnoDB ReplicaSet。MySQL Shell 的安裝指示可在此處找到。
如果您要複製以建立新複本的複寫來源伺服器或現有複本有任何排定的事件,請務必在新複本啟動之前停用這些事件。如果某個事件在新複本上執行,而該事件已在來源上執行,則重複的操作會導致錯誤。事件排程器是由 event_scheduler
系統變數(預設值為 ON
)所控制,因此在原始伺服器上處於活動狀態的事件預設會在新的複本啟動時執行。若要停止在新複本上執行所有事件,請將新複本上的 event_scheduler
系統變數設定為 OFF
或 DISABLED
。或者,您可以使用 ALTER EVENT
陳述式,將個別事件設定為 DISABLE
或 DISABLE ON REPLICA
,以防止它們在新複本上執行。您可以使用 SHOW
陳述式或 Information Schema EVENTS
資料表,列出伺服器上的事件。如需詳細資訊,請參閱 第 19.5.1.16 節「複寫已叫用的功能」。
作為以這種方式建立新複本的替代方法,可以使用 MySQL Server 的 clone 外掛程式,將所有資料和複寫設定從現有複本傳輸到複製體。如需使用此方法的指示,請參閱 第 7.6.7.7 節「複寫的複製」。
請遵循以下程序,使用現有資料設定複寫
如果您使用 MySQL Server 的 clone 外掛程式從現有複本建立複製體(請參閱 第 7.6.7.7 節「複寫的複製」),則資料已傳輸。否則,請使用下列其中一種方法將資料匯入複本。
如果您使用 mysqldump,請啟動複本伺服器,並使用
--skip-replica-start
啟動伺服器,確保複寫不會啟動。然後匯入傾印檔案$> mysql < fulldb.dump
如果您使用原始資料檔案建立快照,請將資料檔案解壓縮到複本的資料目錄中。例如
$> tar xvf dbdump.tar
您可能需要設定檔案的權限和所有權,以便複本伺服器可以存取和修改它們。然後啟動複本伺服器,並使用
--skip-replica-start
,確保複寫不會啟動。
使用來源的複寫座標來設定複本。這會告訴複本複寫需要從哪個二進位記錄檔和檔案中的哪個位置開始。此外,使用來源的登入認證和主機名稱來設定複本。如需有關所需
CHANGE REPLICATION SOURCE TO
陳述式的詳細資訊,請參閱 第 19.1.2.7 節「在複本上設定來源組態」。發出
START REPLICA
陳述式,以啟動複寫執行緒。
執行此程序後,複本會連線到來源,並複寫自建立快照以來在來源上發生的任何更新。如果複本因任何原因無法複寫,則會將錯誤訊息發出到複本的錯誤記錄檔。
複本會使用其連線中繼資料儲存庫和應用程式中繼資料儲存庫中記錄的資訊,來追蹤它已處理來源二進位記錄檔的量。依預設,這些儲存庫是在 mysql
資料庫中名為 slave_master_info
和 slave_relay_log_info
的資料表。除非您確切知道自己在做什麼並完全了解其含意,否則請不要移除或編輯這些資料表。即使在這種情況下,也最好使用 CHANGE REPLICATION SOURCE TO
陳述式來變更複寫參數。複本會使用陳述式中指定的值,來自動更新複寫中繼資料儲存庫。如需詳細資訊,請參閱 第 19.2.4 節「中繼記錄檔和複寫中繼資料儲存庫」。
複本連線中繼資料儲存庫的內容會覆寫命令列或 my.cnf
中指定的部分伺服器選項。如需更多詳細資訊,請參閱 第 19.1.6 節「複寫和二進位記錄選項和變數」。
單一來源快照足以用於多個複本。若要設定其他複本,請使用相同的來源快照並遵循剛才描述的程序的複本部分。