群組複寫使用分散式復原程序,在將群組成員加入群組時同步它們。分散式復原包含使用名為 group_replication_recovery
的複寫通道,將交易從捐贈者的二進位記錄檔傳輸到加入的成員。因此,您必須設定具有正確權限的複寫使用者,以便群組複寫可以建立直接的成員對成員複寫通道。如果已設定群組成員支援在分散式復原中使用的遠端複製作業,則此複寫使用者也會在捐贈者上用作複製使用者,並且也需要此角色的正確權限。如需分散式復原的完整說明,請參閱章節 20.5.4,「分散式復原」。
每個群組成員都必須使用相同的複寫使用者進行分散式復原。建立用於分散式復原的複寫使用者的程序可以擷取在二進位記錄檔中,然後您可以依賴分散式復原來複寫用於建立使用者的陳述式。或者,您可以在建立複寫使用者之前停用二進位記錄,然後在每個成員上手動建立使用者,例如,如果您想要避免將變更傳播到其他伺服器執行個體。如果您這樣做,請確保在設定使用者後重新啟用二進位記錄。
如果您的群組的分散式復原連線使用 SSL,則必須在加入的成員連線到捐贈者之前,在每個伺服器上建立複寫使用者。如需設定 SSL 進行分散式復原連線並建立需要 SSL 的複寫使用者的指示,請參閱章節 20.6.3,「保護分散式復原連線」
預設情況下,在 MySQL 8 中建立的使用者會使用章節 8.4.1.1,「快取 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,「分散式復原的複製」)。此權限是成員在分散式復原的複製作業中擔任捐贈者所必需的權限。如果 MySQL 通訊堆疊用於複製群組,則需要
GROUP_REPLICATION_STREAM
權限(請參閱第 20.6.1 節「通訊堆疊以進行連線安全管理」)。使用者帳戶必須具有此權限,才能使用 MySQL 通訊堆疊建立和維護群組複製的連線。
在此範例中,顯示使用者
rpl_user
,其密碼為password
。設定伺服器時,請使用適當的使用者名稱和密碼。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';