升級 MySQL 資料庫引擎 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

升級 MySQL 資料庫引擎

當 Amazon RDS 支援新版本的資料庫引擎時,您可以將資料庫執行個體升級為新版本。MySQL 資料庫有兩種升級:主要版本升級和次要版本升級。

主要版本升級

主要版本升級 可能包含與現有應用程式回溯不相容的資料庫變更。因此,您必須手動執行資料庫執行個體的主要版本升級。您可以修改資料庫執行個體,啟動主要版本升級。在您執行主要版本升級之前,建議您遵循中的指示MySQL 的主要版本升級

對於異地同步備份資料庫執行個體部署的主要版本升級,Amazon RDS 會同時升級主要和備用複本。在升級完成之前,您的資料庫執行個體將無法使用。目前,Amazon RDS 不支援異地同步備份資料庫叢集部署的主要版本升級。

提示

您可以使用藍/綠部署,將主要版本升級所需的停機時間降至最低。如需詳細資訊,請參閱 使用 Amazon RDS 藍/綠部署進行資料庫更新

次要版本升級

次要版本升級僅包含與現有應用程式向後相容的變更。您可以修改資料庫執行個體,手動啟動次要版本升級。或者,您可以在建立或修改資料庫執行個體時啟用自動次要版本升級選項。這樣做表示 Amazon RDS 會在測試和核准新版本後自動升級您的資料庫執行個體。如需執行升級的相關資訊,請參閱升級資料庫執行個體引擎版本

當您執行異地同步備份資料庫叢集的次要版本升級時,Amazon RDS 會一次升級一個讀取器資料庫執行個體。然後,其中一個讀取器資料庫執行個體會切換為新的寫入器資料庫執行個體。然後,Amazon RDS 會升級舊的寫入器執行個體 (現在是讀取器執行個體)。

注意

異地同步備份資料庫執行個體部署次要版本升級的停機時間可能會持續數分鐘。異地同步備份資料庫叢集通常會將次要版本升級的停機時間縮短至約 35 秒。與 RDS Proxy 搭配使用時,您可以進一步將停機時間減少到一秒或更短的時間。如需詳細資訊,請參閱 使用 Amazon RDS Proxy。或者,您可以使用開放原始碼資料庫代理伺服器 (例如 ProxSQL) 或 MySQL 的 AWS JDBC 驅動程式。PgBouncer

如果您的 MySQL 資料庫執行個體使用僅供讀取複本,則必須先升級所有僅供讀取複本,才能升級來源執行個體。

升級概觀

使用升級資料庫執行個體時,它會顯示資料庫執行個體的有效升級目標。 AWS Management Console 您也可以使用下列 AWS CLI 命令來識別資料庫執行個體的有效升級目標:

對於LinuxmacOS、或Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

在 Windows 中:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

例如,若要識別 MySQL 版本 8.0.28 資料庫執行個體的有效升級目標,請執行下列 AWS CLI 命令:

對於LinuxmacOS、或Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.28 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

在 Windows 中:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.28 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

Amazon RDS 在升級過程中會建立兩個以上的資料庫快照。Amazon RDS 在進行任何升級變更之前,最多會建立兩個資料庫執行個體快照。如果升級對資料庫沒有用處,您可以還原其中一個快照,以建立執行舊版本的資料庫執行個體。升級完成時,Amazon RDS 會建立資料庫執行個體的另一個快照。無論是否 AWS Backup 管理資料庫執行個體的備份,Amazon RDS 都會拍攝這些快照。

注意

只在您將資料庫執行個體的備份保留期設為大於 0 的數字時,Amazon RDS 才會建立資料庫快照。若要變更備份保留期,請參閱修改 Amazon RDS 資料庫執行個體

升級完成之後,您就無法回復至前一版的資料庫引擎。如果您想要回到前一版,請還原第一個建立的資料庫快照,以建立新的資料庫執行個體。

您可以控制何時將資料庫執行個體升級至 Amazon RDS 支援的新版本。這一層控制協助您維持與特定資料庫版本的相容性,並且先在您的應用程式上測試新版本,再部署於生產環境。準備好時,您就可以在最適合排程的時間執行版本升級。

