文件首頁
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.1.1 變更主要伺服器

本節說明如何使用 group_replication_set_as_primary() 函式變更單一主要群組的哪個成員是主要伺服器,此函式可以在群組的任何成員上執行。完成此動作後,目前的主要伺服器會變成唯讀的次要伺服器,而指定的群組成員會變成讀寫主要伺服器;這會取代 第 20.1.3.1 節「單主機模式」中所述的正常主要伺服器選取程序。

如果現有主要成員上除了群組複寫通道之外,還執行標準的來源至複本複寫通道,您必須先停止該複寫通道,才能變更主要成員。您可以使用效能結構描述 replication_group_members 資料表中的 MEMBER_ROLE 資料行識別目前的主要伺服器。

如果所有成員執行的 MySQL 伺服器版本不相同,您只能指定執行群組中最低 MySQL 伺服器版本的新主要成員。此安全措施的目的是確保群組與新函式維持相容性。

群組正在等待的任何未提交交易必須先提交、復原或終止,才能完成作業。您可以使用函式指定 0 秒 (立即) 到 3600 秒 (60 分鐘) 的逾時時間,用於在您使用函式時正在執行的交易。逾時時間沒有預設設定,因此如果您未設定,則等待時間沒有上限,且新的交易可以在該時間內開始。

當逾時到期時,對於尚未達到其提交階段的任何交易,用戶端工作階段會中斷連線,因此交易不會繼續進行。達到其提交階段的交易可以完成。當您設定逾時時間時,它也會防止主要伺服器從那一刻起開始新的交易。明確定義的交易 (使用 START TRANSACTIONBEGIN 陳述式) 即使不修改任何資料,也受限於逾時、中斷連線和傳入交易封鎖。為了允許在函式運作時檢查主要伺服器,允許繼續執行一致性規則下允許的查詢中所列出的不修改資料的單一陳述式。

輸入您要成為群組新主要伺服器的成員之 server_uuid,方法是發出下列陳述式

SELECT group_replication_set_as_primary(member_uuid);

您可以新增逾時時間,如下所示

SELECT group_replication_set_as_primary(‘00371d66-3c45-11ea-804b-080027337932’, 300)

若要檢查逾時時間的狀態,請使用效能結構描述 threads 資料表中的 PROCESSLIST_INFO 資料行,如下所示

mysql> SELECT NAME, PROCESSLIST_INFO FROM performance_schema.threads 
    -> WHERE NAME="thread/group_rpl/THD_transaction_monitor"\G
*************************** 1. row ***************************
            NAME: thread/group_rpl/THD_transaction_monitor
PROCESSLIST_INFO: Group replication transaction monitor: Stopped client connections

狀態會顯示交易監控執行緒的建立時間、停止新的交易時間、具有未提交交易的用戶端連線的中斷連線時間,以及最後,處理完成且允許再次進行新交易的時間。

當動作執行時,您可以藉由發出此處顯示的陳述式來檢查其進度

mysql> SELECT event_name, work_completed, work_estimated 
    -> FROM performance_schema.events_stages_current 
    -> WHERE event_name LIKE "%stage/group_rpl%"\G
*************************** 1. row ***************************
    EVENT_NAME: stage/group_rpl/Primary Election: Waiting for members to turn on super_read_only
WORK_COMPLETED: 3
WORK_ESTIMATED: 5