當您升級參與複製拓撲的伺服器時,您需要考慮每個伺服器在拓撲中的角色,並留意特定於複製的問題。有關升級 MySQL 伺服器執行個體的一般資訊和說明,請參閱第 3 章,升級 MySQL。
如第 19.5.2 節「MySQL 版本間的複寫相容性」中所述,MySQL 支援從較舊的來源複寫到較新的副本,其版本組合為我們支援從來源版本升級到副本版本的組合,如第 1.3 節「MySQL 版本:創新與 LTS」和第 3.2 節「升級路徑」所述;但不支援從執行較新版本的來源複寫到執行較舊版本的副本。較舊版本的副本可能不具備處理較新版本來源可處理的交易所需的能力。因此,您必須先將複寫拓撲中的所有副本升級到目標 MySQL Server 版本,然後才能將來源伺服器升級到目標版本。如此一來,您將永遠不會遇到副本仍處於較舊版本,卻試圖處理來自較新版本來源的交易的情況。
在具有多個來源的複寫拓撲(多來源複寫)中,不支援使用兩個以上的 MySQL Server 版本,無論來源或副本 MySQL 伺服器的數量為何。例如,您不能在這樣的設定中同時使用 MySQL X.Y.1、MySQL X.Y.2 和 MySQL X.Y.3,儘管您可以將其中任意兩個版本一起使用。
當從尚未升級的較舊版本的來源複寫到已升級的較新版本的副本時,可能會遇到複寫困難。如果來源使用在安裝於副本的較新版本中不再支援的陳述式或依賴行為,就可能發生這種情況。您可以使用 MySQL Shell 升級檢查工具 util.checkForServerUpgrade()
來檢查 MySQL 8.0 伺服器實例是否升級到 MySQL 8.4 版本。此工具會識別已知可能導致升級問題的設定和儲存資料,包括較新版本中不再提供的功能和行為。請參閱升級檢查工具以取得有關升級檢查工具的資訊。
若要升級複寫拓撲,請依照第 3 章「升級 MySQL」中的指示,針對每個個別的 MySQL Server 實例執行,使用此整體程序
先升級副本。在每個副本實例上
執行第 3.6 節「準備安裝以進行升級」中所述的初步檢查和步驟。
關閉 MySQL Server。
升級 MySQL Server 二進位檔或套件。
重新啟動 MySQL Server。
MySQL Server 會自動執行整個 MySQL 升級程序,在升級期間停用二進位記錄。
使用
START REPLICA
重新啟動複寫。
如果有複數層次的副本(副本的副本),請從距離來源最遠的副本開始升級,以由下而上的方式執行升級。
當所有副本都已升級且只剩下來源時,請切換到其中一個副本。換句話說,停止來源上的用戶端更新,等待至少一個副本套用所有變更,重新設定複寫拓撲,讓副本成為來源,並將來源留在複寫拓撲之外。依照單一伺服器的程序升級舊來源,然後將其重新插入拓撲中。
如果您需要降級複寫拓撲中的伺服器,則必須先降級來源,然後才能降級副本。在副本上,您必須確保已完全處理二進位記錄和中繼記錄,並在繼續降級之前清除它們。
滾動降級程序
停止更新。
等待副本接收所有更新。沒有必要等待它們套用所有變更。如果它們尚未套用所有變更,請讓其套用程式執行,以便它們可以在背景中處理接收到的交易。
依照單一伺服器降級的指示降級來源伺服器。
將降級後的來源伺服器再次插入拓撲中。
再次允許更新。
等待直到所有副本都套用先前主要來源的所有剩餘交易。
對於每個副本,將該副本從拓撲中取出,等待其套用所有中繼記錄,依照單一伺服器降級的指示降級它,然後將其重新插入拓撲中。如果有多個層次的副本(副本的副本),則從最接近來源伺服器的副本開始,由上而下進行降級。