如果您的資料庫執行個體使用讀取複寫,則必須先升級所有僅供讀取複本,才能升級來源執行個體。

MySQL 本號

適用於 MySQL 資料庫引擎的版本編號順序採用主要次要修補程式的形式為年月修補程式或主要次要修補程式,例如 8.0.33.R2.20231201 或 5.7.44。使用的格式取決於 MySQL 引擎版本。如需 RDS 延伸 Support 版本編號的相關資訊,請參閱Amazon RDS 擴展 Support 版本命名

重大的

主要版本號碼既是整數,也是版本號碼的第一個小數部分,例如 8.0。主要版本升級會增加版本號碼的主要部分。例如,從 5.7 .44 升級到 8.0.33 是主要版本升級,其中 5.78.0 是主要版本號碼。

未成年

次要版本號碼是版本號碼的第三部分,例如 8.0.33 中的 33。

補丁

修補程式是版本號碼的第四部分,例如 8.0.33.R2 中的 R2。RDS 修補程式版本中包含發行後新增到次要版本的重要錯誤修正。

年月

日期是版本號碼的第五部分,例如,在 8.0.33.R2.20231201 中的 20231201。RDS 日期版本是安全性修補程式,其中包含在發行後新增至次要版本的重要安全性修正程式。它不包括任何可能改變引擎行為的修復程序。

下表說明適用於 MySQL 8.0 版之 RDS 的命名配置。

8.0 次要版本 命名方案
≥ 33 新的資料庫執行個體使用主要. 次要修補程式,例如,8.0.33.R 2.20231201。

現有的資料庫執行個體可能會使用主要的 .minor.patch,例如 8.0.33.R2,直到您下一次的主要或次要版本升級為止。

< 33 現有的資料庫執行個體使用主要的 .min. 修補程式,例如 8.0.32.R2。

下表說明適用於 MySQL 5.7 版 RDS 的命名配置。

5.7 次要版本 命名方案
≥ 42 新的資料庫執行個體使用主要. 次要修補程式,例如 5.7.42.R2.20231201。

現有的資料庫執行個體可能會使用主要的 .minor.patch,例如 5.7.42.R2,直到您下次的主要或次要版本升級為止。

RDS 版本編號

RDS 版本號碼使用major.minor.patchmajor.minor.patch.YYYYMMDD命名配置。RDS 修補程式版本中包含發行後新增到次要版本的重要錯誤修正。RDS 日期版本 (YYMMDD) 是一個安全性修補程式。安全性修補程式不包含任何可能會變更引擎行為的修正程式。如需 RDS 延伸 Support 版本編號的相關資訊,請參閱Amazon RDS 擴展 Support 版本命名

若要識別資料庫的 Amazon RDS 版本編號,您必須先使用下列命令建立 rds_tools 延伸模組:

CREATE EXTENSION rds_tools;

您可以使用以下 SQL 查詢找出您的 RDS 版本號碼為 MySQL 資料庫:

mysql> select mysql.rds_version();

例如,查詢適用於 MySQL 8.0.34 的 RDS 資料庫會傳回下列輸出:

+---------------------+ | mysql.rds_version() | +---------------------+ | 8.0.34.R2.20231201 | +---------------------+ 1 row in set (0.01 sec)

MySQL 的主要版本升級

對於 MySQL 資料庫引擎的主要版本,Amazon RDS 支援以下的就地升級:

  • MySQL 5.6 至 MySQL 5.7

  • MySQL 5.7 至 MySQL 8.0

注意

除了 db.m3 前代資料庫執行個體類別,您只能以最新一代和當代資料庫執行個體類別來建立 MySQL 5.7 版和 8.0 版資料庫執行個體。

在某些情況下,您想要將在前一代資料庫執行個體類別上執行的 MySQL 5.6 版資料庫執行個體 (db.m3 以外) 升級至 MySQL 5.7 版資料庫執行個體。在這些情況下,先將資料庫執行個體修改為使用最新一代的資料庫執行個體類別。在您這麼做後,您就可以將資料庫執行個體修改為使用 MySQL 5.7 版資料庫引擎。如需 Amazon RDS 資料庫執行個體類別的相關資訊,請參閱 資料庫執行個體類別

MySQL 主要版本升級概觀

