RDS MySQL提供了兩種方式升級資料庫版本,您可以通過控制台直接升級資料庫,也可以新購一個高版本MySQL執行個體,通過DTS資料移轉任務將原執行個體資料移轉至新執行個體中,實現資料庫版本的間接升級。
RDS MySQL不支援從控制台直接降低資料庫版本。您可以新購低版本的RDS執行個體,使用DTS資料轉送工具將高版本執行個體遷移至低版本執行個體,驗證無誤後釋放高版本執行個體。
選擇升級方式
方式一:通過控制台直接升級資料庫版本與方式二:通過資料移轉DTS升級資料庫版本支援MySQL 5.5升級至5.6、5.6升級至5.7、5.7升級至8.0、8.0升級至8.4。在升級資料庫前,您需要通過以下內容選擇合適的升級方式:
-
執行個體規格符合以下四種類型,且執行個體配置滿足對應類型的要求,建議通過方式一:通過控制台直接升級資料庫版本。
說明-
Serverless執行個體不支援通過控制台直接升級,建議使用方式二:通過資料移轉DTS升級資料庫版本。
叢集系列(ESSD雲端硬碟、高效能雲端硬碟)
高可用系列(ESSD雲端硬碟、高效能雲端硬碟)
-
資料庫代理限制(如有):5.7升級至8.0時,資料庫代理小版本不低於1.13.41;8.0升級至8.4時,資料庫代理小版本不低於2.25.11。
-
執行個體狀態限制:執行個體狀態為執行中,主備節點狀態健康且無延遲。
-
引擎節流:資料庫及所有庫表都為InnoDB引擎。
-
不屬於已下線的歷史規格。
高可用系列(高效能本地碟)
-
加密限制:未開啟TDE加密功能(TDE開啟後不支援關閉,如已開啟TDE,請選擇方式二:通過資料移轉DTS升級資料庫版本進行升級)。
-
資料庫代理限制(如有):5.7升級至8.0時,資料庫代理小版本不低於1.13.41;8.0升級至8.4時,資料庫代理小版本不低於2.25.11。
-
執行個體狀態限制:執行個體狀態為執行中,主備節點狀態健康且無延遲。
-
表數量限制:不超過100萬張。
-
引擎節流:資料庫及所有庫表都為InnoDB引擎。
-
規格限制:升級後的資料庫版本必須支援原執行個體規格(含主執行個體和唯讀執行個體),且不屬於已下線的歷史規格,詳情請參見RDS MySQL主執行個體規格。
基礎系列(ESSD雲端硬碟、高效能雲端硬碟)
-
執行個體狀態限制:執行個體狀態為執行中。
-
引擎節流:資料庫及所有庫表都為InnoDB引擎。
-
不屬於已下線的歷史規格。
-
-
執行個體規格不符合以上四種類型或已經開啟TDE加密功能,請使用方式二:通過資料移轉DTS升級資料庫版本。
-
執行個體規格符合以上四種類型,但執行個體配置不滿足相關要求,您可以參考下表方案修改配置後,使用方式一:通過控制台直接升級資料庫版本,或使用方式二:通過資料移轉DTS升級資料庫版本。
問題
解決方案
執行個體處於其它狀態(如重啟中)
等待任務結束後再發起資料庫版本升級任務。
高可用系列高效能本地碟執行個體表數量超過100萬張
在升級前清理冗餘表。
部分庫表未使用InnoDB引擎
使用
ALTER TABLE <表名> engine=InnoDB;命令轉換為InnoDB引擎。執行個體規格為歷史規格
進行規格升級後再升級資料庫版本,更多資訊請參見變更配置。
資料庫代理小版本不符合要求
升級資料庫小版本至1.13.41及以上,詳情請參見升級資料庫代理核心小版本。
執行個體儲存類型為SSD雲端硬碟
將SSD雲端硬碟升級為ESSD雲端硬碟後,再升級資料庫版本。
其它引擎升級資料庫版本請參見:
方式一:通過控制台直接升級資料庫版本
準備工作
-
瞭解新舊版本差異與優勢
-
5.6升級至5.7:功能差異請參見附錄六:MySQL 5.7和MySQL 5.6版本功能差異列表,升級優勢請參見附錄三:MySQL 5.6升級MySQL 5.7的優勢。
-
5.7升級至8.0:功能差異請參見附錄五:MySQL 8.0和MySQL 5.7版本功能差異列表,升級優勢請參見附錄二:MySQL 5.7升級MySQL 8.0的優勢。
-
8.0升級至8.4:功能差異請參見附錄四:MySQL 8.4和MySQL 8.0版本功能差異列表,升級優勢請參見附錄一:MySQL 8.0升級MySQL 8.4的優勢。
-
-
瞭解升級過程與影響
-
版本跨度限制:不支援跨大版本升級,且預設升級為目標大版本中最新的小版本。例如:MySQL 5.6無法直接升級至MySQL 8.0,需要先升級到MySQL 5.7,再升級到MySQL 8.0。
-
降級限制:不支援從控制台直接降級。您可以新購低版本的RDS執行個體,使用DTS資料轉送工具將高版本執行個體遷移至低版本執行個體,驗證無誤後釋放高版本執行個體。
-
高效能本地碟執行個體升級過程:系統先升級備執行個體,完成後進行主備切換,再升級主執行個體。升級過程將造成15秒的業務中斷,請您盡量在業務低峰期執行升級操作。
-
ESSD雲端硬碟執行個體升級過程:系統先建立新節點,並在新節點上執行升級,在新節點升級完成後鏈路將切換至新節點。升級過程中,將造成15秒的業務中斷,請您盡量在業務低峰期執行升級操作。
-
-
檢查執行個體與資料庫配置
-
檢查保留關鍵字:查看自訂函數,確保函數中沒有使用保留關鍵字。
-
檢查全量備份:檢查最近一周是否有全量資料備份的成功記錄,必要時請進行一次全量資料備份。
-
檢查自動重連機制:在資料庫升級過程中,RDS會進行執行個體切換,請您盡量在業務低峰期執行升級操作,或確保您的應用有自動重連機制。執行個體切換的影響請參見執行個體切換的影響。
-
檢查可用儲存空間:升級前請確保預留充足的磁碟可用空間(建議預留10 GB以上)。
-
調整日誌清理策略:增加本地日誌保留時間長度以及最大儲存空間佔有率。具體操作,請參見修改本地日誌策略。
-
備份執行個體參數:為確保MySQL在新版本中的穩定性和效能,完成MySQL資料庫大版本升級後,RDS不再支援查看和修改部分在高版本廢棄的低版本的參數。在大版本升級前,建議您備份相關參數的修改記錄,以便後續操作和審計。
-
5.6升級至5.7、5.7升級至8.0、8.0升級至8.4情境需要額外檢查以下內容:
5.6升級至5.7
檢查全文索引及版本資訊:低於RDS MySQL 5.6 20221130版本的資料庫在建立全文索引時會將其建立在系統資料表空間上,升級至5.7版本時有機率導致資料表空間損壞。如您小版本較低,請先升級至RDS MySQL 5.6下最新的小版本,然後再升級資料庫大版本,詳情請參見常見問題。
5.7升級至8.0
-
檢查特性相容:如果資料庫中的預存程序、觸發器、視圖或函數中包含MySQL 8.0不支援的特性,請在升級前修改,否則會導致升級失敗。
-
檢查系統資料表依賴:檢查您的業務是否對MySQL 5.7系統資料表(sys、mysql、information_schema、performance_schema庫下的表)有依賴,由於MySQL 5.7中的部分系統資料表升級至8.0後會發生變化(如表被移除、表名變化、表結構變化等),若業務依賴這些發生變化的表,有可能出現錯誤。
-
檢查資料類型相容:RDS MySQL 8.0不再支援部分舊版本資料類型。如果表中欄位含有MySQL 8.0不支援的資料類型,需要在升級前通過
REPAIR TABLE或邏輯匯出+匯入的方式修複。更多資訊請參見準備升級安裝。 -
檢查
comment取值:MySQL 8.0 20221231及之後小版本引入參數loose_upgrade_clear_invalid_comment,該參數取值為ON(預設值)時,在升級過程中會自動清空表、欄位、索引的注釋亂碼,避免升級失敗。因此,您需要在升級前確認資料庫表中的comment取值是否存在亂碼,如果存在,comment將被清空。 -
檢查預存程序:如果資料庫中的預存程序或函數存在亂碼,請在升級前修正,以免導致升級失敗。
-
檢查MySQL 5.5及之前版本的時間類型:如果資料庫中存在MySQL 5.5及之前版本時間類型的表,請先將表重建,再升級為MySQL8.0,以免導致升級失敗。
-
通過以下SQL查詢資料庫執行個體中是否存在MySQL 5.5及之前版本時間類型的表:
# 顯式舊時間類型 SET SESSION show_old_temporals= ON; # 查詢包含舊時間類型的表 SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.columns WHERE COLUMN_TYPE IN ("time /* 5.5 binary format */ ", "timestamp /* 5.5 binary format */", "datetime /* 5.5 binary format */ "); -
當表記憶體在MySQL 5.5及之前版本的時間類型時,可以使用以下命令將表結構重建:
# 重建表 ALTER TABLE <table_name> FORCE;
-
8.0升級至8.4
-
檢查特性相容:MySQL 8.4不再支援組複製(MGR)等部分舊特性。如果執行個體啟用了MGR,需要在升級前停止組複製並清理相關配置,否則無法升級。
-
檢查表、索引及中繼資料相容:檢查執行個體中是否存在MySQL 8.4不相容的儲存引擎、全文索引、discard tablespace、分區表外鍵、過長的視圖列名或外鍵約束,以及SPATIAL或RTREE索引。命中問題時,需要在升級前修改表結構或刪除相關索引,並在升級完成後按需重新建立。此外,使用
FLOAT或DOUBLE欄位作為AUTO_INCREMENT列的表也需要提前修改。 -
檢查執行個體拓撲及升級條件:檢查主備節點健康狀態、複寫延遲、唯讀執行個體及備用唯讀執行個體的數量和規格、執行個體連線類型、未完成任務、目標版本規格和MaxScale版本等是否滿足升級要求。不同執行個體規格的檢查內容不同:本地碟會額外檢查唯讀執行個體拓撲;雲端硬碟會檢查儲存類型和雲環境限制。
-
檢查參數、認證及串連相容:MySQL 8.4移除了部劆8.0參數和認證配置,升級流程會自動過濾或轉換不相容參數。MySQL 8.4同時不再支援TLSv1和TLSv1.1,系統會自動調整服務端
tls_version,但使用舊TLS協議的用戶端仍會在升級後串連失敗,請提前確認用戶端支援TLSv1.2或TLSv1.3。部分認證、許可權和參數預設行為也發生變化,建議確保帳號登入、許可權和業務效能不受影響後升級。
-
-
-
升級前測試與類比
-
文法測試:建議在升級前建立一個高版本RDS執行個體進行文法測試,避免低版本文法或特性在升級高版本後不支援。
-
類比升級:建議在升級前複製原執行個體,先使用複製執行個體進行升級測試,確認各項功能正常後再升級原執行個體。
-
-
升級後注意事項
-
恢複舊版本執行個體:支援使用舊版本雲端硬碟備份恢複舊版本執行個體,高效能本地碟暫不支援。
-
恢複新版本執行個體:舊版本備份組無法用於恢複新版本執行個體,如需進行恢複操作,請使用執行個體升級後產生的備份組。
-
操作方式
根據升級情境選擇升級方式:
|
升級方式 |
升級情境 |
|
進行前置檢查並升級 |
|
|
直接升級 |
|
進行前置檢查並升級
-
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
-
單擊左側導覽列大版本升級,進入升級前置檢查。
-
在選擇升級版本右側的下拉框中,選擇需要升級的版本號碼,單擊創建升級檢查報告,報告詳情請參見大版本升級檢查報告說明。
-
待檢查報告檢測完畢,並確認升級無風險後,切換頁簽至升級實例。
-
在選擇升級版本右側的下拉框中,選擇需要升級的版本號碼,單擊升級實例。
-
在彈出的大版本升級實例中,確認升級的版本,選擇切换时间後,單擊立即升級。
直接升級
方式二:通過資料移轉DTS升級資料庫版本
對於不支援通過控制台直接升級的執行個體,您可以建立一個高資料庫版本的新執行個體,通過DTS資料移轉任務將原執行個體資料移轉至新執行個體中,實現資料庫的間接升級,相關步驟如下:
舉例:您有一個開啟了TDE功能的MySQL 5.7執行個體,其不能通過控制台直接升級資料庫版本。此時,您可以建立一個資料庫版本為MySQL 8.0的新執行個體,然後將原執行個體中的資料移轉至新執行個體,最後釋放原執行個體,實現資料庫版本的間接升級。
跨版本資料移轉後,請先測試相容性並觀察一段時間,確認正常後,再釋放原執行個體。
附錄一:MySQL 8.0升級MySQL 8.4的優勢
-
增強長期穩定性。MySQL 8.4是LTS版本,適合生產環境長期使用,後續8.4.x以穩定性、安全修複和相容維護為主。
-
增強認證能力。支援WebAuthn/FIDO2認證,Enterprise Edition可使用安全密鑰、生物識別技術等認證方式;Windows上支援SASL LDAP/GSSAPI/Kerberos認證。
-
增強GTID能力。支援Tagged GTID,可使用
UUID:TAG:NUMBER區分不同業務域、管理操作或資料操作,並提供TRANSACTION_GTID_TAG許可權控制。 -
改進複製可用性。多線程applier支援
SQL_AFTER_GTIDS,副本追趕指定GTID集時可以繼續利用並行複製能力。 -
增強relay log恢複能力。支援清理relay log尾部未完成事務及相關殘留檔案,降低異常宕機後relay log不一致帶來的恢複風險。
-
增強Group Replication營運能力。8.4 LTS系列內支援跨版本群組成員和原地降級,切主流程對DDL/DCL的等待更完整,並支援single-primary模式下的認證資訊預清理,降低記憶體和切主風險。
-
改進統計資訊能力。Histogram支援自動或手動更新控制,有助於提升最佳化器統計資訊維護的可控性。
-
增強執行計畫診斷能力。
EXPLAIN FORMAT=JSON支援格式版本選擇,支援EXPLAIN FORMAT=JSON INTO寫入使用者變數,並支援EXPLAIN FOR SCHEMA和FOR DATABASE,便於診斷跨schema的SQL。 -
增強TLS認證校正能力。支援更嚴格的TLS認證校正,提高加密串連安全性。
-
改進Clone能力。同一major或minor系列內clone不再要求point release完全一致,便於8.4.x之間做執行個體初始化、恢複和擴容。
-
增強審計和防火牆能力。Enterprise Firewall支援周期性重載cache,也支援自訂內部對象schema,營運靈活性更高。
-
改進密鑰管理遷移能力。支援從keyring component遷移到keyring plugin,提升加密能力遷移和相容情境的靈活性。
-
改進升級可觀測性。資料目錄維護JSON格式的
mysql_upgrade_history,記錄安裝和升級歷史,便於審計和問題排查。 -
提升SQL和最佳化器演化能力。新增
TABLESAMPLE、QUALIFY、PARALLEL等關鍵字,為後續SQL能力和最佳化器擴充提供基礎。
附錄二:MySQL 5.7升級MySQL 8.0的優勢
-
提高了安全性,並在帳號管理中實現了更大的靈活性。
-
支援資源群組的建立和管理。
-
InnoDB儲存引擎的功能增強。
-
新增字元集、資料類型、文法、新型備份鎖、optimizer_switch標誌等支援。
-
JSON、XML增強。
-
Optimizer最佳化器功能增強。
-
複製效能增強。
-
支援建立多值索引、派生條件下推最佳化。
-
支援讀取MySQL授權表。
-
支援資源分派控制。
附錄三:MySQL 5.6升級MySQL 5.7的優勢
-
增加密碼管理、帳號鎖定、加密串連等功能,提高資料庫的安全性。
-
支援線上DDL操作。例如RENAME INDEX重新命名索引等。
-
改進了InnoDB引擎的可擴充性和暫存資料表的效能,實現更快的資料載入速度。
-
支援JSON。
-
支援針對分區表的索引條件下推(ICP),以及全新的InnoDB空間索引。
-
最佳化了大部分解析器、最佳化器和成本模型,提高資料庫的可維護性、可擴充性和效能。
-
擴充支援的字元集,包括中國國家標準規定的GB18030字元集。
-
提供ngram全文解析器外掛程式,支援中文、日文和韓文。
-
最佳化源轉儲線程,減少鎖的爭用,提高了源輸送量。
-
大幅改進了複寫延遲問題。
-
新增sys系統庫,提供多個監控項並減少儲存空間佔用,顯著提高資料庫的易用性。
附錄四:MySQL 8.4和MySQL 8.0版本功能差異列表
下表中僅列出MySQL 8.4與8.0的部分重要差異,其他各版本間差異,請參見MySQL Release Notes。
|
特性 |
8.0 |
8.4 |
|
WebAuthn認證 |
不支援 |
支援WebAuthn/FIDO2認證,Enterprise Edition提供服務端外掛程式 |
|
Windows上的SASL LDAP |
不支援 |
支援Windows上的SASL LDAP/GSSAPI/Kerberos認證 |
|
Clone Plugin跨小版本能力 |
通常要求point release匹配 |
同一major或minor內可跨point release進行clone,例如8.4.0和8.4.x |
|
Tagged GTID |
不支援 |
支援 |
|
GTID標籤許可權控制 |
不支援 |
新增 |
|
多線程applier與 |
使用受限,可能切回單線程 |
支援多線程applier下使用 |
|
Relay log恢複清理 |
relay log恢複行為較舊 |
可清理relay log尾部未完成事務和相關殘留檔案 |
|
Group Replication 8.4.x組內相容 |
不適用 |
8.4 LTS系列內支援跨版本群組成員和原地降級 |
|
Group Replication認證記憶體回收 |
常規GC |
支援single-primary模式下的preemptive certification garbage collection |
|
|
覆蓋範圍較少 |
會等待更多DDL/DCL完成後再切主 |
|
Histogram自動更新 |
不支援AUTO UPDATE或MANUAL UPDATE |
支援histogram自動或手動更新控制 |
|
|
單一JSON格式 |
支援 |
|
|
不支援 |
支援將JSON explain輸出寫入使用者變數 |
|
|
不支援 |
支援按指定schema解釋語句 |
|
MySQL用戶端注釋處理 |
預設剝離注釋 |
預設保留注釋 |
|
TLS認證校正 |
行為較寬鬆 |
支援強制TLS認證校正 |
|
Enterprise Firewall緩衝重載 |
主要在啟動或外掛程式重裝時重載 |
支援按周期重載 |
|
Enterprise Firewall儲存schema |
固定內部位置 |
支援指定自訂schema |
|
Keyring component到plugin遷移 |
不支援 |
支援keyring component遷移到keyring plugin |
|
升級記錄 |
使用舊升級資訊檔機制 |
資料目錄維護JSON格式的 |
附錄五:MySQL 8.0和MySQL 5.7版本功能差異列表
下表中僅列出MySQL 8.0與5.7的部分重要差異,其他各版本間差異,請參見MySQL Release Notes。
|
特性 |
5.7 |
8.0 |
|
GRANT ... IDENTIFIED BY PASSWORD文法 |
支援 |
不支援 |
|
PASSWORD()函數 |
支援 |
不支援 |
|
FLUSH QUERY CACHE、 RESET QUERY CACHE文法 |
支援 |
不支援 |
|
SQL_MODE系統變數的參數:DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, ORACLE, POSTGRESQL, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS |
支援 |
不支援 |
|
GROUP BY文法預設自動排序 |
支援 |
不支援 |
|
包含EXTENDED或PARTITIONS關鍵字的相關文法 |
支援 |
不支援 |
|
ENCODE()、DECODE()、ENCRYPT()等加密函數 |
支援 |
不支援 |
|
空間分析相關函數 |
支援 |
不支援 |
|
函數以前接受WKB值的字串或幾何參數,現在不再允許幾何參數 |
支援 |
不支援 |
|
將\N解析為NULL |
支援 |
不支援 |
|
PROCEDURE ANALYSE()函數 |
支援 |
不支援 |
|
通過NDB儲存引擎建立分區表 |
支援 |
不支援 |
|
通過InnoDB儲存引擎壓縮暫存資料表 |
支援 |
不支援 |
|
JSON_APPEND()函數 |
支援 |
不支援 |
|
在共用資料表空間中放置表分區的支援 |
支援 |
不支援 |
|
ALTER TABLE ... UPGRADE PARTITIONING文法 |
支援 |
不支援 |
附錄六:MySQL 5.7和MySQL 5.6版本功能差異列表
下表中僅列出MySQL 5.7與5.6的部分重要差異,其他各版本間差異,請參見MySQL Release Notes。
|
特性 |
5.6 |
5.7 |
|
GTID模式下的CREATE...AS SELECT |
支援 |
不支援 |
|
GTID模式下在事務中使用暫存資料表 |
支援 |
不支援 |
|
在分區表中指定分區鍵 |
支援 |
不支援 |
|
ENGINE_NO_CACHE文法 |
支援 |
不支援 |
|
不可見索引(Invisible Indexes) |
支援 |
不支援 |
|
UPDATE non_affected_rows INSERT文法 |
支援 |
不支援 |
|
Proxy相關命令 |
使用SET命令方式 |
使用Call Procedure模式 |
|
TokuDB、Sphinx、RocksDB和Memory引擎 |
支援 |
不支援 |
|
str_ord()函數 |
支援 |
不支援 |
|
raiseerror()函數 |
支援 |
不支援 |
|
OPTIMIZE TABLE table ASYNC |
支援 |
不支援 |
|
ENGINE_NO_CACHE |
支援 |
不支援 |
|
表INFORMATION.TABLE_UTILIZATION |
支援 |
不支援 |
|
表INFORMATION_SCHEMA.INNODB_LOCK_WAITS中的requesting_thd_id列和blocking_thd_id列 |
支援 |
不支援 |
|
表INFORMATION_SCHEMA.INNODB_RSEG |
支援 |
不支援 |
|
表INFORMATION_SCHEMA.INNODB_IO_STATUS |
支援 |
不支援 |
|
壓縮列功能 |
支援 |
不支援 |
|
Query Plan Cache |
支援 |
不支援 |
|
Limit + Union文法 |
不需要括弧 |
需要括弧 |
|
SHOW FULL PROCESSLIST文法 |
MySQL 5.7返回結果刪除memory和query_memory列。 |
|
|
max_statement_time和max_execution_time |
MySQL 5.7刪除max_statement_time,只保留max_execution_time。 |
|
|
RDS_SQL_MAX_AFFECTED文法 |
MySQL 5.7不再支援通過RDS_SQL_MAX_AFFECTED限制單條UPDATE或DELETE影響的記錄數。通過變數rds_sql_max_affected_rows控制。 |
|
|
並發效能最佳化調整 |
MySQL 5.7不再支援通過如下參數進行並發控制:
|
|
|
串連數變數的調整 |
MySQL 5.7刪除如下變數:
|
|
|
複製相關調整 |
|
|
|
日誌相關調整 |
MySQL 5.7錯誤記錄檔調整:
|
|
|
在5.6.4版本之前,舊時間類型不支援微秒。 |
時間類型支援微秒層級。 重要
在從5.6升級到5.7的過程中,系統會檢測並重建包含舊時間類型欄位的表,這會使升級過程變慢。 |
|
附錄七:MySQL 5.5和MySQL 5.6版本功能差異列表
下表中僅列出MySQL 5.5和5.6的部分重要差異,其他各版本間差異,請參見MySQL 5.6 Reference Manual。
|
特性 |
MySQL 5.5 |
MySQL 5.6 |
|
全文索引 |
不支援 |
支援 |
|
InnoDB online DDL |
不支援 |
部分支援 |
|
REDO |
最大支援4 GB |
最大支援512 GB |
|
刷髒 |
單線程 |
單獨的刷髒線程 |
|
purge |
單線程 |
多線程 |
|
EXCHANGE PARTITION |
不支援 |
支援 |
|
DML顯式指定分區 |
不支援 |
支援 |
|
INFORMATION_SCHEMA |
MySQL 5.6提供更多關於Buffer Pool資訊和表、索引、欄位等元資訊。 |
|
|
PERFORMANCE_SCHEMA |
MySQL 5.6中PFS增加了更多的監控資訊和查看形式。 |
|
|
複製 |
MySQL 5.6中複製增強和變更包括:
重要
RDS MySQL 5.5升級至5.6後,自動切換為基於GTID的複製模式。 |
|
|
最佳化器 |
MySQL 5.6增強了最佳化器能力,主要包括:
|
|
|
不支援 |
支援 |
|
|
不支援 |
支援 |
|
|
不支援 |
支援 |
|
|
不支援 |
支援 |
|
|
不支援 |
支援 |
|
常見問題
-
Q:升級過程中,為什麼會出現執行個體切換?是否會有其他嚴重風險?
A:為保證業務穩定,高效能本地碟執行個體升級採用先備後主的方式,備執行個體升級完成後,業務自動切換至備執行個體。ESSD雲端硬碟執行個體升級採用建立節點的方式,新節點升級完成後,業務自動切換至新節點。無其他嚴重風險。主備切換的影響請參見主備切換的影響。
-
Q:升級時,主備執行個體會一起升級嗎?
A:高效能本地碟升級時,系統先行升級備執行個體,再升級主執行個體。
-
Q:MySQL 5.7基礎系列SSD雲端硬碟執行個體如何升級?
A:當前不支援該類型的執行個體升級。如您想升級MySQL 5.7基礎系列SSD雲端硬碟執行個體,您可以先將目標執行個體儲存類型從SSD雲端硬碟變更為ESSD雲端硬碟,然後再升級資料庫版本。
-
Q:資料庫版本升級前後,參數模板是否保持一致?
A:RDS MySQL 5.7升級至RDS MySQL 8.0時,如果升級前執行個體為系統參數模板,升級後執行個體將設定為新版本對應的系統參數模板,如升級前為MySQL_InnoDB_5.7_高可用系列_高績效參數模板,升級後將設定為MySQL_InnoDB_8.0_高可用系列_高績效參數模板;如果升級前執行個體為使用者自訂參數模板,升級後參數模板將不會被保留。
-
Q:資料庫版本升級期間,是否能變更執行個體?
A:資料庫版本升級期間不支援變更執行個體,必須在版本升級完成後,才可以進行其他動作。
-
Q:資料庫版本是否支援自動升級?
A:暫不支援自動升級資料庫版本。
-
Q:資料庫版本是否支援降級?
A:不支援通過控制台直接降級。根據執行個體是否存在業務資料,選擇以下方案:
-
有業務資料:新購低版本執行個體,通過DTS資料移轉工具將高版本執行個體資料移轉至新購的低版本執行個體,遷移完成後釋放高版本執行個體,間接實現資料庫版本降級。詳情請參見RDS執行個體間資料移轉。
-
無業務資料:退訂原執行個體後重新購買所需低版本執行個體。訂用帳戶執行個體請參考退款說明進行退訂,隨用隨付執行個體可直接釋放。
-
-
Q:RDS MySQL 5.6升級至RDS MySQL 5.7或RDS MySQL 5.7升級至RDS MySQL 8.0時,升級失敗,提示“當前執行個體有全文索引且小版本低於20221130,請先進行小版本升級後再進行刪除、重建全文索引”或“當前執行個體包含建立在系統資料表空間的全文索引,請刪除並重建相應全文索引後再進行升級操作”,問題原因和解決方案是什嗎?
A:問題原因和解決方案如下:
-
問題原因
由於MySQL的歷史原因,較低版本的MySQL 5.6在建立全文索引(Full-Text Index)時會建立在系統資料表空間(System Tablespace)之上。當升級到5.7或進一步升級到8.0後,建立在系統資料表空間的全文索引有機率會導致資料表空間損壞,因此需要在升級前進行處理,避免執行個體資料損毀和不可訪問等問題。
說明RDS MySQL 5.6 20221130對該問題進行了修複,全文索引將建立在單獨的資料表空間之上。
-
解決方案
重要老版本RDS MySQL 5.6全文索引會建立在系統資料表空間,因此需要確保升級至RDS MySQL 5.7前的版本是RDS MySQL 5.6 20221130或之後的版本。如您的版本較低,請先升級到最新的RDS MySQL 5.6版本。
-
根據提示中的表名,刪除建立在系統資料表空間的全文索引。
# 刪除全文索引 ALTER TABLE $table_name DROP INDEX $fts_name; -
重新建立全文索引。
# 重新建立全文索引 ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name; -
建立完索引後,可以使用如下SQL對當前執行個體的全文索引進行檢查。SQL會返回建立在系統資料表空間的全文索引,如查詢結果為空白,則RDS MySQL5.6升級至RDS MySQL5.7的過程中不會因為該問題而導致失敗。
# 查詢建立在系統資料表空間的全文索引 SELECT NAME FROM information_schema.INNODB_SYS_TABLES WHERE TABLE_ID IN ( SELECT CONV(SUBSTRING_INDEX(SUBSTRING_INDEX(NAME, '_', -4),'_', 1),16,10) FROM INNODB_SYS_TABLES WHERE NAME LIKE '%fts_00000000%' AND SPACE = 0);
-
-
-
Q:RDS MySQL 5.7升級至RDS MySQL 8.0時,報錯
267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '=',該如何處理?A:請檢查MySQL中的字元集和定序。如果當前使用的是utf8mb4_general_ci,建議通過以下 SQL 陳述式將其修改為utf8mb4_0900_ai_ci。
# 修改庫的字元集和定序 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; # 修改表的字元集和定序 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; # 修改欄位的字元集和定序 ALTER TABLE table_name CHANGE column_name column_name type CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;在MySQL 5.7中使用utf8mb4_general_ci定序建立的表,如果升級到MySQL 8.0,系統預設會使用utf8mb4_0900_ai_ci作為定序。如果在查詢中比較一個使用utf8mb4_general_ci的列與一個使用utf8mb4_0900_ai_ci的列,MySQL將無法處理這兩種不同的定序,從而導致錯誤。
-
Q:無論是否有隻讀執行個體,升級大版本的閃斷時間都是15秒嗎?
A:是的,請您盡量在業務低峰期執行升級操作。
相關API
|
API |
描述 |
|
升級RDS執行個體版本。 |