このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスのメジャーエンジンバージョンアップのチェックレポートについて説明します。 このトピックでは、レポートに含まれる一般的なエラーと、これらのエラーの解決策についても説明します。

RDSインスタンスがアップグレードチェックに失敗したことがレポートで示された場合は、ApsaraDB RDSコンソールにログインし、[メジャーバージョンのアップグレード] ページに移動し、[レポートコンテンツ] 列の [情報の表示] をクリックして障害の詳細を表示します。 レポートには、次のチェック項目が含まれます。
説明 主要なエンジンバージョンのアップグレードの詳細については、「Upgrade the major engine version of an ApsaraDB RDS for PostgreSQL instance」をご参照ください。

user_check_report

この項目は、スーパーユーザーアカウントがバックグラウンドで作成されているか、標準アカウントに無効な暗号化方法が設定されているかを確認するために使用されます。
エラーメッセージ 考えられる原因 ソリューション
無効なスーパーユーザー: ["user_01"] スーパーユーザーアカウントが見つかりました。 このアカウントを使用してRDSインスタンスに接続する場合、RDSインスタンスに設定されている読み取り専用属性は無効です。 その結果、アップグレードの実行後にRDSインスタンスのデータが変更されます。 スーパーユーザーアカウントを削除するには、 ticketを送信してAlibaba Cloudテクニカルサポートに連絡する必要があります。
无効なユーザー: ["user_02"] 標準アカウントが異常状態です。 アップグレード後、このアカウントを使用して接続を確立することはできません。 異常なアカウントのパスワードをリセットします。

pg_upgrade_internal.log

この項目は、新しいメジャーエンジンバージョンがRDSインスタンスのプラグインと互換性があるかどうかを確認するために使用されます。
エラーメッセージ 考えられる原因 ソリューション
問題ライブラリのリストがファイルにあります: loadable_libraries.txt 新しいメジャーエンジンバージョンと互換性のないプラグインは、loadable_libraries.txtファイルにあります。 loadable_libraries.txtファイルにリストされているプラグインを確認し、一部のプラグインを削除する必要があるかどうかを評価します。 プラグインを削除する必要がある場合は、アップグレードの前にプラグインを削除することを推奨します。 プラグインを削除する前に、プラグインなしでRDSインスタンスが期待どおりに実行できることを確認してください。 詳細については、「サポートされるプラグイン」をご参照ください。
問題のあるテーブルのリストがファイルにあります: tables_with_oids.txt 一部のテーブルは、with OIDS句を指定して作成されます。 この句は、PostgreSQL 12以降のバージョンではサポートされていません。
  • 解決策1: RDSインスタンスのメジャーエンジンバージョンをPostgreSQL 11にアップグレードします。 PostgreSQL 11はWITH OIDS句をサポートしています。 この解決策が推奨されます。
  • 解決策2: tables_with_oids.txtファイルにリストされているテーブルを確認し、ビジネスコードがWITH OIDS句で指定されているオブジェクトに依存しているかどうかを評価します。 ビジネスコードが指定されたオブジェクトに依存しない場合は、次のステートメントを実行します。
    ALTER TABLE {table_name} SETをOIDSなし;

pg_upgrade_server.log

この項目は、RDSインスタンスで有効になっているログの種類を確認するために使用されます。

loadable_libraries.txt