主要版本升級 可能包含與現有應用程式回溯不相容的資料庫變更。因此,Amazon RDS 不會自動套用主要版本升級;您必須手動修改資料庫執行個體。我們建議您在將任何升級套用至生產執行個體之前,先進行完整測試。

若要將 Amazon RDS 上的 MySQL 5.6 版資料庫執行個體的主要版本升級至 MySQL 5.7 版或更新版,請先執行任何可用的作業系統更新。作業系統完成更新後,請依序升級至每個主要版本:5.6 版至 5.7 版,接著是 5.7 版至 8.0 版。2014 年 4 月 24 日以前所建立的 MySQL 資料庫執行個體會顯示可用的作業系統更新,直到套用更新為止。如需作業系統更新的相關資訊,請參閱套用資料庫執行個體的更新

在 MySQL 的主要版本升級期間,Amazon RDS 會視需求執行 MySQL 二進位檔 mysql_upgrade,進而升級資料表。此外,在主要版本升級期間,Amazon RDS 還會清空 slow_loggeneral_log 資料表。若要保留日誌資訊,請在主要版本升級之前儲存日誌內容。

MySQL 主要版本升級通常在大約 10 分鐘內完成。由於資料庫執行個體類別的大小,或因為執行個體未遵循Amazon RDS 的最佳實務中的特定操作準則,有些升級可能會較久。如果您從 Amazon RDS 主控台升級資料庫執行個體,資料庫執行個體的狀態會指出升級何時完成。如果您使用 AWS Command Line Interface (AWS CLI) 升級,請使用describe-db-instances指令並檢查Status值。

升級至 MySQL 5.7 版可能較慢

MySQL 5.6.4 版為 datetimetimetimestamp 欄引進新的日期和時間格式,這些欄允許在日期和時間值中使用小數單位。將資料庫執行個體升級至 MySQL 5.7 版時,MySQL 會將所有日期和時間欄類型強制轉換為新格式。

因為此轉換會重建資料表,資料庫執行個體升級可能需要相當長的時間才會完成。對於執行早於 MySQL 5.6.4 版的任何資料庫執行個體,就會發生強制轉換。對於從早於 MySQL 5.6.4 版升級至 5.7 版以外之版本的任何資料庫執行個體,也會發生此轉換。

如果您的資料庫執行個體執行的版本早於 MySQL 5.6.4 版,或是從早於 5.6.4 的版本升級,我們建議您額外的步驟。在這些情況下,我們建議您將資料庫中的 datetimetimetimestamp 欄進行轉換,再將資料庫執行個體升級至 MySQL 5.7 版。此轉換作業可大幅縮短資料庫執行個體升級至 MySQL 5.7 版所需的時間。您可以對包含日期或時間欄的資料表發出 ALTER TABLE <table_name> FORCE; 命令,進而將日期和時間欄升級為新格式。因為改變資料表會將資料表鎖定成唯讀,建議您在維護時段執行此更新。

您可以使用下列查詢,在資料庫中尋找含有 datetimetimetimestamp 欄的所有資料表,然後對每個資料表建立 ALTER TABLE <table_name> FORCE; 命令。

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

從 MySQL 5.7 升級到 8.0 的前置檢查

