選擇下列其中一種方法來升級群組複製群組
若群組中仍有舊版本的伺服器,則不支援執行較新版本的伺服器產生工作負載至群組。換句話說,較新版本的伺服器只能以次要伺服器的身分加入群組。在此方法中,只有一個群組,且每個伺服器執行個體都會從群組中移除、升級,然後重新加入群組。
此方法非常適合單主機群組。當群組在單主機模式中運作時,如果您需要主要伺服器在整個過程中保持不變 (除了它本身正在升級時),則它應該是最後一個要升級的成員。除非主要伺服器在群組中執行最低的 MySQL 伺服器版本,否則它無法維持為主要伺服器。升級主要伺服器之後,您可以使用 group_replication_set_as_primary()
函數重新將其指定為主要伺服器。如果您不介意哪個成員是主要伺服器,則可以按照任何順序升級成員。群組會從執行最低 MySQL 伺服器版本的成員中,在必要時選出新的主要伺服器,並遵循 第 20.1.3.1 節,〈單主機模式〉中所述的選舉原則。
對於在多主機模式中運作的群組,在群組內滾動升級期間,主要伺服器的數量會減少,導致寫入可用性降低。這是因為如果成員在執行比現有群組成員執行的最低版本更高的 MySQL 伺服器版本時加入群組,則會自動保持在唯讀模式 (super_read_only=ON
)。
如需群組中的版本相容性,以及這在升級過程中如何影響群組行為的完整資訊,請參閱第 20.8.1 節,〈在群組中組合不同的成員版本〉。
在此方法中,您會從群組中移除成員、升級它們,然後使用升級的成員建立第二個群組。對於在多主機模式中運作的群組,在此過程中,主要伺服器的數量會減少,導致寫入可用性降低。這不會影響在單主機模式中運作的群組。
因為在您升級成員時,執行較舊版本的群組會保持在線上,所以您需要執行較新版本的群組來趕上在成員升級時執行的任何交易。因此,新群組中的其中一個伺服器會設定為舊群組中主要伺服器的複本。這可確保新群組趕上舊群組。由於此方法依賴用於將資料從一個群組複寫到另一個群組的非同步複製通道,因此在與非同步來源複本複製相同的假設與需求下支援此方法,請參閱第 19 章,複製。對於在單主機模式中運作的群組,與舊群組的非同步複製連線必須將資料傳送至新群組中的主要伺服器,對於多主機群組,非同步複製通道可以連線至任何主要伺服器。
此程序為
從執行較舊伺服器版本的原始群組中逐一移除成員,請參閱第 20.8.3.2 節,〈升級群組複製成員〉
升級成員上執行的伺服器版本,請參閱第 3 章,升級 MySQL。您可以遵循就地升級或佈建方法來升級。
使用升級的成員建立新群組,請參閱第 20 章,群組複製。在此情況下,您需要在每個成員上設定新的群組名稱 (因為舊群組仍在執行且使用舊名稱)、引導初始升級的成員,然後新增其餘升級的成員。
在舊群組和新群組之間設定非同步複製通道,請參閱第 19.1.3.4 節,〈使用 GTID 設定複製〉。將較舊的主要伺服器設定為非同步複製來源伺服器,並將新群組成員設定為以 GTID 為基礎的複本。
在您可以將您的應用程式重新導向至新群組之前,您必須確保新群組具有適當數量的成員,例如,以便群組可以處理成員的失敗。發出 SELECT * FROM performance_schema.replication_group_members
並比較初始群組大小和新群組大小。等待直到所有來自舊群組的資料傳播到新群組,然後捨棄非同步複製連線並升級任何遺失的成員。
在此方法中,您會建立第二個群組,其中包含執行較新版本的成員,並將舊群組中遺失的資料複寫到新群組。這假設您有足夠的伺服器來同時執行兩個群組。由於在此過程中,主節點的數量不會減少,因此對於以多主節點模式運作的群組而言,寫入可用性不會降低。這使得滾動複製升級非常適合以多主節點模式運作的群組。這不會影響以單主節點模式運作的群組。
由於當您在新群組中佈建成員時,執行舊版本的群組仍處於線上狀態,因此您需要執行較新版本的群組來趕上在佈建成員時執行的任何交易。因此,新群組中的其中一個伺服器會設定為舊群組中主節點的複本。這可確保新群組趕上舊群組。由於此方法依賴非同步複寫通道,該通道用於將資料從一個群組複寫到另一個群組,因此它在與非同步來源-複本複寫相同的假設和要求下受到支援,請參閱第 19 章,複寫。對於以單主節點模式運作的群組,與舊群組的非同步複寫連線必須將資料傳送到新群組中的主節點,對於多主節點群組,非同步複寫通道可以連線到任何主節點。
此程序為
部署適當數量的成員,以便執行較新版本的群組可以處理成員的故障
從群組的成員中備份現有資料
使用舊成員的備份來佈建新群組的成員,請參閱第 20.8.3.4 節,「使用 mysqlbackup 進行群組複寫升級」了解其中一種方法。
注意您必須將備份還原到與備份來源相同的 MySQL 版本,然後執行就地升級。如需說明,請參閱第 3 章,升級 MySQL。
使用升級的成員建立新群組,請參閱第 20 章,群組複製。在此情況下,您需要在每個成員上設定新的群組名稱 (因為舊群組仍在執行且使用舊名稱)、引導初始升級的成員,然後新增其餘升級的成員。
在舊群組和新群組之間設定非同步複製通道,請參閱第 19.1.3.4 節,〈使用 GTID 設定複製〉。將較舊的主要伺服器設定為非同步複製來源伺服器,並將新群組成員設定為以 GTID 為基礎的複本。
一旦新群組中遺失的持續資料小到足以快速傳輸,您必須將寫入作業重新導向到新群組。等待舊群組的所有資料傳播到新群組後,再刪除非同步複寫連線。