このページでは、AlloyDB for PostgreSQL クラスタのデータベースのメジャー バージョンをインプレースでアップグレードする方法について説明します。データベースのインプレース メジャー バージョン アップグレードのユースケース、ワークフロー、自動バックアップについては、データベースのインプレース メジャー バージョン アップグレードの概要をご覧ください。
データベースのメジャー バージョン アップグレードを計画する
データベースのメジャー バージョンのアップグレードを計画する手順は次のとおりです。
現在のデータベースのメジャー バージョンを確認します。
コンソール
Google Cloud コンソール で、[クラスタ] ページに移動します。
リストからクラスタを選択します。[概要] ページが表示されます。
[バージョン] フィールドでデータベースのメジャー バージョンを確認します。
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
次の表から移行先データベースのメジャー バージョンを特定します。AlloyDB がサポートするデータベース バージョンの一覧については、データベースのバージョンとバージョン ポリシーをご覧ください。
ソースのメジャー バージョン サポートされているターゲット メジャー バージョン POSTGRES_14 - POSTGRES_15
- POSTGRES_16
POSTGRES_15 - POSTGRES_16
データベースの各メジャー バージョンで提供される機能を確認します。
対処が必要な互換性のない問題を特定します。新しいメジャー バージョンでは、互換性のない変更が導入され、アプリケーション コード、スキーマ、データベース設定の変更が必要になる場合があります。
本番環境クラスタでメジャー バージョン アップグレードを開始する前に、クラスタをクローンし、クローン作成したクラスタでメジャー バージョン アップグレードをテストすることをおすすめします。
アップグレードが正常に完了したことを確認するだけでなく、アップグレードされたクラスタでアプリケーションが期待どおりに動作することをテストします。
メジャー バージョン アップグレードに向けてクラスタを準備する
データベースへの接続が必要な手順を完了するには、AlloyDB Studio、psql、またはその他の接続方法を使用します。
- クロスリージョン レプリカを削除または昇格します。データベースのインプレース メジャー バージョン アップグレードは、クロスリージョン レプリカをサポートしていません。詳細については、クロスリージョン レプリケーションをご覧ください。
postgres
データベースとtemplate1
データベースのエンコードとロケール設定がtemplate0
データベースと同じであることを確認します。次のコマンドを実行します。
SELECT pg_encoding_to_char(encoding), datcollate, datctype FROM pg_database WHERE datname IN ('postgres', 'template1', 'template0');
postgres
データベースまたはtemplate1
データベースの値がtemplate0
データベースの値と異なる場合、アップグレードは失敗します。この問題を解決する方法は次のとおりです。他の(template0 以外の)データベースをダンプします。詳細については、データのエクスポートをご覧ください。
DROP DATABASE <database_name>;
を実行してデータベースを削除します。次のコマンドを実行して、
template0
データベースと同じエンコードとロケール設定でデータベースを再作成します。CREATE DATABASE <database_name> ENCODING = '<template0_encoding>' LC_COLLATE = '<template0_datcollate>' LC_CTYPE = '<template0_datctype>';
データを再読み込みします。詳細については、データのインポートをご覧ください。
AlloyDB クラスタが論理レプリケーションのソースである場合は、ダウンストリーム サブスクリプションを無効にして、すべての論理レプリケーション スロットを削除します。アップグレード後にサブスクリプションを再度有効にして、論理レプリケーション スロットを再作成できます。AlloyDB インスタンスが論理レプリケーション ターゲットのみである場合、これらの手順は必要ありません。サブスクリプションを無効にして論理レプリケーション スロットを削除する手順は次のとおりです。
サブスクライバーまたはダウンストリーム レプリケーション ターゲットで、各ダウンストリーム サブスクリプションを無効にします。アップグレード中の 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;
次のコマンドを実行して、AlloyDB プライマリ インスタンスのすべての論理レプリケーション スロットを削除します。
SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
PostgreSQL 拡張機能を管理します。詳細については、データベース拡張機能を構成するをご覧ください。
アップグレード前のチェックでは、拡張機能の互換性がないことが検出され、違反と推奨されるアクションがログに表示されます。詳細については、アップグレード前のチェックの失敗を表示するをご覧ください。
次の操作が必要になる場合があります。
- ターゲット バージョンでサポートされなくなった拡張機能がある場合は、それを削除します。
PostGIS と関連する拡張機能(
address_standardizer
、address_standardizer_data_us
、postgis_raster
、postgis_sfcgal
、postgis_tiger_geocoder
、postgis_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();
次のクエリを実行して各データベースの
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 がクラスタのメジャー バージョン アップグレードの準備ができていないと判断した場合、リクエストは失敗します。詳細については、メジャー バージョンのインプレース アップグレードのトラブルシューティングをご覧ください。
データベースのメジャー バージョンをインプレースでアップグレードする手順は次のとおりです。
コンソール
Google Cloud コンソール で、[クラスタ] ページに移動します。
リストからクラスタを選択します。[概要] ページが表示されます。
[アップグレード] をクリックして、データベースのメジャー バージョンのアップグレード プロセスを開始します。
[データベースのバージョンを選択] 手順で、使用可能なデータベースのメジャー バージョンの 1 つをターゲット メジャー バージョンとして選択します。
[続行] をクリックします。
[クラスタをアップグレード] ステップの [クラスタ ID] フィールドに、クラスタの名前を入力します。
[アップグレードを開始] をクリックします。[アップグレード ステータス] ステップに移動し、アップグレード ステータスを確認します。詳細については、データベースのメジャー バージョンのアップグレードをモニタリングするをご覧ください。
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 コンソールでアップグレード ステータスを確認する手順は次のとおりです。
Google Cloud コンソール で、[クラスタ] ページに移動します。
アップグレードするクラスタを選択します。[概要] ページが表示されます。
[概要] ページを開きます。
[アップグレード ステータス] をクリックします。[アップグレード ステータス] ページが表示されます。ここで、アップグレードのステータスを確認できます。
gcloud
gcloud CLI でアップグレード ステータスを確認する手順は次のとおりです。
次のコマンドを実行して、アップグレード オペレーション 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
次のコマンドを実行して、アップグレードのステータスをモニタリングします。
gcloud alloydb operations describe OPERATION_ID --region=REGION https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe
REST v1beta
REST API でアップグレード ステータスを確認する手順は次のとおりです。
アップグレード オペレーション ID を取得します。
operations.list
メソッドで次のGET
リクエストを使用して、すべてのアップグレード オペレーションを一覧表示し、ターゲット クラスタに対応するオペレーションを見つけます。GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade
REST API 呼び出しは、オペレーション ID を同期レスポンスとして返します。
アップグレードのステータスをモニタリングします。
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
: 全体的なアップグレード オペレーションのステータス。有効な値はSUCCESS
、FAILED
、PARTIAL_SUCCESS.
です。message
: アップグレード オペレーションの結果の概要を表示します。clusterUpgradeDetails
: アップグレードされるクラスタのアップグレード詳細。このフィールドは配列です。AlloyDB ではクラスタのアップグレードは 1 回のみ許可されるため、エントリは 1 つだけにする必要があります。name
: クラスタの完全修飾名。upgradeStatus
: クラスタのアップグレードのステータス。指定できる値は、SUCCESS
、FAILED
、PARTIAL_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
ログ名に公開します。
アップグレード関連のログを表示する手順は次のとおりです。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが「Logging」の結果を選択します。
ログ名として
alloydb.googleapis.com/postgres_upgrade
を選択します。これはクエリ"logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
に変換されます。次のラベルを使用してログをフィルタします。
ラベル 説明 LOG_TYPE
ログを生成したアップグレード ステージ。有効な値は ALLOYDB_PRECHECK
、PG_UPGRADE_CHECK
、PG_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 が不明で、オペレーションが期限切れになっている場合に、クラスタのアップグレード ログを表示する手順は次のとおりです。
クラスタの AlloyDB 事前チェックログをクエリします。
logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.LOG_TYPE="ALLOYDB_PRECHECK" resource.labels.cluster_id=CLUSTER_ID
OPERATION_NAME
ログラベルからOperation_ID
を見つけます。次の例では、
OPERATION_NAME
のOperation_ID
はoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013
です。labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
特定のオペレーションのすべての
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
呼び出しによって確認することもできます。
アップグレードをキャンセルする
メジャー バージョンのアップグレードをインプレースでキャンセルする手順は次のとおりです。
コンソール
Google Cloud コンソール で、[クラスタ] ページに移動します。
リストからクラスタを選択します。[概要] ページが表示されます。
[アップグレード ステータス] をクリックします。
[Cancel] をクリックします。アップグレードをキャンセルできない場合、このボタンはグレー表示になります。
gcloud
gcloud alloydb operations cancel
コマンドを使用してオペレーションをキャンセルします。
gcloud alloydb operations cancel OPERATION_ID
OPERATION_ID 変数は、オペレーションの ID に置き換えます。
UpgradeClusterStatus
の cancellable
が gcloud 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。
UpgradeClusterStatus
の cancellable
が false
の場合、アップグレードをキャンセルすることはできません。
リクエストを送信するには、次のいずれかのオプションを使用します。
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 Studio、psql、またはその他の接続方法を使用して AlloyDB インスタンスに接続します。
AlloyDB 以外のシステムを使用している場合は、システムのドキュメントで接続手順を確認してください。
クラスタをアップグレードしたら、次の手順でアップグレードを完了します。
pglogical
を無効にした場合は、pglogical
レプリケーションを再度有効にします。pglogical
レプリケーションを有効にすると、必要なレプリケーション スロットが自動的に作成されます。次のコマンドを使用して、宛先レプリカの
pglogical
サブスクリプションを削除します。select pglogical.drop_subscription(subscription_name name);
name
は、既存のサブスクリプションの名前に置き換えます。次に例を示します。postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub'); -[ RECORD 1 ]-----+-- drop_subscription |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' );
次のコマンドを使用して、サブスクリプションのステータスを確認します。
SELECT * FROM pglogical.show_subscription_status('test_sub');
レプリケーションをテストします。書き込みトランザクションを実行して、変更が宛先に反映されていることを確認します。
データベースの統計情報を更新します。
アップグレードが完了したら、プライマリ クラスタで
ANALYZE
を実行してシステム統計情報を更新します。正確な統計情報があれば、PostgreSQL のクエリ プランナーが最適なクエリ処理を行うことができます。統計情報がないと、クエリプランが不正確になり、パフォーマンスが低下してメモリが過剰に消費される可能性があります。受け入れテストを実行して、アップグレード後のシステムが想定どおり動作することを確認します。
アップグレードされたデータベースのインプレース メジャー バージョンが、Google Cloud コンソールのクラスタの [概要] ページに表示されていることを確認します。
以前のメジャー バージョンに戻す
アップグレードしたデータベース システムが期待どおりに機能しない場合は、アップグレード前の状態に戻す必要があります。これを行うには、アップグレード前のバックアップ(AlloyDB がアップグレード プロセス中に自動的に作成するバックアップまたは既存のアップグレード前のバックアップ)から復元して、アップグレード前の状態の新しいクラスタを作成します。
アップグレード前の状態に復元する手順は次のとおりです。
復元元のアップグレード前のバックアップを特定します。アップグレード プロセス中に、AlloyDB は接頭辞
pre-upgrade-bkp
のアップグレード前バックアップを自動的に作成します。詳細については、バックアップのリストを表示するをご覧ください。アップグレード前のバックアップからの復元を開始します。これにより、以前の PostgreSQL バージョンの新しいクラスタが作成されます。詳細については、保存されたバックアップからクラスタを復元するをご覧ください。
アプリケーションを接続します。復元されたクラスタとそのリードレプリカの詳細でアプリケーションを更新します。復元したクラスタでトラフィックの処理を再開できます。
アップグレード前の時点にポイントインタイム リカバリを実行することもできます。詳細については、ポイントインタイム リカバリ(PITR)を使用するをご覧ください。
制限事項
AlloyDB のインプレース メジャー バージョン アップグレードには、次の制限が影響します。
- セカンダリ クラスタでは、メジャー バージョンのインプレース アップグレードを実行できません。
- 1,000 を超えるデータベースを持つインスタンスをあるバージョンから別のバージョンにアップグレードするには、長い時間がかかり、アップグレードがタイムアウトする可能性があります。
- AlloyDB は、
pg_largeobject_metadata
を使用するクラスタのアップグレードをサポートしていません。select count(*) from pg_largeobject_metadata;
がゼロ以外の場合、アップグレードは失敗します。 - 特にオブジェクト数の少ない大規模なデータベースの場合、アップグレードごとのバックアップまたはアップグレード後のバックアップが完了する前に、メジャー バージョンのインプレース アップグレード オペレーションが完了することがあります。
- アップグレードされたインスタンスで書き込みが再開されてから、アップグレード後のバックアップが作成されるまでに、短い遅延が生じることがあります。つまり、アップグレード後のバックアップの内容は、メジャー バージョンのアップグレード前の DB の内容と一致しない可能性があります。
- インプレース メジャー バージョン アップグレードが失敗した場合でも、アップグレード前のバックアップが作成されることがあります。
- 自動アップグレード バックアップは継続的であるため、継続的なバックアップと復元の最大保持期間に達するまで削除できません。最大保持期間に達すると、バックアップはガベージ コレクションされます。または、gcloud CLI を使用してバックアップを手動で削除することもできます。詳細については、バックアップの削除に関する制限事項をご覧ください。
次のステップ
- 詳細については、データベースのメジャー バージョンをインプレースでアップグレードするをご覧ください。
- インプレース メジャー バージョン アップグレードのトラブルシューティングを行う。
- データベースのメジャー バージョンのインプレース アップグレード エラーについて学習する。