Share via


適用於 MySQL 的 Azure 資料庫 中的主要版本升級 - 彈性伺服器

適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

注意

本文包含「從屬」一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除字詞時,我們會從本文中移除該字詞。

本文說明如何在 適用於 MySQL 的 Azure 資料庫 彈性伺服器中就地升級 MySQL 主要版本。 這項功能可讓客戶對 MySQL 5.7 伺服器執行就地升級至 MySQL 8.0,而不需要進行任何數據移動,或需要進行任何應用程式 連接字串 變更。

重要

  • 根據高載 SKU,5.7 版伺服器目前無法使用主要版本升級。
  • 停機時間的持續時間會根據資料庫實例的大小和它所包含的數據表數目而有所不同。
  • 透過 Rest API 或 SDK 起始 適用於 MySQL 的 Azure 資料庫 彈性伺服器的主要版本升級時,請避免在相同的要求中修改服務的其他屬性。 不允許同時變更,而且可能會導致非預期的結果或要求失敗。 請在升級後完成的不同作業中進行屬性修改。
  • 升級主要 MySQL 版本是無法復原的。 如果驗證識別伺服器已設定為已移除已淘汰的任何功能,您的部署可能會失敗。 您可以在伺服器上進行必要的設定變更,然後再試一次升級。

必要條件

  • 應先升級具有 MySQL 5.7 版的讀取複本,才能在主伺服器進行復寫以在不同的 MySQL 版本之間相容,深入瞭解 MySQL 版本之間的復寫相容性。
  • 在升級生產伺服器之前,現在使用 Azure 入口網站 中的內建驗證功能,變得更簡單且更有效率。 此工具會預先檢查資料庫架構與 MySQL 8.0 的相容性,並醒目提示潛在問題。 雖然我們提供這個方便的選項,但我們也強烈建議您使用官方的 Oracle MySQL 升級檢查程式工具來測試您的資料庫架構相容性,並執行必要的回歸測試,以確認應用程式與新 MySQL 版本中已淘汰/的功能相容。
  • 在生產伺服器上執行主要版本升級之前,先觸發 隨選備份 ,這可用來 從所建立的完整隨選備份復原至 5.7 版。

使用 Azure 入口網站,執行從 MySQL 5.7 升級至 MySQL 8.0 的計劃主要版本

若要使用 Azure 入口網站 執行 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器的主要版本升級,請執行下列步驟。

  1. Azure 入口網站 中,選取您現有的 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器。

    重要

    建議您先在還原的伺服器復本上執行升級,而不是直接升級生產環境。 瞭解如何 執行時間點還原

  2. 在 [概 觀] 頁面上的工具欄中,選取 [ 升級]。

    重要

    升級瀏覽連結之前,適用於 MySQL 8.0 中移除的功能清單。 使用您 Azure 入口網站 上的 [伺服器參數] 刀鋒視窗,確認已淘汰sql_mode值,並從您目前的 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器上移除/取消選取這些值,以避免部署失敗。 MySQL 8.0 不再支援具有值NO_AUTO_CREATE_USER、NO_FIELD_OPTIONS、NO_KEY_OPTIONS和NO_TABLE_OPTIONS的sql_mode。

    Screenshot showing Azure Database for MySQL flexible server Upgrade.

  3. 執行升級前驗證

    繼續進行升級之前,請按兩下 [ 驗證] 按鈕來檢查伺服器與 MySQL 8.0 的相容性。

    Screenshot showing validate.

    重要

    當您使用「驗證」功能來檢查資料庫架構是否與 MySQL 8.0 相容時,請注意,它牽涉到鎖定數據表以正確評估整個架構。 此程式可能會導致查詢逾時。 因此,建議您不要在尖峰上班時間或資料庫遇到高流量時執行驗證。 為驗證選擇低活動期間有助於將作業的影響降到最低。

  4. 在 [ 升級提升級 的 MySQL 版本] 文本框中,確認您要升級至的主要 MySQL 版本,也就是 8.0。

    Screenshot showing Upgrade.

    在升級主伺服器之前,您必須先升級任何相關聯的讀取複本伺服器。 在完成之前, 將會停用升級

  5. 在主伺服器上,選取確認訊息以確認所有複本伺服器都已升級,然後選取 [ 升級]。

    Screenshot showing upgrade.

    在讀取複本和獨立伺服器上, 預設會啟用升級

使用 Azure CLI 執行從 MySQL 5.7 升級至 MySQL 8.0 的計劃主要版本升級

