升級 MySQL 8.0 的資料庫子版本

MySQL 適用的 Cloud SQL 支援多個 MySQL 8.0 子版本,並以預設子版本 (比最新子版本早一個子版本) 佈建 MySQL 8.0 執行個體。

資料庫供應商會在每個次要版本中發布新功能、安全性修補程式、錯誤修正和效能提升。

MySQL 8.0 不支援降級。

自動升級

Cloud SQL 支援自動升級 MySQL 8.0 適用的 Cloud SQL 執行個體子版本,前提是這些執行個體未繫結至特定子版本。執行個體必須搭載 MySQL 8.0.35 以上版本。

如果執行個體已啟用自動升級子版本,MySQL 8.0 適用的 Cloud SQL 執行個體就會在定期維護更新時,自動升級至 MySQL 8.0 適用的 Cloud SQL 預設子版本。您不必再手動升級子版本,即可讓 MySQL 適用的 Cloud SQL 執行個體保持最新狀態,並使用 MySQL 社群提供的最新安全性修補程式與錯誤修正。

檢查是否已啟用子版本自動升級功能

如要檢查執行個體是否已啟用子版本自動升級功能,請執行下列指令:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

INSTANCE_NAME 替換為執行個體名稱,並將 PROJECT_ID 替換為執行個體的專案 ID。在指令輸出內容中,找出下列欄位。

  • databaseVersion:值必須為 MYSQL_8_0
  • databaseInstalledVersion:值必須是等於或大於 MYSQL_8_0_35 的次要版本

手動升級

本節說明如何手動升級 MySQL 8.0 適用的 Cloud SQL 執行個體子版本。如果執行的是 MySQL 適用的 Cloud SQL 8.0.34 或更早版本,則必須手動升級 MySQL 適用的 Cloud SQL 子版本。

升級至新的 MySQL 8.0 子版本前,請先瞭解相關異動。請參閱 MySQL 8.0 版本資訊。 如果您使用 MySQL 5.6 或 5.7 適用的 Cloud SQL,Cloud SQL 會自動管理執行個體的次要版本。您佈建新執行個體時,Cloud SQL 會自動為執行個體設定最新的可用資料庫版本。在例行維護期間,Cloud SQL 會自動將執行個體升級至最新支援版本。

如要升級 MySQL 8.0 執行個體的資料庫子版本,請使用偏好的子版本更新執行個體,該版本必須高於已安裝的子版本。執行個體佈建完成後,就無法還原至未指定的小版本。

如果您執行的是 Cloud SQL Enterprise Plus 版本執行個體,次要版本升級作業完成時幾乎不需要停機

手動升級前的注意事項

Cloud SQL 支援 MySQL 8.0 執行個體的子版本升級。 MySQL 8.0 不允許降級。因此,請先按照下列步驟操作,確保資料安全無虞,再升級主要執行個體。

  1. 選擇資料庫的目標次要版本

    gcloud

    如要瞭解如何安裝及開始使用 gcloud CLI,請參閱「安裝 gcloud CLI」。如要瞭解如何啟動 Cloud Shell,請參閱「使用 Cloud Shell」。

    如要查看哪些次要資料庫版本可進行就地升級,請按照下列步驟操作:

    1. 執行下列指令。
    2. gcloud sql instances describe INSTANCE_NAME
         

      INSTANCE_NAME 替換為執行個體名稱。

    3. 在指令的輸出內容中,找出標示為 upgradableDatabaseVersions 的區段。
    4. 每個子區段都會傳回可升級的資料庫版本。請在每個子區段中查看下列欄位。
      • name:資料庫版本字串,包含資料庫主要和次要版本,可用於 MySQL 適用的 Cloud SQL 次要版本就地升級。

    REST v1

    如要檢查哪些資料庫次要版本可進行就地升級,請使用 Cloud SQL Admin API 的 instances.get 方法。

    使用任何要求資料之前,請先替換以下項目:

    • INSTANCE_NAME:執行個體名稱。

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    REST v1beta4

    如要檢查哪些資料庫次要版本可進行就地升級,請使用 Cloud SQL Admin API 的 instances.get 方法。

    使用任何要求資料之前,請先替換以下項目:

    • INSTANCE_NAME:執行個體名稱。

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    請展開以下其中一個選項,以傳送要求:

    您應該會收到如下的 JSON 回覆:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "MYSQL_8_0"
      name: "MYSQL_8_0_36"
      display_name: "MySQL 8.0.36"
    }
    
    

    如需 Cloud SQL 支援的資料庫版本完整清單,請參閱資料庫版本和版本政策

  2. 在測試環境中測試升級。

    1. 複製正式環境執行個體,做為暫存執行個體。這會建立新的資料庫執行個體,主要和次要版本相同。

    2. 對測試執行個體執行子版本升級。

    3. 執行工作負載測試,確認升級成功,且應用程式運作正常。測試成功後,請繼續升級唯讀副本執行個體。

  3. 升級唯讀副本執行個體。

    1. 升級資料庫中的所有唯讀副本,使其達到目標子版本。

    2. 確認應用程式運作正常。

  4. 備份主要執行個體。

    如同任何重大資料庫更新,請備份主要執行個體。

升級子版本

您可以使用 gcloud 或 REST API,指定現有執行個體的資料庫次要版本。請在資料庫未使用時執行子版本升級。如果執行個體需要重新啟動,執行個體就會停機一段時間。Cloud SQL Enterprise Plus 版執行個體幾乎無須停機。如果已安裝的版本高於要求版本,系統就會拒絕要求。

gcloud

使用 gcloud sql instances patch 指令並加上 --database-version 旗標。

執行指令前,請先替換下列變數:

  • INSTANCE_NAME:執行個體的名稱。
  • DATABASE_VERSION:執行個體的資料庫版本。如未指定這個標記,系統會使用預設的主要版本。
gcloud sql instances patch INSTANCE_NAME \
   --database-version=DATABASE_VERSION

REST v1

使用 PATCH 要求、 instances:patch 方法和 databaseVersion 旗標。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID
  • INSTANCE_ID:執行個體 ID
  • DATABASE_VERSION:要升級的資料庫版本。

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "databaseVersion": "DATABASE_VERSION"
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-07-17T20:23:15.540Z",
  "operationType": "UPDATE",
  "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

使用 PATCH 要求、 instances:patch 方法和 databaseVersion 旗標。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID
  • INSTANCE_ID:執行個體 ID
  • DATABASE_VERSION:要升級的資料庫版本。

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID

JSON 要求主體:

{
  "databaseVersion": "DATABASE_VERSION"
}

請展開以下其中一個選項,以傳送要求:

您應該會收到如下的 JSON 回覆:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-07-17T20:23:15.540Z",
  "operationType": "UPDATE",
  "name": "fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetId": "INSTANCE-ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/fa3f7304-ccf6-4d2f-a6f5-24df00000032",
  "targetProject": "PROJECT_ID"
}

檢查已安裝的資料庫子版本

查看執行個體摘要資訊時,「設定」部分會顯示已安裝的資料庫次要版本。

復原升級

測試升級時,如果發現問題,您可能需要將資料庫復原,以還原執行先前子版本的資料庫執行個體。

如要還原升級前的備份,請完成下列步驟:

  1. 在先前的子版本上佈建復原資料庫執行個體。
  2. 將復原資料庫執行個體的設定還原至升級前狀態。
  3. 將升級前建立的備份還原至復原執行個體。

除了還原備份,您也可以執行時間點復原並建立新執行個體。