MySQL 8.0 與 MySQL 5.7 有許多不相容的地方。這些不相容可能會在從 MySQL 5.7 升級至 MySQL 8.0 期間發生問題。因此,您可能需要為資料庫做一些準備,才能順利完成升級。以下是這些不相容問題的一般清單:

  • 資料表不能使用過時的資料類型或函數。

  • 不能有孤立的 *.frm 檔案。

  • 觸發條件不能有遺漏或空白的 DEFINER,或是無效的建立內容。

  • 分割資料表所使用的儲存引擎皆需提供原生分割支援。

  • 不能違反關鍵字或保留字的規定。MySQL 8.0 中可能會保留一些先前未保留的關鍵字。

    如需詳細資訊,請參閱 MySQL 文件中的 Keywords and Reserved Words (關鍵字與保留字)。

  • MySQL 5.7 mysql 系統資料庫中的資料表名稱不得與 MySQL 8.0 資料字典所使用的資料表名稱相同。

  • 不能在 sql_mode 系統變數設定中定義過時的 SQL 模式。

  • 資料表或預存程序的個別 ENUMSET 資料欄元素長度皆不得超過 255 個字元,也不能超過 1020 位元組。

  • 升級至 MySQL 8.0.13 或更新版本前,共用 InnoDB 資料表空間中不能存在資料表分割區。

  • MySQL 8.0.12 或較舊版本中的查詢和預存程式皆不得對 ASC 子句使用 DESCGROUP BY 限定詞。

  • MySQL 5.7 安裝程式不能使用 MySQL 8.0 未支援的功能。

    如需詳細資訊,請參閱 MySQL 文件中的 Features Removed in MySQL 8.0 (MySQL 8.0 中移除的功能)。

  • 外部索引鍵的限制條件名稱不得超過 64 個字元。

  • 運用 Unicode 增強支援時,請考慮將使用 utf8mb3 字元集的物件轉換成使用 utf8mb4 字元集,因為 utf8mb3 字元集已棄用。另外,utf8mb4 目前是 utf8 字元集的別名,因此請考慮使用 utf8 做為字元集參考,而不是 utf8mb3

    如需詳細資訊,請參閱 MySQL 文件中的 The utf8mb3 character set (3-byte UTF-8 unicode encoding)

當您開始從 MySQL 5.7 升級到 8.0 時,Amazon RDS 會自動執行前置檢查,以偵測這些不相容問題。如需升級至 MySQL 8.0 的相關資訊,請參閱 MySQL 文件中的 Upgrading MySQL (升級 MySQL)。

系統會強制執行這些前置檢查,您無法選擇略過這些檢查。前置檢查提供以下優勢:

  • 升級期間可避免非預期的停機時間。

  • 出現不相容情況時,Amazon RDS 即會防止系統進行升級,並提供相關日誌讓您了解。如此,您就可以使用這些日誌來減少不相容情況,為資料庫做好升級至 MySQL 8.0 的準備。如需移除不相容問題的詳細資訊,請參閱 MySQL 文件中的準備您的安裝進行升級,以及 MySQL Server 部落格上的升級至 MySQL 8.0? 這裡是您需要知道的事項...

前置檢查所含的部分檢查是隨附於 MySQL 的項目,另一些則是由 Amazon RDS 團隊特別設計。如需 MySQL 提供的前置檢查相關資訊,請參閱升級檢查程式公用程式

前置檢查會在系統將資料庫執行個體停止以進行升級前執行,意即前置檢查執行期間不會造成任何停機時間。如果預先檢查找到不相容,Amazon RDS 會在資料庫執行個體停止前自動取消升級。Amazon RDS 也會為不相容產生事件。如需 Amazon RDS 事件的詳細資訊,請參閱使用 Amazon RDS 事件通知

Amazon RDS 會在日誌檔 PrePatchCompatibility.log 中記錄每個不相容的相關詳細資訊。在多數情況下,日誌項目包含修正不相容的 MySQL 文件連結。如需檢視日誌檔案的詳細資訊,請參閱檢視並列出資料庫日誌檔案

根據前置檢查的特性,這些檢查作業會分析資料庫中的物件。此分析會耗用資源,並增加升級完成的時間。

注意

Amazon RDS 僅會針對從 MySQL 5.7 到 MySQL 8.0 的升級操作執行所有前置檢查。對於從 MySQL 5.6 升級到 MySQL 5.7,前置檢查僅限於確認沒有孤立表格,並且有足夠的存儲空間來重建表格。不會為升級至低於 MySQL 5.7 版本執行前置檢查。

從 MySQL 5.7 升級至 8.0 失敗後轉返

當您將資料庫執行個體從 MySQL 5.7 版升級至 MySQL 8.0 版時,升級可能會失敗。特別是,如果資料字典包含預先檢查未擷取的不相容性,則可能會失敗。在此情況下,資料庫無法在新的 MySQL 8.0 版本中成功啟動。此時,Amazon RDS 會轉返升級執行的變更。轉返後,MySQL 資料庫執行個體將執行 MySQL 5.7 版。升級失敗且轉返後,Amazon RDS 會產生具有事件 ID RDS-EVENT-0188 的事件。

