當您升級參與複寫拓撲的伺服器時,您需要考量每個伺服器在拓撲中的角色,並注意複寫特定的問題。如需升級 MySQL 伺服器執行個體的一般資訊和指示,請參閱第 3 章,升級 MySQL。
如第 19.5.2 節,「MySQL 版本之間的複寫相容性」中所述,MySQL 支援從較舊來源複寫到較新複本的版本組合,其中我們支援從來源版本升級到複本版本,如第 1.3 節,「MySQL 版本:創新與 LTS」和第 3.2 節,「升級路徑」中所述,但不支援從執行較新版本的來源複寫到執行較舊版本的複本。較舊版本的複本可能不具備處理較新版本來源可以處理的交易所需的功能。因此,您必須先將複寫拓撲中的所有複本升級到目標 MySQL 伺服器版本,然後再將來源伺服器升級到目標版本。這樣一來,您永遠不會遇到仍然處於較舊版本的複本嘗試處理來自較新版本的來源的交易的情況。
在有多個來源(多來源複寫)的複寫拓撲中,不支援使用兩個以上 MySQL 伺服器版本,無論來源或複本 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 伺服器執行個體進行升級
先升級複本。在每個複本實例上
執行第 3.6 節,「升級前的安裝準備」中描述的初步檢查和步驟。
關閉 MySQL 伺服器。
升級 MySQL 伺服器二進制檔或套件。
重新啟動 MySQL 伺服器。
MySQL 伺服器會自動執行整個 MySQL 升級程序,並在升級期間停用二進制日誌記錄。
使用
START REPLICA
重新啟動複寫。
如果有複數層級的複本(複本的複本),請從距離來源最遠的複本開始升級,以由下而上的方式執行升級。
當所有複本都已升級,且只剩下來源時,請將其中一個複本切換為來源。換句話說,停止對來源的用戶端更新,等待至少一個複本套用所有變更,重新配置複寫拓撲,使該複本成為來源,而將來源留在複寫拓撲之外。根據單一伺服器的程序升級舊來源,然後再將其重新插入拓撲中。
如果需要在複寫拓撲中降級伺服器,則必須先降級來源,然後才能降級複本。在複本上,您必須確保二進制日誌和中繼日誌已完全處理,並在繼續降級之前清除它們。
滾動降級程序
停止更新。
等待複本接收所有更新。不必等待它們套用所有變更。如果它們尚未套用所有變更,請保持其套用程式執行,以便它們可以在背景處理接收到的交易。
按照單一伺服器降級的說明降級來源伺服器。
將降級後的來源伺服器重新插入拓撲中。
再次允許更新。
等待所有複本套用來自先前主要伺服器的所有剩餘交易。
對於每個複本,將複本從拓撲中取出,等待它套用其所有中繼日誌,按照單一伺服器降級的說明降級它,然後將其重新插入拓撲中。如果有複數層級的複本(複本的複本),則從最靠近來源伺服器的複本開始,由上而下進行降級。