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

このページでは、AlloyDB for PostgreSQL クラスタのデータベースのメジャー バージョンをインプレースでアップグレードする方法について説明します。データベースのインプレース メジャー バージョン アップグレードのユースケース、ワークフロー、自動バックアップについては、データベースのインプレース メジャー バージョン アップグレードの概要をご覧ください。

データベースのメジャー バージョン アップグレードを計画する

データベースのメジャー バージョンのアップグレードを計画する手順は次のとおりです。

  1. 現在のデータベースのメジャー バージョンを確認します。

    コンソール

    1. Google Cloud コンソール で、[クラスタ] ページに移動します。

      クラスタに移動

    2. リストからクラスタを選択します。[概要] ページが表示されます。

    3. [バージョン] フィールドでデータベースのメジャー バージョンを確認します。

    gcloud

    gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動方法については、Cloud Shell を使用するをご覧ください。

    次のコマンドを実行して、現在のメジャー バージョンを含むクラスタの詳細を取得します。

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    次のように置き換えます。

    • CLUSTER_ID: クラスタ ID
    • REGION: クラスタのロケーションまたはリージョン

    REST v1beta

    次のリクエストを実行して、現在のメジャー バージョンを含むクラスタの詳細を取得します。

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    次のように置き換えます。

    • CLUSTER_ID: クラスタ ID
    • PROJECT_ID: プロジェクト ID
    • REGION: クラスタのロケーションまたはリージョン

    リクエストを送信するには、次のいずれかのオプションを使用します。

    curl(Linux、macOS、Cloud Shell)

    次のコマンドを実行します。

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell(Windows)

    次のコマンドを実行します。

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. 次の表から移行先データベースのメジャー バージョンを特定します。AlloyDB がサポートするデータベース バージョンの一覧については、データベースのバージョンとバージョン ポリシーをご覧ください。

    ソースのメジャー バージョン サポートされているターゲット メジャー バージョン
    POSTGRES_14
    • POSTGRES_15
    • POSTGRES_16
    POSTGRES_15
    • POSTGRES_16
  3. データベースの各メジャー バージョンで提供される機能を確認します。

  4. 対処が必要な互換性のない問題を特定します。新しいメジャー バージョンでは、互換性のない変更が導入され、アプリケーション コード、スキーマ、データベース設定の変更が必要になる場合があります。

  5. 本番環境クラスタでメジャー バージョン アップグレードを開始する前に、クラスタをクローンし、クローン作成したクラスタでメジャー バージョン アップグレードをテストすることをおすすめします。

    アップグレードが正常に完了したことを確認するだけでなく、アップグレードされたクラスタでアプリケーションが期待どおりに動作することをテストします。

メジャー バージョン アップグレードに向けてクラスタを準備する