通常,之所以升級失敗,是因為資料庫執行個體中的資料庫與目標 MySQL 版本之間的中繼資料存在不相容。升級失敗時,您可以在 upgradeFailure.log 檔案中檢視這些不相容性的詳細資訊。請先解決不相容性,然後嘗試再次升級。

在升級嘗試和轉返失敗期間,您的資料庫執行個體會重新啟動。任何擱置的參數變更都會在重新啟動期間套用,並在轉返後持續存在。

如需升級至 MySQL 8.0 的詳細資訊,請參閱 MySQL 文件中的下列主題:

注意

目前,升級失敗後的自動轉返僅支援 MySQL 5.7 至 8.0 主要版本升級。

測試升級

對資料庫執行個體執行主要版本升級之前,請完整測試資料庫,了解是否與新版本相容。此外,請完整測試可存取資料庫的所有應用程式,了解是否與新版本相容。建議您採用下列程序。

測試主要版本升級
  1. 檢閱新版本資料庫引擎的升級文件,了解是否有可能影響資料庫或應用程式的相容性問題:

  2. 如果資料庫執行個體是自訂資料庫參數群組的成員,請以現有設定建立新的資料庫參數群組 (與新的主要版本相容)。在升級測試執行個體時,指定新的資料庫參數群組,讓升級測試確保該參數群組可順利運作。如需建立資料庫參數群組的詳細資訊,請參閱使用參數群組

  3. 針對要升級的資料庫執行個體建立資料庫快照。如需詳細資訊,請參閱 為單一可用區資料庫執行個體建立資料庫快照

  4. 還原資料庫快照,以建立新的測試資料庫執行個體。如需詳細資訊,請參閱 還原至資料庫執行個體

  5. 使用如下詳述的其中一種方法,修改這個新的測試資料庫執行個體,以升級到新版本。如果您在步驟 2 建立新的參數群組,請指定該參數群組。

  6. 評估升級的執行個體所使用的儲存體,以決定升級是否需要更多儲存體。

  7. 對升級的資料庫執行個體儘可能進行越多次品質保證測試,以確保資料庫和應用程式搭配新版本可以正常運作。實作任何必要的新測試,以評估您在步驟 1 發現的任何相容性問題所帶來的影響。測試所有預存程序和函數。將應用程式的測試版本指向升級的資料庫執行個體。

  8. 如果通過所有測試,就可以對生產資料庫執行個體進行升級。在確認一切都沒問題之前,建議您在資料庫執行個體上不要允許寫入操作。

升級 MySQL 資料庫執行個體

如需有關手動或自動升級 MySQL 資料庫執行個體的資訊,請參閱升級資料庫執行個體引擎版本

MySQL 的自動次要版本升級

如果您在建立或修改資料庫執行個體時指定下列設定,則可以讓資料庫執行個體自動升級。

  • 已啟用 Auto minor version upgrade (自動次要版本升級) 設定。

  • Backup retention period (備份保留期間) 設定大於 0。

在中 AWS Management Console,這些設定位於 [其他組態] 下。下圖顯示 Auto minor version upgrade (自動次要版本升級) 設定。

在 Amazon RDS 主控台中選取了「啟用 auto 次要版本升級」的「維護」區段。

如需這些設定的詳細資訊,請參閱 資料庫執行個體的設定

對於某些 RDS for MySQL 主要版本 AWS 區域,RDS 會將一個次要版本指定為自動升級版本。次要版本經過測試,並由 Amazon RDS 核准之後,在您的維護時段期間,會自動發生次要版本升級。RDS 不會自動將較新發行的次要版本設定為自動升級版本。在 RDS 指派較新的自動升級版本之前,會考慮數個準則,例如下列:

  • 已知安全性問題

  • MySQL 社群版本中的錯誤

  • 從發行次要版本以來的整體機群穩定性

您可以使用以下 AWS CLI 命令來確定特定中指定 MySQL 次要版本的當前自動次要升級目標版本 AWS 區域。

對於LinuxmacOS、或Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version minor-version \ --region region \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text

在 Windows 中:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version minor-version ^ --region region ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text

例如,下列 AWS CLI 命令會判斷美國東部 (俄亥俄州) (us-east-2) AWS 區域 MySQL 次要版本 8.0.11 的自動次要升級目標。