この項目は、新しいメジャーエンジンバージョンと互換性のないライブラリをチェックするために使用されます。 これらのライブラリに基づいて、互換性のないプラグインを特定できます。
エラーメッセージ 考えられる原因 ソリューション
ライブラリ "$libdir/pgrouting-2.6.2" をロードできませんでした: ERROR: ファイル "$libdir/pgrouting-2.6.2" にアクセスできませんでした: そのようなファイルやディレクトリがありません pgroutingプラグインは、新しいメジャーエンジンバージョンと互換性がありません。 loadable_libraries.txtファイルにリストされているプラグインを確認し、一部のプラグインを削除する必要があるかどうかを評価します。 プラグインを削除する必要がある場合は、アップグレードの前にプラグインを削除することを推奨します。 プラグインを削除する前に、プラグインなしでRDSインスタンスが期待どおりに実行できることを確認してください。 詳細については、「サポートされるプラグイン」をご参照ください。
ライブラリ "$libdir/jsonbx" をロードできませんでした: ERROR: ファイル "$libdir/jsonbx" にアクセスできませんでした: そのようなファイルやディレクトリがありません 一部のJSONデータ型は、PostgreSQL 9.4でサポートされていません。 すべてのJSONデータ型をサポートするには、jsonbxプラグインを有効にする必要があります。 PostgreSQL 10以降のバージョンは、すべてのJSONデータ型をサポートしています。 RDSインスタンスがPostgreSQL 10以降のバージョンを実行している場合、jsonbxプラグインを有効にする必要はありません。 新バージョンのメジャーエンジンでjsonbx部品が使用している機能を確認し, 部品の削除が必要かどうかを評価してください。 プラグインを削除する必要がある場合は、アップグレードの前にプラグインを削除することを推奨します。 プラグインを削除する前に、プラグインなしでRDSインスタンスが期待どおりに実行できることを確認してください。 詳細については、「jsonbxプラグイン関数の違いの使用」をご参照ください。
  • ライブラリ "$libdir/postgis-2.5" をロードできませんでした: ERROR: ファイル "$libdir/postgis-2.5" にアクセスできませんでした: そのようなファイルやディレクトリがありません
  • ライブラリ "$libdir/postgis_topology-2.2" をロードできませんでした: ERROR: ファイル "$libdir/postgis_topology-2.2" にアクセスできませんでした: そのようなファイルやディレクトリがありません
  • 使用されているpostgisプラグインのバージョンが古いため、新しいメジャーエンジンバージョンの指定されたライブラリと互換性がありません。 その結果、RDSインスタンスはアップグレードチェックに失敗しました。
  • 使用されているpostgis_topologyプラグインのバージョンが古いため、新しいメジャーエンジンバージョンで指定されたライブラリと互換性がありません。 その結果、RDSインスタンスはアップグレードチェックに失敗しました。
重要 postgisプラグインは、データベースエンジンのバージョンによって異なります。 たとえば、このプラグインは、さまざまなデータベースエンジンバージョンのWKT形式に関連するさまざまな解析エラーを報告します。 このプラグインを更新する前に、RDSインスタンスのクローンを作成することを推奨します。 クローン化されたRDSインスタンスを使用して、このプラグインと新しいメジャーエンジンバージョンの互換性をテストできます。 このプラグインが新しいエンジンバージョンと互換性があることを確認したら、元のRDSインスタンスのこのプラグインを新しいメジャーエンジンバージョンに更新できます。 詳細については、「RDS PostgreSQL インスタンスのデータのバックアップ」および「ApsaraDB RDS for PostgreSQLインスタンスのデータを復元する」をご参照ください。
以下の手順を実行します。
  1. RDSインスタンスのマイナーエンジンバージョンを更新します。 詳細については、「Update the minor engine version of an ApsaraDB RDS for PostgreSQL instance」をご参照ください。
  2. エラーを報告するプラグインを更新します。
    • postgis
      ALTERの拡張postgisの更新;
    • postgis_topology
      ALTER拡張postgis_topology UPDATE;
  3. \dxコマンドを実行して、postgisプラグインのバージョンを照会します。 postgis部品のバージョンが2.5.4以降であることを確認してください。
  4. アップグレードチェックを再度実行します。
    重要 RDSインスタンスにpostgisプラグイン、postgis_topologyプラグイン、またはpgroutingプラグインがインストールされている場合は、次の制限事項に注意してください。
    • RDSインスタンスがPostgreSQL 9.4を実行している場合、RDSインスタンスのメジャーエンジンバージョンをPostgreSQL 10またはPostgreSQL 11にのみアップグレードできます。
    • RDSインスタンスがPostgreSQL 10を実行している場合、RDSインスタンスのメジャーエンジンバージョンをPostgreSQL 11にのみアップグレードできます。
    • RDSインスタンスがPostgreSQL 11、PostgreSQL 12、またはPostgreSQL 13を実行している場合、RDSインスタンスのメジャーエンジンバージョンをアップグレードすることはできません。
jsonbxプラグインで使用される一部の関数は、異なるPostgreSQLバージョンで異なる結果を返す場合があります。 次の表に、結果の違いを示します。 アップグレードを実行する前に、jsonbxプラグインを削除する必要があるかどうかを評価する必要があります。
機能 PostgreSQL 9.4で結果を返す PostgreSQL 10以降のバージョンで結果を返す
select '{"a":1, "b":2, "c":3}'::jsonb - 2; {"a": 1, "b": 2} エラー: 整数インデックスを使用してオブジェクトから削除できません
select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]); {"a": 1, "c": 3} エラー: 関数jsonb_delete(jsonb, text[]) が存在しません
select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[]; {"a": {"d": 2}, "b": 3} null

tables_with_oids.txt

このアイテムは、with OIDS句で作成されたテーブルを表示するために使用されます。