新しいメジャー・バージョンへのアップグレード
2025年12月現在、3つの異なる Databases for PostgreSQL アップグレードパスを提供しています:
- 新しいメジャーバージョンへのインプレースアップグレード。
- バックアップからの復元中。
- 読み取り専用レプリカからのアップグレード。
データベースのメジャーバージョンがサポート終了(EOL)に近づいた場合は、最新のメジャーバージョンにアップグレードすることをお勧めします。
IBM Cloud カタログ ページ、 Cloud Databases CLI プラグイン・コマンド ibmcloud cdb deployables-show、または
Cloud Databases API /deployables エンドポイントから、使用可能な Databases for PostgreSQL のバージョンを見つけます。
新規インスタンスにアップグレードする場合は、アプリケーション内の接続情報も変更する必要があります。
以下のコマンド例では、 {id} にデータベースインスタンスの完全な CRN が必要です。 CRNには特殊文字が含まれているため、「not_found」エラーを回避するには、 URL エンコードする必要があります。
PostgreSQL の新しいメジャーバージョンへのアップグレード要件
メジャーバージョンのアップグレードに着手する前に、まず維持する必要がある拡張機能、レプリケーションオブジェクト、およびアプリケーションの依存関係を確認してください。
一部の拡張機能や論理レプリケーションオブジェクトは、特定のバージョンに固有であるか、 PostgreSQL のメジャーバージョンと一致する必要があるサーバーサイドコンポーネントに依存しています。 アップグレード前にこれらを削除しておくと、障害を防ぐことができ、新しいバージョンが稼働した後に、サポート対象のオブジェクトのみを再作成することができます。
確認すべき拡張機能および論理レプリケーションオブジェクト
アップグレードの前に、以下の項目を確認してください:
拡張機能
pg_repackold_snapshotwal2jsonanonPostGIS
レプリケーションスロット
Logical replication slots
アプリケーションの依存関係
アプリケーションが依存している拡張機能やレプリケーション オブジェクトを削除する場合は、アップグレードを実行する前に、データ フローとアプリケーションの動作を確認してください。 また、 PostgreSQL の特定の機能に依存しているアプリケーションロジックに、どのような影響が生じる可能性があるかについても検討してください。
pg_repack
アップグレード前に pg_repack を削除し、アップグレード後に再作成してください。 pg_repack はバージョン固有の拡張機能とクライアント/サーバーコンポーネントを使用しており、これらは PostgreSQL のメジャーバージョンと一致している必要があります。
DROP EXTENSION pg_repack;
アップグレード後は、ワークロードで引き続きその拡張機能が必要な場合にのみ、再作成してください。
CREATE EXTENSION pg_repack;
old_snapshot
アップグレードの前に、 old_snapshot を削除してください。 PostgreSQL 18へのアップグレード後は、サポート対象外となるため、再作成しないでください。
DROP EXTENSION old_snapshot;
wal2json レプリケーションスロット
論理デコードに wal2json を使用している場合は、アップグレード前に、関連するすべてのレプリケーションスロットを削除する必要があります。 pg_upgrade ユーティリティは、レプリケーションスロットが存在している間はメジャーバージョンのアップグレードを厳格に禁止しており、重大なエラーを発生させてアップグレードを中止します。
アップグレード前:
- 未処理のWALデータがすべて処理済みであることを確認してください。
- レプリケーションスロットを使用しているアプリケーションを停止してください。
- レプリケーションスロットを削除する:
SELECT pg_drop_replication_slot('your_slot_name');
アップグレード後、必要に応じてレプリケーションスロットを再作成できます。 なお、 wal2json は CREATE EXTENSION を使用してインストールされるのではなく、データベースパラメータ(wal_level、 max_replication_slots、 max_wal_senders )およびテーブルの権限を通じて設定されるため、アップグレードの妨げにはなりません。
anon
アップグレードの前に「 anon 」拡張機能を無効にし、アップグレード後も引き続き必要であれば、再度有効にしてください。 anon を削除する前に、追加の手順が必要です。
「 anon 」拡張機能がインストールされている場合は、アップグレードを実行する前に、以下の手順を完了し、管理者ユーザーとしてコマンドを実行してください。
-
すべてのマスキングルールを削除する(有効な場合)。
SELECT anon.remove_masks_for_all_columns(); -
ロールのマスク機能を無効にします(ロールがマスクされていると、アップグレードに失敗する可能性があります)。
SECURITY LABEL FOR anon ON ROLE <role_name> IS NULL; -
カスケード・オプションで
anonのエクステンションを削除する。DROP EXTENSION anon CASCADE; -
インスタンス内の複数のデータベースに
anon拡張機能がインストールされている場合は、各データベースについて、記載された手順を実行してください。 -
アップグレード完了後、
anon拡張を再度有効にし、必要に応じてマスキングルールを再適用する。
アップグレードを実行する前に、マスキングの一貫性を確保するために、エクステンションを削除する前と後の両方でデータを検証することを強くお勧めします。
PostGIS
PostGIS, をご利用の場合は、 PostgreSQL をアップグレードする前に、まず PostGIS をアップグレードしてください。
SELECT postgis_extensions_upgrade();
以下のクエリーを使用して、 PostGIS 拡張機能のアップグレードを検証する。
SELECT postgis_full_version();
Logical replication slots
アップグレードの前に、すべての論理レプリケーションスロットを削除し、アップグレード後にそれらを再作成してください。 論理スロットはソースサーバーの状態に紐づいているため、アップグレード後のインスタンス上でクリーンな状態で再作成する必要があります。
SELECT pg_drop_replication_slot('<slot_name>');
インプレースでのメジャーバージョンアップグレード
インプレースでのメジャーバージョンアップグレードにより、デプロイメントをサポート対象の メジャーバージョン にアップグレードできるため、 バックアップを復元する を使用して新しいデプロイメントを作成する必要がなくなります。 このアプローチでは、デプロイメントを再構成する必要なく、同じ接続文字列を維持します。 ただし、新しいメジャーバージョンがアプリケーションの調整を必要とする場合、これらは対応する必要があります。
メジャーバージョンアップグレードのインプレース実施期間中、デプロイメントは一時的なダウンタイムを経験します。 これは、このプロセスがベンダー推奨のアップグレード手順に従っているため、予想されることです。 正確な期間は、デプロイのスキーマのサイズと複雑さによって異なる場合があります。 この間にサービスがアップグレードされたインスタンスからデータを読み取る必要がある場合は、 スタンバイ・インスタンスを作成 し、アプリケーションの接続詳細を更新してスタンバイ・インスタンスを指すようにします。 これにより、アップグレードを開始する前に、データベースの最新コピーが確保されます。 インプレースアップグレードが正常に完了しなかった場合、スタンバイインスタンスをプライマリインスタンスとして昇格させて使用することも可能です。 詳細については、 メジャーバージョンアップ時のリードオンリーレプリカステータスを 参照してください。
Databases for PostgreSQL 顧客が自身のバックアップを柔軟に管理できるようにします。 インプレースでのメジャーバージョンアップグレード処理では、タスクの前後で自動的にバックアップが作成されることはありません。 アップグレードが正常に完了しない場合は、最新の有効なバックアップから新しいインスタンスにデプロイメントを復元する必要があるかもしれません。
復旧を円滑に行うためには、IPUの実行前に最新のバックアップを作成し、IPU完了直後にもう一度バックアップを作成することを強くお勧めします。
- IPU実施前のバックアップは、データの整合性を保護するだけでなく、アップグレードが失敗した場合に備えて、データベースの最新状態を復元するためのソースとなります。
- IPU実行直後のバックアップは、新しい PostgreSQL メジャーバージョンのタイムラインにおける最初の復元ポイントとなります。
- IPUが正常に完了した後、次回の定期バックアップを待つと、そのバックアップが実行されるまで、新バージョンのPITRおよび復元操作は利用できません。 IPUの実行前のPITRタイムスタンプは、依然として特定可能です。 これにより、IPU実施前の最新のバックアップとPITRを組み合わせて、IPU実施前の PostgreSQL のバージョンを新しい環境に復元することができます。 「 バックアップと復元」のアップグレード機能 を使用する場合も、同様の計画が適用されます。 詳細については、「 ポイント・イン・タイム・リカバリ(PITR) 」を参照してください。
自動バックアップのスケジュールを待つのではなく、両方のバックアップを手動で実行することで、アップグレードの前後において、より予測可能な復旧時点を確保できます。
開始前に
アップグレード手順を開始する前に、以下の点を考慮してください。
-
UI、API、CLI、またはTerraformを使用してデプロイ機能情報を確認し、現在のデプロイバージョンに対してバージョンアップが利用可能かどうかを確認してください。
例:CLI を使用してバージョンのアップグレード情報を確認する:
ibmcloud cdb capability-show versions postgresql -
IPUを起動する前に、必ずこのトピックに記載されている事前チェックに関する要件を確認してください。 IPUはソース環境上で直接実行され、新しいインスタンスは作成されません。 お客様安全を確保するため、本サービスではアップグレード開始前に事前チェックを実施し、リスクが検出された場合は操作をブロックします。 特に、以下の項目を確認してください:
- このデプロイメントには、最大で3人のメンバーがいます。
- デプロイメントの状態は正常です。
- デプロイメントには、少なくとも10%の空きディスク容量があります。 IPU事前チェックにおけるデフォルトのディスク使用率の上限は90%です。
- お客様の環境では、I/Oへの負荷はそれほど高くないようです。 IPUプレチェックのデフォルトの最大許容I/O使用率は90%です。
- スキーマのサイズとオブジェクト数は、デフォルトの事前チェックの閾値の範囲内です。 デフォルトでは、個々のスキーマのサイズは100 GBを超えてはならず、インデックスとシーケンスの合計数は50,000件以下でなければなりません。
- アップグレードの前に、必要な拡張および論理レプリケーションスロットのクリーンアップをすべて完了しました。
-
各メジャーバージョンには、以前のバージョンとの下位互換性がない機能が含まれている場合があります。 データベースベンダーの リリースノート を確認し、アプリケーションに影響を与える可能性のある変更点がないか確認してください。
-
デプロイメントを以前のバージョンにダウングレードすることはサポートされていません。
-
メジャーバージョンのインプレースアップグレードは、開始後はキャンセルできません。
-
最新のバックアップがない場合は、アップグレードを行う前にバックアップを取ることを検討してください。
| 出典: PostgreSQL 版 | サポートされているインプレースアップグレードの対象 |
|---|---|
| 14 | 15、18 |
| その他、サポートされているすべてのソースバージョン | 18 |
なお、アップグレードが完了すると、データベースの PostgreSQL のメジャーバージョンが更新される点にご注意ください。 PostgreSQL はデータをバージョン固有の形式で保存するため、アップグレード前のバックアップやPITRポイントは以前のバージョンのタイムラインに属しており、アップグレード後のバージョンには復元できません。 新しいバージョンでも完全な復元およびPITR(特定時点への復旧)機能を維持するには、アップグレード完了直後に新しいバックアップを作成してください。 そのバックアップは、新しいバージョンのタイムラインにおける今後の復旧作業の基準となります。
IPUが失敗した場合でも、アップグレード前の有効なバックアップを使用し、PITR(ポイント・イン・タイム・リストア)によって、以前の PostgreSQL バージョンを新しいインスタンスに復元することができます。
UI でのアップグレード
-
アップグレードプロセスをテストするために、新しい Databases for PostgreSQL を作成します。
同じバージョンの既存のデプロイメントから バックアップを復元 して、デプロイメントを作成します。 -
ステージング用アプリケーションのターゲットをテスト環境のデプロイ先に向ける。
ステージングアプリケーションを更新し、テスト環境へのデプロイ先を指定してください。 テストアプリケーションがステージング環境への接続に成功し、アプリケーションが期待通りに動作することを確認してください。 ステージング環境に対して、必要なすべての性能テストおよび運用テストを実施してください。 -
「 概要 」ページの「 メジャーバージョンをアップグレード 」ボタンをクリックして、テスト環境のメジャーバージョンをアップグレードしてください。
アップグレードが完了するまでにかかる時間を確認しておき、アップグレードの有効期限設定を活用して、アップグレードをメンテナンス時間帯内に収められるようにしてください。 -
ステージング環境のアプリケーションが、新しいデータベースのバージョンで正常に動作することを確認してください。
アプリケーションが正常に動作している場合、この手順により、本番環境のデータベースをアップグレードしても問題がないことが確認できます。 -
本番用データベースの展開を新しいバージョンにアップグレードしてください。
新しいバージョンのデータベースを使用してアプリケーションが正常に動作することを確認したら、管理コンソールに戻り、本番環境のアップグレードプロセスを開始できます。 概要ページの「 デプロイメントの詳細 」セクションで、「 メジャーバージョンをアップグレード 」ボタンをクリックし、手順に従ってください。インプレースアップグレードのプロセスが開始されると、それを停止したりロールバックしたりすることはできません。 したがって、万が一エラーが発生した場合、データベースのデプロイメントが回復不能になる可能性があります。 したがって、新しいデプロイメントに復元するために使用できるバックアップを作成してください。
この expiration for starting upgrade 設定により、アップグレードジョブが自動的にキャンセルされる前に開始しなければならない「タイムアウト」期間を設定できます。 さらに、アップグレードが所定の時間枠内で完了することを確認するため、事前にステージング環境でアップグレードをテストしてください。 たとえば、1時間以内にアップグレードを完了させたい場合で、テストの結果、アップグレードに30分かかることが分かっているなら、アップグレードの実行は、アップグレードを実行すると確認してから30分以内に開始する必要があります。
したがって、有効期限を30分に設定してください。そうすれば、その時間内に開始されなければ、作業時間が予定を超過することはありません。
API を使用したアップグレード
次のコマンドを使用してインプレースアップグレードを実行します:
curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "15"}'
この expiration for starting upgrade 設定により、アップグレードジョブが自動的にキャンセルされる前に開始しなければならない「タイムアウト」期間を設定できます。 さらに、アップグレードが所定の時間枠内で完了することを確認するため、事前にステージング環境でアップグレードをテストしてください。 たとえば、1時間以内にアップグレードを完了させたい場合で、テストの結果、アップグレードに30分かかることが分かっているなら、アップグレードの実行は、アップグレードを実行すると確認してから30分以内に開始する必要があります。
したがって、有効期限を今から30分後のタイムスタンプに設定してください。そうすれば、その時間内に開始されなければ、あなたの作業時間をオーバーしないでしょう。 有効期限は、現在時刻から5分後(デフォルト)から24時間後までの間でなければなりません。 詳細については、 API Cloud Databases を参照してください。
CLI を使用したアップグレード
CDBプラグインバージョン >= 0.20.0 で利用可能
デプロイメントに対して許可されているアップグレードおよびリストア遷移の一覧を表示するには:
ibmcloud cdb deployment-capability-show <NAME|CRN> versions
必要なパラメータでコマンドをアップグレードするには:
ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>
コマンドパラメータの詳細を表示するには:
ibmcloud cdb deployment-version-upgrade --help
この expiration for starting upgrade 設定により、アップグレードジョブが自動的にキャンセルされる前に開始しなければならない「タイムアウト」期間を設定できます。 さらに、アップグレードが所定の時間枠内で完了することを確認するため、事前にステージング環境でアップグレードをテストしてください。 たとえば、1時間以内にアップグレードを完了させたい場合で、テストの結果、アップグレードに30分かかることが分かっているなら、アップグレードの実行は、アップグレードを実行すると確認してから30分以内に開始する必要があります。
したがって、有効期限を30分に設定してください。そうすれば、その時間内に開始されなければ、作業時間が予定を超過することはありません。 有効期限は、今から5分(デフォルト)から24時間の間で設定する必要があります。 有効期限を設定するには、CLI --expire-in または の2つの方法 --expire-at があります。 詳細については、コマンドのヘルプを参照してください。
Terraformによるアップグレード
Terraform プロバイダーバージョン >= で利用 1.79.2 可能。
アップグレードするには、設定 version ファイル内の値を追加または変更するだけです。
バージョンアップの前にバックアップを省略するのは危険であり、アップグレードのどの段階で失敗してもデータが失われる可能性があります。その場合、復元できる直近のバックアップが存在しないからです。 したがって、メジャーバージョンのインプレースアップグレードを開始する前に、最新のバックアップを作成しておくことをお勧めします。
アップグレードには、デフォルトのタイムアウト時間よりも長い時間がかかる場合があります。 タイムアウト値は、timeouts属性を使用してより長い値に設定できます。
Terraformは有効期限スタンプではなくタイムアウトを採用しています。 したがって、タイムアウトの更新値が有効期限として使用されるため、タイムアウト時間を長く設定してください。 たとえば、タイムアウトを20分に設定した場合、有効期限は20分に設定されます。その時間内にアップグレードが開始されない場合、期限切れとなり、アップグレードは開始されません。 有効期限は最大24時間であるため、タイムアウトを36時間に設定した場合でも、最初の24時間以内にアップグレードが開始されなければ、アップグレードは無効になります。
アップグレードが実行中の場合、一部のタスクはキューに入れられ、バージョンアップグレードが完了するまで処理されないことにご注意ください。
トラブルシューティング
アプリケーションがメジャーバージョンのインプレースアップグレード後に予期せぬ問題を示し、以前の PostgreSQL バージョンに戻す必要がある場合は、サポートチームまでご連絡ください。 復旧作業を複雑にする恐れがあるため、ご自身でPITRを開始したり、バックアップを復元したりすることは避けてください。
すべての事前チェックが完了するまで、インプレースでのメジャーアップグレードは実行されません。 このアップグレードはソースインスタンスに対して直接実行されるため、お客様のデプロイメントを保護するためにこれらの安全対策が設けられています。 アップグレードがブロックされている場合は、以下の項目を確認してください:
- メンバー数:インプレースでのメジャーバージョンアップグレードでは、最大3つのメンバーによるデプロイメントがサポートされています。 デプロイメントのメンバー数が 3 人を超える場合、事前チェックによってアップグレードがブロックされます。 水平スケーリング ではメンバーを削除することはできません。そのため、アップグレードを再試行する前に、 IBM Cloud サポート にサポートチケットを送信し、メンバー数を減らしてください。
- クラスタの状態:Patroni クラスタが正常に動作しており、リーダーとレプリカの状態が明確に確立されていることを確認してください。 パトロニが不安定状態またはフェイルオーバー状態を報告している場合、アップグレードは実行できません。
- ディスク容量:十分な空き容量があることを確認してください。 この
pg_upgradeプロセスはリンクモードを使用しており、十分なヘッドルームが必要である。 ディスク使用量が設定された制限値(デフォルト: 90%)を超えた場合、再試行前に空き領域を確保してください。 - ディスクI/O負荷:現在のI/O使用率とIOPSを確認します。 システムに高負荷がかかっている場合、パフォーマンスの低下やアップグレードの失敗を防ぐため、アップグレードは一時停止されます。
- スキーマサイズとオブジェクト数: 前述の通り、スキーマサイズはインプレースでのメジャーバージョンアップグレードの所要時間に直接影響します。 個々のスキーマが最大サイズ(デフォルト:100 GB)を超えないこと、およびインデックスとシーケンスオブジェクトの合計数が制限値(デフォルト:50,000)を下回っていることを確認してください。 大規模なスキーマや異常に多いオブジェクト数は、アップグレードを進める前にクリーンアップや最適化が必要になる場合があります。
pg_upgrade新しいシステムテーブルを作成し、古いユーザーデータファイルを再利用するだけで、迅速なアップグレードを実行します。 これらのシステムテーブルの作成に必要な時間は、データベースオブジェクトの数に比例して増加します。 リソース消費量は、 監視統合 機能を使用して評価できます。 すべてのデータベースコンポーネントがアップグレード可能でない場合、アップグレードタスクは失敗します。 これはメンテナンスが原因で発生する可能性があります。 ヘルスチェックの失敗により失敗したタスクは、後で再試行できます。 タスクが継続的に失敗する場合は、 サポート IBM Cloud にサポートチケットを開いてください。 特定のチェックがお客様の環境に関係なくアップグレードがブロックされる場合は、サポートチケットを作成して追加の支援を受けてください。
読み取り専用レプリカからのアップグレード
読み取り専用レプリカを構成する ことによってアップグレードします。 デプロイメントと同じデータベースバージョンの読み取り専用レプリカを用意し、すべてのデータがレプリケートされるまで待ちます。 デプロイメントとそのレプリカの同期が完了したら、読み取り専用レプリカを、新しいバージョンのデータベースを実行する完全なスタンドアロン・デプロイメントに昇格・アップグレードします。
アップグレードおよびプロモーションの手順を実行するには、リクエスト本文にアップグレード先のバージョンを指定して、 /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 を使用してアップグレードやバックアップからの復元を行うには、リソースコントローラーからプロビジョニングコマンドを実行します。
ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION> <SERVICE-ENDPOINTS>
パラメータ「 service-name 」、「 service-id 」、「 service-plan-id 」、「 region 」、および「 service-endpoints 」はすべて必須です。 また、-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
}'--service-endpoints "public"
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 以降、ロールの権限の適用がより厳格になりました。 これは、 PostgreSQL における上流側のアーキテクチャ変更であり、 {{site.data.keyword.ibm}} に固有の動作変更ではありません。 以前のバージョンでは、 CREATEROLE 属性を持つロールは、他のロールをより広範に管理することができました。 PostgreSQL 16 以降では、あるロールを付与または取り消すには、そのロールが別のロールに対して「
ADMIN OPTION 」権限を持っている必要があります。 詳細については、『 PostgreSQL 16 リリースノート 』の「 Role Attributes 」および ロールに関する GRANT を参照してください。
PostgreSQL 15 以前のバージョンから PostgreSQL 16 以降のバージョンにアップグレードする場合は、IPU を実行する前に、ロールへの権限付与内容を確認してください。 アップグレード後もロール管理を継続する必要がある場合は、アップグレードを開始する前に、 WITH ADMIN OPTION を使用して必要なロールが付与されていることを確認してください。
アップグレード後に、権限に関連するエラーが発生した場合は、例えば次のような場合です:
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 を使用して、特定のロールに対して ADMIN OPTION を復元します:
- これは、 PostgreSQL、 v15、およびそれ以前のバージョンから PostgreSQL 16以降にアップグレードしたデータベースにのみ適用されます(前述のエラーが発生している場合)。
- 修正を適用するロールの任意のリストを受け付けます。
- この操作は、
adminユーザーのみが実行できます。 - 複数回実行しても安全である(idempotent)。
使用例:
SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');
この関数は、 ADMIN OPTION を持つ admin ユーザーに対して、指定されたロール(role1、 role2、 role3 )を付与します。これにより、 admin ユーザーは、アップグレードされたインスタンスにおいて、これらのロールを管理(付与、取り消し、変更、削除)できるようになります。