データベースへの接続が必要な手順を完了するには、AlloyDB Studiopsql、またはその他の接続方法を使用します。

  1. クロスリージョン レプリカを削除または昇格します。データベースのインプレース メジャー バージョン アップグレードは、クロスリージョン レプリカをサポートしていません。詳細については、クロスリージョン レプリケーションをご覧ください。
  2. postgres データベースと template1 データベースのエンコードとロケール設定が template0 データベースと同じであることを確認します。

    次のコマンドを実行します。

    SELECT pg_encoding_to_char(encoding), datcollate, datctype
    FROM pg_database
    WHERE datname IN ('postgres', 'template1', 'template0');
    

    postgres データベースまたは template1 データベースの値が template0 データベースの値と異なる場合、アップグレードは失敗します。この問題を解決する方法は次のとおりです。

    1. 他の(template0 以外の)データベースをダンプします。詳細については、データのエクスポートをご覧ください。

    2. DROP DATABASE <database_name>; を実行してデータベースを削除します。

    3. 次のコマンドを実行して、template0 データベースと同じエンコードとロケール設定でデータベースを再作成します。

      CREATE DATABASE <database_name>
      ENCODING = '<template0_encoding>'
      LC_COLLATE = '<template0_datcollate>'
      LC_CTYPE = '<template0_datctype>';
      
    4. データを再読み込みします。詳細については、データのインポートをご覧ください。

  3. AlloyDB クラスタが論理レプリケーションのソースである場合は、ダウンストリーム サブスクリプションを無効にして、すべての論理レプリケーション スロットを削除します。アップグレード後にサブスクリプションを再度有効にして、論理レプリケーション スロットを再作成できます。AlloyDB インスタンスが論理レプリケーション ターゲットのみである場合、これらの手順は必要ありません。サブスクリプションを無効にして論理レプリケーション スロットを削除する手順は次のとおりです。

    1. サブスクライバーまたはダウンストリーム レプリケーション ターゲットで、各ダウンストリーム サブスクリプションを無効にします。アップグレード中の AlloyDB インスタンスでダウンストリーム サブスクリプションを無効にしないでください。

      • pglogical を使用している場合は、次のコマンドを実行します。

        SELECT * FROM
        pglogical.alter_subscription_disable(subscription_name, immediate);
        

        クエリの subscription_name は、既存のサブスクリプション名に置き換えます。サブスクリプションをすぐに無効にする場合は、immediate パラメータの値を true に設定します。デフォルト値は false です。サブスクリプションは、現在のトランザクションが終了した後に無効になります。

        次に例を示します。

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • pglogical 以外の拡張機能を使用している場合は、次のコマンドを実行します。

        ALTER SUBSCRIPTION <subscription_name> DISABLE;
        
    2. 次のコマンドを実行して、AlloyDB プライマリ インスタンスのすべての論理レプリケーション スロットを削除します。

      SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
      
  4. PostgreSQL 拡張機能を管理します。詳細については、データベース拡張機能を構成するをご覧ください。

    アップグレード前のチェックでは、拡張機能の互換性がないことが検出され、違反と推奨されるアクションがログに表示されます。詳細については、アップグレード前のチェックの失敗を表示するをご覧ください。

    次の操作が必要になる場合があります。

    1. ターゲット バージョンでサポートされなくなった拡張機能がある場合は、それを削除します。
    2. PostGIS と関連する拡張機能(address_standardizeraddress_standardizer_data_uspostgis_rasterpostgis_sfcgalpostgis_tiger_geocoderpostgis_topology)を、ターゲット PostgreSQL バージョンでサポートされているバージョンにアップグレードします。詳細については、PostGIS 拡張機能をご覧ください。次の表に、各 PostgreSQL メジャー バージョンでサポートされている最小 PostGIS 拡張機能のバージョンを示します。

      PostgreSQL のバージョン PostGIS の最小サポート バージョン
      PG14 3.1
      PG15 3.2
      PG16 3.4

      たとえば、PostGIS のバージョンが 3.1.x で、POSTGRES 14 から POSTGRES 16 にアップグレードする場合は、次のコマンドを使用して PostGIS 拡張機能をアップグレードします。

      ALTER EXTENSION postgis UPDATE TO '3.4.0';
      SELECT PostGIS_Version();
      
  5. 次のクエリを実行して各データベースの datallowconn フィールドを確認し、template0 を除く各データベースで接続が許可されていることを確認します。

    SELECT datname,datallowconn from pg_database;
    

    datallowconn フィールドの t 値は、接続が許可されていることを意味します。f の値は、接続を確立できないことを示します。template0 データベースは接続を許可しないでください。

    データベースへの接続を許可するには、次のコマンドを実行します。

    ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = true;
    

クラスタのメジャー バージョンをインプレースでアップグレードする

データベースのメジャー バージョンのインプレース アップグレードは、データベースのサイズ、スキーマのサイズ、クラスタ内の読み取りプール インスタンスの数などの要因によって、完了までに 40 分から 48 時間かかることがあります。プライマリ インスタンスのダウンタイムは通常 20 分から 1 時間で、主にデータベース スキーマによって異なります。

メジャー バージョンのインプレース アップグレード リクエストを行うと、AlloyDB はまずアップグレード前のチェックを行います。AlloyDB がクラスタのメジャー バージョン アップグレードの準備ができていないと判断した場合、リクエストは失敗します。詳細については、メジャー バージョンのインプレース アップグレードのトラブルシューティングをご覧ください。

データベースのメジャー バージョンをインプレースでアップグレードする手順は次のとおりです。

コンソール

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. リストからクラスタを選択します。[概要] ページが表示されます。

  3. [アップグレード] をクリックして、データベースのメジャー バージョンのアップグレード プロセスを開始します。

  4. [データベースのバージョンを選択] 手順で、使用可能なデータベースのメジャー バージョンの 1 つをターゲット メジャー バージョンとして選択します。

  5. [続行] をクリックします。

  6. [クラスタをアップグレード] ステップの [クラスタ ID] フィールドに、クラスタの名前を入力します。

  7. [アップグレードを開始] をクリックします。[アップグレード ステータス] ステップに移動し、アップグレード ステータスを確認します。詳細については、データベースのメジャー バージョンのアップグレードをモニタリングするをご覧ください。