若要使用 Azure CLI 執行 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器的主要版本升級,請執行下列步驟。

  1. 安裝適用於 Windows 的 Azure CLI,或使用 Azure Cloud Shell 中的 Azure CLI 來執行升級命令。

    此升級需要 Azure CLI 2.40.0 版或更新版本。 若您使用的是 Azure Cloud Shell,即已安裝最新版本。 執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。

  2. 登入之後,請執行 az mysql server upgrade 命令。

    az mysql flexible-server upgrade --name {your mysql server name} --resource-group {your resource group} --subscription {your subscription id} --version 8
    
  3. 在確認提示下,輸入 y 以確認或 n 以停止升級程式,然後按 Enter。

使用 Azure 入口網站,在讀取複本伺服器上執行從 MySQL 5.7 升級至 MySQL 8.0 的主要版本

若要使用 Azure 入口網站,在讀取複本上執行 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器到 MySQL 8.0 的主要版本升級,請執行下列步驟。

  1. 在 Azure 入口網站 中,選取您現有的 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 讀取複本伺服器。

  2. 在 [概 觀] 頁面上的工具欄中,選取 [ 升級]。

重要

升級瀏覽連結之前,適用於 MySQL 8.0 中移除的功能清單。 使用 Azure 入口網站上 [伺服器參數] 刀鋒視窗,確認已淘汰sql_mode值,並從您目前的 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器上移除/取消選取這些值,以避免部署失敗。

  1. 在 [升級] 區段中,選取 [升級] 將 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 讀取複本伺服器升級至 MySQL 8.0。

    此時會出現通知,以確認升級成功。

  2. 在 [概觀] 頁面上,確認您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器讀取複本伺服器正在執行 8.0 版。

  3. 現在,移至您的主伺服器,並在其上執行主要版本升級。

使用讀取複本執行從 MySQL 5.7 升級至 MySQL 8.0 的最低停機時間主要版本

若要使用讀取複本伺服器執行 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器到 MySQL 8.0 的主要版本升級,請執行下列步驟。

  1. 在 Azure 入口網站 中,選取您現有的 適用於 MySQL 的 Azure 資料庫 彈性伺服器 5.7 伺服器。

  2. 從主伺服器建立 讀取複本

  3. 將您的讀取複本升級 至8.0版。

  4. 確認複本伺服器執行 8.0 版之後,請停止應用程式連線到主伺服器。

  5. 檢查複寫狀態,以確保複本已趕上主要複本,讓所有數據都處於同步狀態,而且主要複本上不會執行任何新作業。

  6. 在複本伺服器上確認顯示複本狀態命令,以檢視複寫狀態。

     SHOW SLAVE STATUS\G
    

    如果Slave_IO_Running和Slave_SQL_Running的狀態為 yes ,且 Seconds_Behind_Master 的值為 0,則復寫運作良好。 Seconds_Behind_Master 會指出複本的延遲時間。 如果值不是 0,則復本仍在處理更新。 確認Seconds_Behind_Master的值為 ****之後,可以放心地停止複寫。

  7. 停止複寫,將您的讀取複本升階至主要複本。

  8. 將 [伺服器參數] read_only設定為 0 (OFF),以開始在升級的主要複本上撰寫。

  9. 將您的應用程式指向執行伺服器 8.0 的新主要 (先前複本)。 每部伺服器都有唯一的 連接字串。 更新您的應用程式以指向 (先前) 複本,而不是來源。

注意

此案例只會在步驟 4 到 7 期間造成停機時間。

常見問題集

  • 這會導致伺服器停機,如果是的話,多久?

    若要在升級期間停機最少,請遵循使用讀取複本執行從 MySQL 5.7 到 MySQL 8.0 的最低停機時間主要版本升級中所述的步驟。 在升級程式期間,伺服器將無法使用,因此建議您在計劃性維護期間執行此作業。 預估的停機時間取決於資料庫大小、布建的記憶體大小(已布建的 IOPS),以及資料庫上的數據表數目。 升級時間與伺服器上的數據表數目成正比。 若要估計伺服器環境的停機時間,建議您先在還原的伺服器複本上執行升級。

  • 升級後我的備份會發生什麼事?

    在主要版本升級之前所採取的所有備份(自動/隨選),用於還原時,一律會還原到具有舊版 (5.7) 的伺服器。 在主要版本升級之後進行的所有備份(自動/隨選)都會還原至具有升級版本 (8.0) 的伺服器。 強烈建議您先進行隨選備份,再執行主要版本升級,以便輕鬆復原。

  • 我目前使用高載 SKU,Microsoft 是否計劃在未來支援此 SKU 的主要版本升級?

    高載 SKU 無法支援主要版本升級,因為此 SKU 的效能限制。

    如果您需要在 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例上執行主要版本升級,且目前使用高載 SKU,一個暫存解決方案是升級至一般用途或 業務關鍵 SKU,請執行升級,然後切換回高載 SKU。

    請注意,升級至較高的SKU可能會涉及定價變更,並可能導致部署成本增加。 不過,由於升級程式不預期需要很長的時間,因此新增的成本不應該很大。

下一步