文件首頁
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.8.1 在群組中結合不同的成員版本

群組複寫會根據與群組複寫外掛程式捆綁在一起的 MySQL 伺服器版本進行版本控制。例如,如果成員正在執行 MySQL 8.4.0,則該成員是群組複寫外掛程式的版本。若要檢查群組成員上的 MySQL 伺服器版本,請執行

SELECT MEMBER_HOST,MEMBER_PORT,MEMBER_VERSION FROM performance_schema.replication_group_members;
+-------------+-------------+----------------+
| member_host | member_port | member_version |
+-------------+-------------+----------------+
| example.com |	   3306     |   8.4.0	     |
+-------------+-------------+----------------+

如需了解 MySQL 伺服器版本並選取版本的相關指南,請參閱第 2.1.2 節,「要安裝的 MySQL 版本和散佈」

為了獲得最佳的相容性和效能,群組的所有成員都應執行相同版本的 MySQL 伺服器,因此也執行相同版本的群組複寫。但是,在您升級線上群組的過程中,為了最大化可用性,您可能需要同時執行不同 MySQL 伺服器版本的成員。根據 MySQL 版本之間所做的變更,您可能會在這種情況下遇到不相容的問題。例如,如果主要版本之間已棄用某項功能,則在群組中結合版本可能會導致依賴已棄用功能的成員失敗。相反地,當群組中存在執行較舊 MySQL 版本的讀寫成員時,寫入執行較新 MySQL 版本的成員可能會導致缺少較新版本中引入之功能的成員發生問題。

為了防止這些問題,群組複寫包含相容性原則,讓您可以安全地在同一個群組中結合執行不同 MySQL 版本的成員。成員會套用這些原則,以決定要正常加入群組、以唯讀模式加入群組,還是不加入群組,具體取決於哪種選擇會導致加入成員和群組現有成員的安全運作。在升級情境中,每個伺服器都必須離開群組、升級,然後使用新的伺服器版本重新加入群組。此時,成員會套用其新伺服器版本的原則,這些原則可能與最初加入群組時套用的原則不同。

身為管理員,您可以透過適當地設定伺服器並發出 START GROUP_REPLICATION 陳述式,來指示任何伺服器嘗試加入任何群組。是否加入群組或不加入群組,或以唯讀模式加入群組的決定,是由加入成員在您嘗試將其新增至群組後自行做出並實作的。加入成員會接收目前群組成員的 MySQL 伺服器版本資訊、評估其自身與這些成員的相容性,並套用其自身 MySQL 伺服器版本中使用的原則 (而非現有成員使用的原則),以決定其是否相容。

加入成員在嘗試加入群組時所套用的相容性原則如下

  • 如果成員執行的 MySQL 伺服器版本與現有群組成員所執行的最低版本相同,則該成員會正常加入群組。

  • 如果成員執行的 MySQL 伺服器版本高於現有群組成員所執行的最低版本,則該成員會加入群組,但保持在唯讀模式。只有在群組以多主機模式執行時,此行為才會有所不同,因為在單主機模式中執行的群組中,無論如何,新加入的成員預設都是唯讀的。

在檢查相容性時,成員會考慮軟體的整個 major.minor.release 版本。

在成員使用不同 MySQL Server 版本的 多主模式群組 中,Group Replication 會自動管理成員的讀寫和唯讀狀態。如果成員離開群組,則執行目前最低版本的成員會自動設定為讀寫模式。當您使用 group_replication_switch_to_multi_primary_mode() 函式,將以單主模式執行的群組變更為以多主模式執行時,Group Replication 會自動將成員設定為正確的模式。如果成員執行的 MySQL Server 版本高於群組中存在的最低版本,則會自動將成員置於唯讀模式,而執行最低版本的成員則會置於讀寫模式。