gcloud

次のコマンドを実行して、メジャー バージョンのインプレース アップグレードを開始します。

gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

コマンドの例を次に示します。

gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_16 --async

REST v1beta

次のコマンドを実行して、メジャー バージョンのインプレース アップグレードを開始します。

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

JSON 本文のリクエスト:

{
  "version": "DATABASE_VERSION"
}

移行先データベースのメジャー バージョンの列挙型に置き換えます。これは、現在のバージョンより大きいものにする必要があります。

リクエストの JSON 本文の例:

{
"version": "POSTGRES_16"
}

クラスタのメジャー バージョン アップグレードをモニタリングする

データベースのメジャー バージョンのインプレース アップグレードが開始されたら、Google Cloud コンソール、gcloud CLI、または REST API を使用してアップグレード ステータスをモニタリングできます。

コンソール

Google Cloud コンソールでアップグレード ステータスを確認する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. アップグレードするクラスタを選択します。[概要] ページが表示されます。

  3. [概要] ページを開きます。

  4. [アップグレード ステータス] をクリックします。[アップグレード ステータス] ページが表示されます。ここで、アップグレードのステータスを確認できます。

gcloud

gcloud CLI でアップグレード ステータスを確認する手順は次のとおりです。

  1. 次のコマンドを実行して、アップグレード オペレーション ID を取得します。コマンドを実行する前に、CLUSTER_ID 変数をクラスタの名前に置き換えます。

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    メジャー バージョンのアップグレードをトリガーするために使用される gcloud CLI 呼び出し。alloydb beta clusters upgrade: オペレーション ID を同期レスポンスとして返します。または、--cluster フラグを指定して gcloud alloydb operations list コマンドを使用します。

    コマンドの例を次に示します。

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. 次のコマンドを実行して、アップグレードのステータスをモニタリングします。

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION
    https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe

REST v1beta

REST API でアップグレード ステータスを確認する手順は次のとおりです。

  1. アップグレード オペレーション ID を取得します。

    operations.list メソッドで次の GET リクエストを使用して、すべてのアップグレード オペレーションを一覧表示し、ターゲット クラスタに対応するオペレーションを見つけます。

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    REST API 呼び出しは、オペレーション ID を同期レスポンスとして返します。

  2. アップグレードのステータスをモニタリングします。

    operations.get メソッドで GET リクエストを使用します。

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • REGION: クラスタのロケーションまたはリージョン
    • OPERATION_ID: 前の手順で取得したアップグレード オペレーション ID。

    オペレーションが進行中の場合のレスポンスの例を次に示します。

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    オペレーションが完了した場合のレスポンスの例を次に示します。

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    response 構造の詳細については、アップグレード オペレーション レスポンスをご覧ください。

アップグレード オペレーションのレスポンス

UpgradeCluster オペレーション レスポンスには次のものが含まれます。

  • status: 全体的なアップグレード オペレーションのステータス。有効な値は SUCCESSFAILEDPARTIAL_SUCCESS. です。
  • message: アップグレード オペレーションの結果の概要を表示します。
  • clusterUpgradeDetails: アップグレードされるクラスタのアップグレード詳細。このフィールドは配列です。AlloyDB ではクラスタのアップグレードは 1 回のみ許可されるため、エントリは 1 つだけにする必要があります。
    • name: クラスタの完全修飾名。
    • upgradeStatus: クラスタのアップグレードのステータス。指定できる値は、SUCCESSFAILEDPARTIAL_SUCCESS です。PARTIAL_SUCCESS は、1 つ以上の読み取りプール インスタンスをアップグレードできないことを意味します。
    • clusterType: クラスタタイプ。AlloyDB では、1 つの PRIMARY クラスタのみをアップグレードできます。このタイプは常に PRIMARY にする必要があります。
    • databaseVersion: クラスタの現在のデータベース バージョン。
    • stageInfo: コア アップグレード ステージに関する情報。
      • status: SUCCESS または FAILED
      • logs_url: ステージによって生成されたログへのリンク。ログを生成するステージの場合は空にします。
    • instanceUpgradeDetails: クラスタ内のすべてのインスタンスのアップグレード情報。
      • name: インスタンスの完全修飾名
      • upgradeStatus: SUCCESS または FAILED
      • instanceType: PRIMARY または READ_POOL

アップグレード オペレーション レスポンスの例を次に示します。

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_16",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

