文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 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.2 變更群組模式

本節說明如何變更群組執行的模式,無論是單一主機還是多主機。用於變更群組模式的函數可以在任何成員上執行。

變更為單一主機模式

使用 group_replication_switch_to_single_primary_mode() 函數,將以多主機模式執行的群組變更為單一主機模式,方法是發出

SELECT group_replication_switch_to_single_primary_mode()

當您變更為單一主機模式時,也會在所有群組成員上停用嚴格一致性檢查,這是單一主機模式的必要條件 (group_replication_enforce_update_everywhere_checks=OFF)。

如果沒有傳入字串,則在產生的單一主機群組中,新主機的選舉會遵循第 20.1.3.1 節「單一主機模式」中所述的選舉原則。若要覆寫選舉程序並將多主機群組的特定成員設定為程序中的新主機,請取得成員的 server_uuid 並將其傳遞至 group_replication_switch_to_single_primary_mode()。例如,發出

SELECT group_replication_switch_to_single_primary_mode(member_uuid);

如果您在執行 MySQL 伺服器 8.0.17 版的成員上叫用函數,且所有成員都執行 MySQL 伺服器 8.0.17 版或更高版本,您只能指定執行群組中最低 MySQL 伺服器版本 (基於修補程式版本) 的新主機成員。套用此保護措施以確保群組維持與新函數的相容性。如果您未指定新的主機成員,選舉程序會考量群組成員的修補程式版本。

如果任何成員執行的 MySQL 伺服器版本介於 MySQL 8.0.13 和 MySQL 8.0.16 之間,則不會對群組強制執行此保護措施,您可以指定任何新的主機成員,但建議選取執行群組中最低 MySQL 伺服器版本的主機。如果您未指定新的主機成員,選舉程序只會考量群組成員的主要版本。

在動作執行時,您可以透過發出以下命令來檢查其進度

SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------------+----------------+----------------+
| event_name                                                                 | work_completed | work_estimated |
+----------------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Primary Switch: waiting for pending transactions to finish |              4 |             20 |
+----------------------------------------------------------------------------+----------------+----------------+
變更為多主機模式

使用 group_replication_switch_to_multi_primary_mode() 函數,將以單一主機模式執行的群組變更為多主機模式,方法是發出

SELECT group_replication_switch_to_multi_primary_mode()

在進行一些協調的群組操作以確保您的資料的安全性和一致性之後,屬於群組的所有成員都會成為主機。

當您將在單一主機模式下執行的群組變更為在多主機模式下執行時,如果成員執行 MySQL 8.0.17 或更高版本,且其執行的 MySQL 伺服器版本高於群組中存在的最低版本,則會自動置於唯讀模式。執行 MySQL 8.0.16 或更低版本的成員不會執行此檢查,且一律置於讀寫模式。

在動作執行時,您可以透過發出以下命令來檢查其進度

SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------+----------------+----------------+
| event_name                                                           | work_completed | work_estimated |
+----------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Multi-primary Switch: applying buffered transactions |              0 |              1 |
+----------------------------------------------------------------------+----------------+----------------+