以下章節說明如何設定複本。在繼續之前,請確保您已
使用必要的組態屬性設定來源。請參閱第 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 節,「在複本上設定來源組態」。
在每個複本上執行這些複本設定步驟。
如果您要設定新的伺服器,但有要載入到複寫組態中的不同伺服器資料庫現有傾印,也可以使用此方法。透過將資料載入到新的來源中,資料會自動複寫到複本。
如果您要使用來自不同現有資料庫伺服器的資料建立新的來源來設定新的複製環境,請在新來源上執行從該伺服器產生的 dump 檔案。資料庫更新會自動傳播到複本。
$> 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
啟動伺服器。然後匯入 dump 檔案。$> 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 節,「複製和二進位記錄選項和變數」。
單一來源快照足以用於多個複本。若要設定其他複本,請使用相同的來源快照,並依照剛才所述程序的複本部分執行。