アップグレード ログを表示する

AlloyDB は、すべてのアップグレード ログを postgres_upgrade ログ名に公開します。

アップグレード関連のログを表示する手順は次のとおりです。

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが「Logging」の結果を選択します。

  2. ログ名として alloydb.googleapis.com/postgres_upgrade を選択します。これはクエリ "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" に変換されます。

  3. 次のラベルを使用してログをフィルタします。

    ラベル 説明

    LOG_TYPE

    ログを生成したアップグレード ステージ。有効な値は ALLOYDB_PRECHECKPG_UPGRADE_CHECKPG_UPGRADE です。

    OPERATION_NAME

    アップグレード オペレーションの完全なオペレーション名。

    FILE_NAME

    pg_upgrade_check ログと pg_upgrade ログにのみ入力され、pg_upgrade ユーティリティによって生成されたログファイルに対応します。

次のクエリは、特定のオペレーションの AlloyDB 事前チェック アップグレード ログを返します。

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

アップグレード チェックの詳細については、データベースのメジャー バージョンのインプレース アップグレードの概要をご覧ください。

クラスタのアップグレード ログを表示する

オペレーション ID が不明で、オペレーションが期限切れになっている場合に、クラスタのアップグレード ログを表示する手順は次のとおりです。

  1. クラスタの AlloyDB 事前チェックログをクエリします。

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  2. OPERATION_NAME ログラベルから Operation_ID を見つけます。

    次の例では、OPERATION_NAMEOperation_IDoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013 です。

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  3. 特定のオペレーションのすべての postgres_upgrade ログをクエリします。

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

データベースのインプレース メジャー バージョン アップグレードをキャンセルする

進行中のメジャー バージョン アップグレード オペレーションは、Google Cloud コンソール、gcloud CLI、または REST API からキャンセルできます。

オペレーション ID を確認する

gcloud CLI または REST API を使用してメジャー バージョンのアップグレード オペレーションをキャンセルするには、オペレーション ID が必要です。キャンセルするオペレーションを AlloyDB が認識できるように、この ID を gcloud CLI または REST API コマンドで指定する必要があります。

プライマリ インスタンスのアップグレードが特定の時点に達した後、アップグレードをキャンセルすることはできません。

メジャー バージョンのインプレース アップグレードを開始すると、オペレーション ID がレスポンスの name フィールドに返されます。レスポンスの例をご覧ください。

オペレーション ID は、AlloyDB クラスタに対する operations.list 呼び出しによって確認することもできます。

アップグレードをキャンセルする

メジャー バージョンのアップグレードをインプレースでキャンセルする手順は次のとおりです。

コンソール

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. リストからクラスタを選択します。[概要] ページが表示されます。

  3. [アップグレード ステータス] をクリックします。

  4. [Cancel] をクリックします。アップグレードをキャンセルできない場合、このボタンはグレー表示になります。

gcloud

gcloud alloydb operations cancel コマンドを使用してオペレーションをキャンセルします。

gcloud alloydb operations cancel OPERATION_ID

OPERATION_ID 変数は、オペレーションの ID に置き換えます。

UpgradeClusterStatuscancellablegcloud alloydb operations cancel コマンドの出力で false の場合、AlloyDB はキャンセル リクエストを無視してアップグレードを続行します。この場合、API はエラーをスローせず、空のレスポンスを返します。アップグレード ステータスの詳細については、クラスタのメジャー バージョンのアップグレードをモニタリングするをご覧ください。

REST v1beta

次のコマンドを実行します。

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

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

  • PROJECT_ID: プロジェクト ID。
  • OPERATION_ID: インポートまたはエクスポートのオペレーションの ID。

UpgradeClusterStatuscancellablefalse の場合、アップグレードをキャンセルすることはできません。

リクエストを送信するには、次のいずれかのオプションを使用します。

curl(Linux、macOS、Cloud Shell)

次のコマンドを実行します。

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel"
  

PowerShell(Windows)

次のコマンドを実行します。

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID/cancel"| Select-Object -Expand Content
    

次のような JSON レスポンスが返されます。

レスポンス

この REST API 呼び出しはレスポンスを返しません。

メジャー バージョンのインプレース アップグレードを完了する

メジャー バージョンのアップグレードを完了するには、AlloyDB Studiopsql、またはその他の接続方法を使用して AlloyDB インスタンスに接続します。

AlloyDB 以外のシステムを使用している場合は、システムのドキュメントで接続手順を確認してください。