對於LinuxmacOS、或Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.11 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

在 Windows 中:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.11 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

輸出類似如下。

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 8.0.15 | | False | 8.0.16 | | False | 8.0.17 | | False | 8.0.19 | | False | 8.0.20 | | False | 8.0.21 | | True | 8.0.23 | | False | 8.0.25 | +--------------+-----------------+

在此範例中,此 AutoUpgrade 值 是 True (若為 MySQL 版本 8.0.23)。因此,自動次要升級目標是 MySQL 版本 8.0.23,其已在輸出中反白顯示。

如果符合下列準則,在維護時段期間會自動升級 MySQL 資料庫執行個體:

  • 已啟用 Auto minor version upgrade (自動次要版本升級) 設定。

  • Backup retention period (備份保留期間) 設定大於 0。

  • 資料庫執行個體執行的次要資料庫引擎版本小於目前的自動升級次要版本。

如需詳細資訊,請參閱 自動升級次要引擎版本

使用僅供讀取複本在升級 MySQL 資料庫時減少停機時間

在大多數情況下,藍/綠部署是升級 MySQL 資料庫執行個體時減少停機時間的最佳選項。如需詳細資訊,請參閱 使用 Amazon RDS 藍/綠部署進行資料庫更新

如果您無法使用藍/綠部署,且您的 MySQL 資料庫執行個體目前與生產應用程式搭配使用,您可以使用下列程序來升級資料庫執行個體的資料庫版本。此程序可降低應用程式的停機時間。

透過使用僅供讀取複本,您可以提前執行大部分的維護步驟,並將實際中斷期間的必要變更降到最低。使用此技術,您可以測試和準備新的資料庫執行個體,而無需對現有的資料庫執行個體進行任何變更。

以下程序顯示從 MySQL 5.7 版升級至 MySQL 8.0 版的範例。您可以使用同樣的一般步驟升級到其他的主要版本。

注意

當您從 MySQL 5.7 版升級至 MySQL 8.0 版時,請先完成預先檢查,然後再執行升級。如需詳細資訊,請參閱 從 MySQL 5.7 升級到 8.0 的前置檢查

