群組複製使用分散式復原程序,在將群組成員加入群組時同步這些成員。分散式復原牽涉到使用名為 group_replication_recovery
的複寫通道,將交易從捐贈者的二進位日誌傳輸到加入的成員。因此,您必須設定具有正確權限的複寫使用者,讓群組複製可以建立直接成員對成員的複寫通道。如果已設定群組成員以支援將遠端複製操作作為分散式復原的一部分,則此複寫使用者也會在捐贈者上作為複製使用者使用,並且也需要此角色的正確權限。如需分散式復原的完整說明,請參閱第 20.5.4 節,「分散式復原」。
每個群組成員都必須使用相同的複寫使用者進行分散式復原。建立用於分散式復原的複寫使用者的程序可以記錄在二進位日誌中,然後您可以依靠分散式復原來複製用於建立使用者的陳述式。或者,您可以在建立複寫使用者之前停用二進位記錄,然後在每個成員上手動建立使用者,例如,如果您想要避免將變更傳播到其他伺服器執行個體。如果執行此動作,請確保在設定使用者之後重新啟用二進位記錄。
如果群組的分散式復原連線使用 SSL,則必須在加入的成員連線到捐贈者之前,在每個伺服器上建立複寫使用者。如需設定分散式復原連線的 SSL 並建立需要 SSL 的複寫使用者的指示,請參閱第 20.6.3 節,「保護分散式復原連線」
依預設,在 MySQL 8 中建立的使用者會使用第 8.4.1.2 節,「快取 SHA-2 可外掛驗證」。如果用於分散式復原的複寫使用者使用快取 SHA-2 驗證外掛程式,而且您沒有針對分散式復原連線使用 SSL,則會使用 RSA 金鑰組進行密碼交換。您可以將複寫使用者的公開金鑰複製到加入的成員,或設定捐贈者在要求時提供公開金鑰。如需執行此動作的指示,請參閱第 20.6.3.1 節,「用於分散式復原的安全使用者憑證」。
若要建立用於分散式復原的複寫使用者,請依照下列步驟執行
啟動 MySQL 伺服器執行個體,然後將用戶端連線到該執行個體。
如果您想要停用二進位記錄,以便在每個執行個體上個別建立複寫使用者,請發出下列陳述式來執行此動作
mysql> SET SQL_LOG_BIN=0;
建立具有下列權限的 MySQL 使用者
REPLICATION SLAVE
,這是建立與捐贈者的分散式復原連線以擷取資料時所必需的。CONNECTION_ADMIN
,這可確保如果其中一個相關伺服器置於離線模式,則不會終止群組複製連線。BACKUP_ADMIN
,如果複寫群組中的伺服器設定為支援複製 (請參閱第 20.5.4.2 節,「用於分散式復原的複製」)。成員需要此權限才能在分散式復原的複製操作中擔任捐贈者。GROUP_REPLICATION_STREAM
,如果複寫群組使用 MySQL 通訊堆疊 (請參閱第 20.6.1 節,「用於連線安全管理的通訊堆疊」)。使用者帳戶需要此權限,才能使用 MySQL 通訊堆疊建立和維護群組複製的連線。
在此範例中,會顯示具有密碼
password
的使用者rpl_user
。在設定伺服器時,請使用適當的使用者名稱和密碼mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; mysql> GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%'; mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%'; mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%'; mysql> FLUSH PRIVILEGES;
如果您停用了二進位記錄,請在建立使用者後立即發出下列陳述式再次啟用
mysql> SET SQL_LOG_BIN=1;
當您建立複寫使用者後,必須將使用者憑證提供給伺服器,以便用於分散式復原。您可以使用
CHANGE REPLICATION SOURCE TO
陳述式,將使用者憑證設定為group_replication_recovery
通道的憑證。或者,您也可以在START GROUP_REPLICATION
陳述式中指定用於分散式復原的使用者憑證。使用
CHANGE REPLICATION SOURCE TO
設定的使用者憑證,會以純文字形式儲存在伺服器上的複寫元數據儲存庫中。每當群組複寫啟動時都會應用這些憑證,包括當group_replication_start_on_boot
系統變數設定為ON
時的自動啟動。在
START GROUP_REPLICATION
中指定的使用者憑證只會儲存在記憶體中,並且會被STOP GROUP_REPLICATION
陳述式或伺服器關機移除。您必須發出START GROUP_REPLICATION
陳述式以再次提供憑證,因此您無法使用這些憑證自動啟動群組複寫。這種指定使用者憑證的方法有助於保護群組複寫伺服器免受未經授權的存取。
有關每種提供使用者憑證方法的安全性影響的更多資訊,請參閱第 20.6.3.1.3 節「安全地提供複寫使用者憑證」。如果您選擇使用
CHANGE REPLICATION SOURCE TO
陳述式來提供使用者憑證,請立即在伺服器實例上發出以下陳述式,並將rpl_user
和password
替換為建立使用者時使用的值mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', -> SOURCE_PASSWORD='password' -> FOR CHANNEL 'group_replication_recovery';