クラスタをアップグレードしたら、次の手順でアップグレードを完了します。

  1. pglogical を無効にした場合は、pglogical レプリケーションを再度有効にします。pglogical レプリケーションを有効にすると、必要なレプリケーション スロットが自動的に作成されます。

    1. 次のコマンドを使用して、宛先レプリカの pglogical サブスクリプションを削除します。

      select pglogical.drop_subscription(subscription_name name);
      

      name は、既存のサブスクリプションの名前に置き換えます。次に例を示します。

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    1. AlloyDB プライマリ インスタンスに次の接続情報を指定して、移行先またはレプリカで pglogical サブスクリプションを再作成します。

      SELECT pglogical.create_subscription(
       subscription_name :='test_sub',<br>
       provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
      );
      
    2. 次のコマンドを使用して、サブスクリプションのステータスを確認します。

      SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    3. レプリケーションをテストします。書き込みトランザクションを実行して、変更が宛先に反映されていることを確認します。

  1. データベースの統計情報を更新します。

    アップグレードが完了したら、プライマリ クラスタで ANALYZE を実行してシステム統計情報を更新します。正確な統計情報があれば、PostgreSQL のクエリ プランナーが最適なクエリ処理を行うことができます。統計情報がないと、クエリプランが不正確になり、パフォーマンスが低下してメモリが過剰に消費される可能性があります。

  2. 受け入れテストを実行して、アップグレード後のシステムが想定どおり動作することを確認します。

  3. アップグレードされたデータベースのインプレース メジャー バージョンが、Google Cloud コンソールのクラスタの [概要] ページに表示されていることを確認します。

以前のメジャー バージョンに戻す

アップグレードしたデータベース システムが期待どおりに機能しない場合は、アップグレード前の状態に戻す必要があります。これを行うには、アップグレード前のバックアップ(AlloyDB がアップグレード プロセス中に自動的に作成するバックアップまたは既存のアップグレード前のバックアップ)から復元して、アップグレード前の状態の新しいクラスタを作成します。

アップグレード前の状態に復元する手順は次のとおりです。

  1. 復元元のアップグレード前のバックアップを特定します。アップグレード プロセス中に、AlloyDB は接頭辞 pre-upgrade-bkp のアップグレード前バックアップを自動的に作成します。詳細については、バックアップのリストを表示するをご覧ください。

  2. アップグレード前のバックアップからの復元を開始します。これにより、以前の PostgreSQL バージョンの新しいクラスタが作成されます。詳細については、保存されたバックアップからクラスタを復元するをご覧ください。

  3. アプリケーションを接続します。復元されたクラスタとそのリードレプリカの詳細でアプリケーションを更新します。復元したクラスタでトラフィックの処理を再開できます。

アップグレード前の時点にポイントインタイム リカバリを実行することもできます。詳細については、ポイントインタイム リカバリ(PITR)を使用するをご覧ください。

制限事項

AlloyDB のインプレース メジャー バージョン アップグレードには、次の制限が影響します。

  • セカンダリ クラスタでは、メジャー バージョンのインプレース アップグレードを実行できません。
  • 1,000 を超えるデータベースを持つインスタンスをあるバージョンから別のバージョンにアップグレードするには、長い時間がかかり、アップグレードがタイムアウトする可能性があります。
  • AlloyDB は、pg_largeobject_metadata を使用するクラスタのアップグレードをサポートしていません。select count(*) from pg_largeobject_metadata; がゼロ以外の場合、アップグレードは失敗します。
  • 特にオブジェクト数の少ない大規模なデータベースの場合、アップグレードごとのバックアップまたはアップグレード後のバックアップが完了する前に、メジャー バージョンのインプレース アップグレード オペレーションが完了することがあります。
  • アップグレードされたインスタンスで書き込みが再開されてから、アップグレード後のバックアップが作成されるまでに、短い遅延が生じることがあります。つまり、アップグレード後のバックアップの内容は、メジャー バージョンのアップグレード前の DB の内容と一致しない可能性があります。
  • インプレース メジャー バージョン アップグレードが失敗した場合でも、アップグレード前のバックアップが作成されることがあります。
  • 自動アップグレード バックアップは継続的であるため、継続的なバックアップと復元の最大保持期間に達するまで削除できません。最大保持期間に達すると、バックアップはガベージ コレクションされます。または、gcloud CLI を使用してバックアップを手動で削除することもできます。詳細については、バックアップの削除に関する制限事項をご覧ください。

次のステップ