文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 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 參考手冊  /  ...  /  分散式復原的複製

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 子句。