文件首頁
MySQL 9.0 參考手冊
相關文件 下載此手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  用於分散式復原的複製

20.5.4.2 用於分散式復原的複製

如果您想要在群組中使用遠端複製操作進行分散式復原,您必須事先設定現有成員和加入成員以支援此功能。如果您不想要在群組中使用此功能,請不要設定它,在這種情況下,群組複製只會使用二進位記錄檔中的狀態傳輸。

若要使用複製,至少必須事先設定一個現有群組成員和加入成員以支援遠端複製操作。您至少必須在捐贈者和加入成員上安裝複製外掛程式,將 BACKUP_ADMIN 權限授予用於分散式復原的複製使用者,並將 group_replication_clone_threshold 系統變數設定為適當的層級。為了確保捐贈者的最大可用性,建議設定所有目前和未來的群組成員以支援遠端複製操作。

請注意,遠端複製操作會在從捐贈者傳輸資料之前,從加入成員中移除使用者建立的表格空間和資料。如果操作在進行時停止,加入成員可能會留下部分資料或沒有資料。這可以透過重試遠端複製操作來修復,群組複製會自動執行此操作。

20.5.4.2.1 複製的必要條件

如需設定和設定複製外掛程式的完整指示,請參閱第 7.6.7 節「複製外掛程式」。如需遠端複製操作的詳細必要條件,請參閱第 7.6.7.3 節「複製遠端資料」。針對群組複製,請注意以下重點和差異

  • 捐贈者 (現有群組成員) 和接收者 (加入成員) 必須安裝並啟用複製外掛程式。如需執行此操作的指示,請參閱第 7.6.7.1 節「安裝複製外掛程式」

  • 捐贈者和接收者必須在相同的作業系統上執行,而且必須在相同的 MySQL 伺服器版本系列上。因此,複製不適用於成員執行不同次要 MySQL 伺服器版本 (例如 MySQL 8.0 和 8.4) 的群組。

  • 捐贈者和接收者必須安裝並啟用群組複製外掛程式,而且在捐贈者上啟用的任何其他外掛程式 (例如金鑰環外掛程式) 也必須在接收者上啟用。

  • 如果分散式復原設定為使用 SSL (group_replication_recovery_use_ssl=ON),則群組複製會將此設定套用至遠端複製操作。群組複製會自動設定複製 SSL 選項 (clone_ssl_caclone_ssl_certclone_ssl_key) 的設定,以符合您對應的群組複製分散式復原選項 (group_replication_recovery_ssl_cagroup_replication_recovery_ssl_certgroup_replication_recovery_ssl_key) 的設定。

  • 您不需要為了加入複製群組而在 clone_valid_donor_list 系統變數中設定有效捐贈者清單。群組複製會在從現有群組成員選取捐贈者後,自動為您設定此設定。請注意,遠端複製操作會使用伺服器的 SQL 通訊協定主機名稱和連接埠。

  • 複製外掛程式具有多個系統變數,可管理遠端複製操作的網路負載和效能影響。群組複製不會設定這些設定,因此您可以檢閱它們並在需要時設定它們,或允許它們預設。請注意,當遠端複製操作用於分散式復原時,複製外掛程式的 clone_enable_compression 設定會套用至操作,而不是群組複製壓縮設定。

  • 為了在接收者上叫用遠端複製操作,群組複製會使用內部 mysql.session 使用者,該使用者已具有 CLONE_ADMIN 權限,因此您不需要設定此權限。

  • 在遠端複製操作中,作為捐贈者上的複製使用者,群組複製會使用您為分散式復原設定的複製使用者(詳見第 20.2.1.3 節「分散式復原的使用者憑證」)。因此,您必須在所有支援複製的群組成員上,將 BACKUP_ADMIN 權限授予此複製使用者。當您為群組複製設定加入成員時,也請將此權限授予該複製使用者,因為它們在加入群組後可能作為捐贈者。每個群組成員上的分散式復原都使用相同的複製使用者。要將此權限授予現有成員上的複製使用者,您可以在每個群組成員上個別發出此陳述式,並停用二進位日誌記錄;或者在一個群組成員上發出此陳述式,並啟用二進位日誌記錄。

    GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
  • 如果您使用 START GROUP_REPLICATION 在先前使用 CHANGE REPLICATION SOURCE TO 提供使用者憑證的伺服器上指定複製使用者憑證,請確保在執行任何遠端複製操作之前,先從複製中繼資料儲存庫中移除使用者憑證。同時,請確保加入成員上已設定 group_replication_start_on_boot=OFF。如需指示,請參閱第 20.6.3 節「保護分散式復原連線」。如果您未取消設定使用者憑證,它們會在遠端複製操作期間傳輸到加入成員。然後,group_replication_recovery 通道可能會在原始成員或從其複製的成員上,意外地使用已儲存的憑證啟動。伺服器開機時(包括遠端複製操作後)自動啟動群組複製會使用已儲存的使用者憑證,而且如果操作員未在 START GROUP_REPLICATION 命令上指定分散式復原憑證,也會使用這些憑證。

20.5.4.2.2 複製的臨界值

