データベースのマイナー バージョンをアップグレードする

このページでは、MySQL インスタンスのマイナー バージョンをアップグレードする方法について説明します。サポートされているバージョンについては、データベースのバージョンとバージョン ポリシーをご覧ください。

データベース プロバイダは、新しいマイナー バージョンごとに新機能、セキュリティ パッチ、バグ修正、パフォーマンス改善をリリースしています。また、Cloud SQL は、メンテナンス中にマイナー バージョンを定期的に更新しています。

ただし、MySQL 8.0 ではダウングレードがサポートされていません。そのため、マイナー バージョンのアップグレードは定期メンテナンスに自動的に含まれません。インスタンスの作成時またはアップグレード プロセスの実施中に、Cloud SQL for MySQL 8.0 のマイナー バージョンを指定できます。このページでは、その詳細を説明します。

MySQL 8.0 の新しいマイナー バージョンにアップグレードする前に、変更点を確認してください。MySQL 8.0 リリースノートをご覧ください。Cloud SQL for MySQL 5.6 または 5.7 の場合、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: Cloud SQL for MySQL マイナー バージョンのインプレース アップグレードの対象となるデータベースのメジャーおよびマイナー バージョンを含むデータベース バージョン文字列。

    REST v1

    インプレース アップグレードに使用できるデータベースのマイナー バージョンを確認するには、Cloud SQL Admin API の instances.get メソッドを使用します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • INSTANCE_NAME: インスタンス名。

    HTTP メソッドと URL:

    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 メソッドと URL:

    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

--database-version フラグを指定して gcloud sql instances patch コマンドを使用します。

コマンドを実行する前に、次の変数を置き換えます。

  • INSTANCE_NAME: インスタンスの名前。
  • DATABASE_VERSION: インスタンスのデータベース バージョン。このフラグを指定しない場合は、デフォルトのメジャー バージョンが使用されます。
gcloud sql instances patch INSTANCE_NAME \
   --database-version=DATABASE_VERSION

REST v1

instances:path メソッドと databaseVersion フラグを指定して PATCH リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • INSTANCE_ID: インスタンス ID
  • DATABASE_VERSION: アップグレード先のデータベース バージョン。

HTTP メソッドと URL:

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

instances:path メソッドと databaseVersion フラグを指定して PATCH リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • INSTANCE_ID: インスタンス ID
  • DATABASE_VERSION: アップグレード先のデータベース バージョン。

HTTP メソッドと URL:

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. アップグレード前に作成したバックアップをリカバリ インスタンスに復元します。

その場合は、バックアップを復元する代わりに、ポイントインタイム リカバリを実行して、新しいインスタンスを作成してください。