新しいメジャー・バージョンへのアップグレード
データベースのメジャーバージョンがEOL(End Of Life)に近づいている場合、最新のメジャーバージョンにアップグレードすることをお勧めします。
IBM Cloud カタログ ページ、 Cloud Databases CLI プラグイン・コマンド ibmcloud cdb deployables-show、または
Cloud Databases API /deployables エンドポイントから、使用可能な Databases for PostgreSQL のバージョンを見つけます。
新規インスタンスにアップグレードする場合は、アプリケーション内の接続情報も変更する必要があります。
PostgreSQL からより新しい PostgreSQL メジャーバージョンにアップグレードするための要件 v13
pg_repackがインストールされている場合は、アップグレードを実行する前に削除する必要があります。 これは、次のようなコマンドを使用して行うことができます。
DROP EXTENSION pg_repack;
アップグレード後に、 pg_repack を再インストールします。 これは以下のコマンドで実行できる:
CREATE EXTENSION pg_repack;
PostGIS, を使用している場合は、 PostgreSQL をアップグレードする前に、まず PostGIS をアップグレードする必要があります。 これは、 PostGIS がインストールされたデータベースに対して以下のコマンドを実行することで行うことができる。
SELECT postgis_extensions_upgrade();
以下のクエリーを使用して、 PostGIS 拡張機能のアップグレードを検証する。
SELECT postgis_full_version();
読み取り専用レプリカからのアップグレード
読み取り専用レプリカを構成する ことによってアップグレードします。 配置と同じデータベース バージョンの読み取り専用レプリカをプロビジョニングし、そのレプリカがすべてのデータをレプリケートするのを待ちます。 配置とそのレプリカが同期されたら、読み取り専用のレプリカを、新バージョンのデー タベースを実行する完全なスタンドアロン配置に昇格およびアップグレードします。
アップグレードと昇格のステップを実行するには、リクエスト本文にアップグレードしたいバージョンを指定した /deployments/{id}/remotes/promotion エンドポイントへの POST リクエストを使用します。
この要求は次のようになります。
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"promotion": {
"version": "14",
"skip_initial_backup": false
}
}' \
skip_initial_backup はオプションです。 true に設定されている場合、新規デプロイメントは、プロモーションの完了時に初期バックアップを実行しません。 新規デプロイメントは、次回の自動バックアップが実行されるか、オンデマンド・バックアップを実行するまでバックアップされないという犠牲を伴うことで、短時間で使用可能になります。
プロモーションとアップグレードのドライ・ラン
メジャーバージョンアップの効果を評価するには、ドライランを実施する。 ドライランにより、プロモーションとアップグレードがシミュレートされ、結果がデータベース・ログに出力されます。 ログ分析統合 により、データベースのログにアクセスして表示できます。 これにより、現在実行中の拡張機能付きバージョンを、目的のバージョンに正常にアップグレードできるようになります。
ドライ・ランを実行するには、skip_initial_backup が false に設定されており、version が定義されている必要があります。
コマンドは次のようになります。
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"promotion": {
"version": "14",
"skip_initial_backup": false,
"dry_run": true
}
}' \
アップグレードのバックアップと復元
新しいデータベース・バージョンを実行する新しいデプロイメントにデータの バックアップをリストア することで、データベース・バージョンをアップグレードできます。
UI でのアップグレード
_デプロイメント・ダッシュボード_の 「バックアップ」 メニューから バックアップをリストア するときに、新規バージョンにアップグレードします。 バックアップの [Restore] をクリックすると、新しいタブのプロビジョニング ページが表示されます。 オプションのひとつにデータベースのバージョンがあり、アップグレード可能なバージョンが自動入力されます。 バージョンを選択し、[ 作成] をクリックして、プロビジョニングとリストアプロセスを開始します。
CLI を使用したアップグレード
IBM Cloud CLIを使用してバックアップからアップグレードおよびリストアするには、リソースコントローラからprovisioningコマンドを使用します。
ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>
パラメーターの service-name、service-id、service-plan-id、region はすべて必須です。 また、-p に、バージョンとバックアップ ID のパラメーターを JSON オブジェクトで指定してください。 新規デプロイメントは、バックアップ時のソース・デプロイメントと同じディスクおよびメモリーを適用して自動的にサイズ変更されます。
このコマンドは、次のようになります。
ibmcloud resource service-instance-create example-upgrade databases-for-postgresql standard us-south \
-p \ '{
"backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":14
}'
API を使用したアップグレード
バックアップからのアップグレードに使用する前に、リソースコントローラAPI を使用するために必要な手順を完了してください。 次に、APIに POST。 パラメーターの name、target、resource_group、resource_plan_id はすべて必須です。 バージョンとバックアップ ID も指定します。 新規デプロイメントのメモリーとディスクの割り振りは、バックアップ時のソース・デプロイメントと同じになります。
このコマンドは、次のようになります。
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "my-instance",
"target": "bluemix-us-south",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "databases-for-postgresql-standard",
"backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":14
}'
強制アップグレード
サポート終了日を過ぎると、非推奨バージョンでアクティブなDatabases for PostgreSQLデプロイメントはすべて、次のサポート対象バージョンに強制的にアップグレードされます。 例えば、 PostgreSQL バージョン13(非推奨)はバージョン14にアップグレードします。
以下のようなリスクを避けるため、耐用年数終了前にアップグレードすること:
- このタイプの強制アップグレードにはSLAは提供されない。
- データが失われる可能性があります。
- アプリケーションのダウンタイムが長引く可能性があります。
- 新しいバージョンと互換性がない場合、アプリケーションが動作しなくなる可能性があります。
- このアップグレードのタイミングは、あなたの配備では制御でき ません。
- この強制アップグレードにはロールバック処理はありません。
使用終了日については、バージョンポリシーのページを参照のこと。
バージョンアップ時の_管理者ユーザーの_問題
PostgreSQL 16から、役割権限の執行がより厳しくなった。 対照的に、以前のバージョンでは、 CREATEROLE 属性を持つロールが他のロールを管理することができました。バージョン16以降では、あるロールが他のロールに ADMIN OPTION 、そのロールを許可または取り消す必要があります。
PostgreSQL v15 以前から PostgreSQL v16 以降にデータベースをアップグレードする場合、以下のような特権関連のエラーが発生することがあります:
ERROR: only roles with the ADMIN OPTION on role "some_role" may grant this role
DETAIL: role "admin" is not permitted to grant role "some_role"
この問題に対処するため、期待される役割管理の動作を復元するように設計された組み込みのヘルパー関数 grant_admin_option_to_roles。
この関数の特徴は、次のとおりです。
- PostgreSQL v15 以前のバージョンから PostgreSQL 16 以降にアップグレードされたデータベースにのみ適用されます(上記のエラーが発生した場合)。
- 修正を適用するロールの任意のリストを受け付けます。
admin userによってのみ実行できる。- 複数回実行しても安全である(idempotent)。
使用例:
SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');
これにより、 admin user は、アップグレードされたインスタンスで指定されたロールを管理するための適切な ADMIN OPTION 権限を保持するようになります。