在資料庫執行個體處於使用中的情況下升級 MySQL 資料庫
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 建立 MySQL 5.7 資料庫執行個體的僅供讀取複本。此程序建立資料庫的可升級副本。資料庫執行個體的其他僅供讀取複本也可能存在。

    1. 在主控台中,選擇 Databases (資料庫),然後選擇您要升級的資料庫執行個體。

    2. Actions (動作) 中選擇 Create read replica (建立僅供讀取複本)。

    3. 在僅供讀取複本的 DB instance identifier (資料庫執行個體識別符) 中提供一個值,並確定 DB instance class (資料庫執行個體類別) 和其他設定符合您的 MySQL 5.7 資料庫執行個體。

    4. 選擇 Create read replica (建立僅供讀取複本)

  3. (選擇性) 當僅供讀取複本已建立且 Status (狀態) 顯示 Available (可用) 時,請將僅供讀取複本轉換為異地同步備份部署並啟用備份。

    依預設,僅供讀取複本會建立為單一可用區域部署,並停用備份。由於僅供讀取複本最終會成為生產資料庫執行個體,因此最佳實務是設定多可用區部署並立即啟用備份。

    1. 在主控台中,選擇 Databases (資料庫),然後選擇您剛建立的僅供讀取複本。

    2. 選擇 Modify (修改)

    3. 對於 Multi-AZ deployment (異地同步備份部署),請選擇 Create a standby instance (建立待命執行個體)

    4. 對於 Backup Retention Period (備份保留期),選擇非零正值 (例如 3 天),然後選擇 Continue (繼續)。

    5. Scheduling of modifications (修改排程) 中,選擇 Apply immediately (立即套用)。

    6. 選擇 Modify DB instance (修改資料庫執行個體)

  4. 僅供讀取複本的 Status (狀態) 顯示為 Available (可用) 時,請將僅供讀取複本升級至 MySQL 8.0:

    1. 在主控台中,選擇 Databases (資料庫),然後選擇您剛建立的僅供讀取複本。

    2. 選擇 Modify (修改)

    3. DB engine version (資料庫引擎版本) 中,選擇升級到 MySQL 8.0 版,然後選擇 Continue (繼續)

    4. Scheduling of modifications (修改排程) 中,選擇 Apply immediately (立即套用)。

    5. 選擇 Modify DB instance (修改資料庫執行個體) 以開始升級。

  5. 升級完成且狀態顯示 [可用] 時,請確認已升級的僅供讀取複本 up-to-date 與來源 MySQL 5.7 資料庫執行個體一起使用。若要驗證,請連線至僅供讀取複本並執行 SHOW REPLICA STATUS 命令。如果Seconds_Behind_Master欄位是0,則複寫為 up-to-date。

    注意

    MySQL 以前的版本使用 SHOW SLAVE STATUS 而不是 SHOW REPLICA STATUS。如果您使用的 MySQL 是 8.0.23 之前的版本,請使用 SHOW SLAVE STATUS

  6. (選擇性) 建立僅供讀取複本的僅供讀取複本。

    如果您希望資料庫執行個體在提升為獨立資料庫執行個體後擁有僅供讀取複本,您可以立即建立僅供讀取複本。

    1. 在主控台中,選擇 Databases (資料庫),然後選擇您剛升級的僅供讀取複本。

    2. Actions (動作) 中選擇 Create read replica (建立僅供讀取複本)。

    3. 在僅供讀取複本的 DB instance identifier (資料庫執行個體識別符) 中提供一個值,並確定 DB instance class (資料庫執行個體類別) 和其他設定符合您的 MySQL 5.7 資料庫執行個體。

    4. 選擇 Create read replica (建立僅供讀取複本)

  7. (選擇性) 為僅供讀取複本設定自訂資料庫參數群組。

    如果您希望資料庫執行個體在提升為獨立資料庫執行個體後使用自訂參數群組,您現在可以建立資料庫參數群組,並將其與僅供讀取複本建立關聯。

    1. 建立 MySQL 8.0 的自訂資料庫參數群組。如需說明,請參閱「建立資料庫參數群組」。

    2. 修改您想要在剛才建立的資料庫參數群組中變更的參數。如需說明,請參閱「修改資料庫參數群組中的參數」。

    3. 在主控台中,選擇 Databases (資料庫),然後選擇僅供讀取複本。

    4. 選擇 Modify (修改)

    5. 對於 DB parameter group (資料庫參數群組),請選擇您剛才建立的 MySQL 8.0 資料庫參數群組,然後選擇 Continue (繼續)

    6. Scheduling of modifications (修改排程) 中,選擇 Apply immediately (立即套用)。

    7. 選擇 Modify DB instance (修改資料庫執行個體) 以開始升級。

  8. 將 MySQL 8.0 僅供讀取複本變成獨立資料庫執行個體。

    重要

    當 MySQL 8.0 僅供讀取複本提升為獨立資料庫執行個體時,就不再是 MySQL 5.7 資料庫執行個體的複本。建議在維護時段提升 MySQL 8.0 僅供讀取複本,因為此時來源 MySQL 5.7 資料庫執行個體處於唯讀模式,且所有寫入操作都已暫停。提升完成時,您可以將寫入操作導向已升級的 MySQL 8.0 資料庫執行個體,以確保不會遺漏任何寫入操作。

    此外,在提升 MySQL 8.0 僅供讀取複本之前,建議您在 MySQL 8.0 僅供讀取複本上執行所有必要的資料定義語言 (DDL) 操作。範例是建立索引。此方法可避免 MySQL 8.0 僅供讀取複本在提升之後效能降低。若要提升僅供讀取複本,請使用以下程序。

    1. 在主控台中,選擇 Databases (資料庫),然後選擇您剛升級的僅供讀取複本。

    2. 針對 Actions (動作),選擇 Promote (提升)。

    3. 選擇 Yes (是),對僅供讀取複本執行個體啟用自動備份。如需詳細資訊,請參閱 備份簡介

    4. 選擇 Continue (繼續)

    5. 選擇 Promote Read Replica (提升僅供讀取複本)。

  9. 您現在已升級 MySQL 資料庫的版本。此時,您可以將應用程式導向至新的 MySQL 8.0 資料庫執行個體。