當群組成員設定為支援複製時,group_replication_clone_threshold 系統變數指定一個臨界值,以交易次數表示,用於分散式復原中的遠端複製操作。如果捐贈者上的交易和加入成員上的交易之間的差距大於此數值,則在技術上可行時,會使用遠端複製操作將狀態傳輸到加入成員。群組複製會根據現有群組成員的 gtid_executed 集合來計算是否已超過臨界值。在交易差距較大的情況下使用遠端複製操作,可讓您在不事先手動將群組的資料傳輸到伺服器的情況下,將新成員新增到群組,並使過時的成員能夠更有效率地追上進度。

group_replication_clone_threshold 群組複製系統變數的預設設定極高(GTID 中交易允許的最大序號),因此,只要可以從二進位日誌進行狀態傳輸,實際上就會停用複製。要讓群組複製選擇遠端複製操作以進行狀態傳輸(如果更合適),請將系統變數設定為一個交易次數,作為您希望執行複製的交易差距上限。

警告

請勿在活動群組中使用 group_replication_clone_threshold 的低設定。如果在遠端複製操作進行期間,群組中發生的交易次數超過臨界值,加入成員會在重新啟動後再次觸發遠端複製操作,並可能無限期地持續此操作。為避免此情況,請確保將臨界值設定為大於您預期在遠端複製操作所需時間內群組中會發生的交易次數。

當無法從捐贈者的二進位日誌進行狀態傳輸時,例如,因為加入成員所需的交易在任何現有群組成員的二進位日誌中都不可用,則群組複製會嘗試執行遠端複製操作,而不論您的臨界值為何。群組複製會根據現有群組成員的 gtid_purged 集合來識別這一點。當任何成員的二進位日誌檔案中沒有所需的交易時,您無法使用 group_replication_clone_threshold 系統變數停用複製,因為在該情況下,複製是手動將資料傳輸到加入成員的唯一替代方案。

20.5.4.2.3 複製操作

當群組成員和加入成員設定為複製時,群組複製會為您管理遠端複製操作。遠端複製操作可能需要一些時間才能完成,具體時間取決於資料的大小。請參閱第 7.6.7.10 節「監控複製操作」,以取得有關監控此程序的資訊。

注意

當狀態傳輸完成時,群組複製會重新啟動加入成員以完成此程序。如果在加入成員上設定 group_replication_start_on_boot=OFF,例如,因為您在 START GROUP_REPLICATION 陳述式上指定了複製使用者憑證,則您必須在此重新啟動後再次手動發出 START GROUP_REPLICATION。如果 group_replication_start_on_boot=ON 以及啟動群組複製所需的其他設定是在組態檔中或使用 SET PERSIST 陳述式設定的,則您無需介入,且此程序會自動繼續使加入成員上線。

遠端複製操作會從捐贈者複製在資料表中持續保存的設定,以及資料。群組複製會管理與群組複製通道相關的設定。持續儲存在組態檔中的群組複製成員設定(例如群組複製本機位址)不會複製,也不會在加入成員上變更。群組複製也會保留與 SSL 使用相關的通道設定,因此這些設定對每個成員都是唯一的。

如果捐贈者用於 group_replication_recovery 複製通道的複製使用者憑證已使用 CHANGE REPLICATION SOURCE TO 陳述式儲存在複製中繼資料儲存庫中,它們會傳輸到並由複製後的加入成員使用,而且它們必須在那裡有效。使用已儲存的憑證,所有透過遠端複製操作接收狀態傳輸的群組成員都會自動接收用於分散式復原的複製使用者和密碼。如果您在 START GROUP_REPLICATION 陳述式上指定複製使用者憑證,這些憑證會用於啟動遠端複製操作,但它們不會傳輸到並由複製後的加入成員使用。如果您不希望將憑證傳輸到新的加入者並在那裡記錄,請確保在執行遠端複製操作之前取消設定它們,如第 20.6.3 節「保護分散式復原連線」中所述,並改用 START GROUP_REPLICATION 提供它們。

如果已使用 PRIVILEGE_CHECKS_USER 帳戶來協助保護複製應用程式(請參閱第 19.3.3.2 節「群組複製通道的權限檢查」),則捐贈者的 PRIVILEGE_CHECKS_USER 帳戶和相關設定會複製到加入成員。如果加入成員設定為在開機時啟動群組複製,則它會自動使用該帳戶來對適當的複製通道執行權限檢查。

20.5.4.2.4 用於其他目的的複製

群組複製會啟動和管理用於分散式復原的複製操作。已設定為支援複製的群組成員也可以參與使用者手動啟動的複製操作。例如,您可能想要透過從群組成員複製來建立新的伺服器執行個體作為捐贈者,但您不希望新的伺服器執行個體立即加入群組,或者可能永遠不加入。

在所有支援複製的版本中,您都可以手動啟動涉及已停止群組複製的群組成員的複製操作。請注意,由於複製要求捐贈者和接收者上的活動外掛程式必須相符,因此,即使您不打算讓該伺服器執行個體加入群組,群組複製外掛程式也必須安裝在另一個伺服器執行個體上且處於啟用狀態。您可以透過發出此陳述式來安裝外掛程式

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

如果操作涉及執行群組複製的群組成員,則您可以手動啟動複製操作,前提是該複製操作不會移除和取代接收者上的資料。因此,如果群組複製正在執行,則啟動複製操作的陳述式必須包含 DATA DIRECTORY 子句。