このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスのメジャーエンジンバージョンアップのチェックレポートについて説明します。 このトピックでは、レポートに含まれる一般的なエラーと、これらのエラーの解決策についても説明します。
チェックアイテム
アップグレードチェックレポートのチェック結果が 失敗 の場合、ApsaraDB RDSコンソールにログインし、[メジャーバージョンのアップグレード] ページに移動し、[レポート内容] 列の 情報の表示 をクリックして障害の詳細を表示します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのメジャーエンジンバージョンのアップグレード」をご参照ください。
レポートには、次のチェック項目と一般的なエラーが含まれます。
user_check_report
コンテンツ
この項目は、不要なスーパーユーザーアカウントがバックグラウンドで作成されているか、標準アカウントに無効な暗号化方法が設定されているかを確認するために使用します。
一般的なエラー
無効なスーパーユーザー: ["user_01"]
考えられる原因
不要なスーパーユーザーアカウントが見つかりました。 このアカウントを使用してRDSインスタンスに接続する場合、RDSインスタンスの読み取り専用設定は無効です。 その結果、アップグレードの実行後にRDSインスタンスのデータが変更されます。
解決策
を送信するAlibaba Cloudテクニカルサポートに連絡するためのチケット。
无効なユーザー: ["user_02"]
考えられる原因
標準アカウントが異常状態です。 アップグレード後、このアカウントを使用して接続を確立することはできません。
解決策
異常なアカウントのパスワードをリセットします。
pg_upgrade_internal.log
コンテンツ
この項目は、新しいメジャーエンジンバージョンと互換性のない拡張機能とキーワードが存在するかどうかを確認するために使用されます。
一般的なエラー
問題ライブラリのリストがファイルにあります: loadable_libraries.txt
考えられる原因
新しいメジャーエンジンバージョンと互換性のない拡張機能が存在し、関連する拡張機能はloadable_libraries.txtファイルに記録されます。
解決策
loadable_libraries.txtファイルに記録されている拡張子を確認し、ビジネス要件に基づいて拡張子を削除する必要があるかどうかを判断します。 拡張機能を削除する必要がある場合は、アップグレードの前に拡張機能を削除することを推奨します。 拡張機能を削除する前に、RDSインスタンスが拡張機能なしで期待どおりに実行できることを確認してください。 ApsaraDB RDS For PostgreSQLでサポートされている拡張機能の詳細については、「サポートされている拡張機能」をご参照ください。
問題のあるテーブルのリストがファイルにあります: tables_with_oids.txt
考えられる原因
一部のテーブルは、with OIDS
句で作成されます。 この句はPostgreSQL 12以降ではサポートされておらず、関連するテーブルはtables_with_oids.txtファイルに記録されます。
解決策
解決策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インスタンスの起動ログを確認するために使用されます。
other_log_info
コンテンツ
この項目は、現在のメジャーエンジンバージョンとPostgreSQL 15以降の関数間の非互換性を記録するために使用されます。
一般的なエラー
[/data/pg_upgrade_data/pg_upgrade_output.d/20231109T142221.890/incompatible_polymorphics.txt]
データベース: cti_link_conf_db
集計: public.group_concat(anyelement)
考えられる原因
元のRDSインスタンスのgroup_concat(anyelement)
などの関数は、PostgreSQL 15以降と互換性がありません。 ビジネス要件に基づいて機能を削除するかどうかを決定します。 関数を削除する場合は、アップグレード前に関数を削除することを推奨します。 関数を削除する前に、RDSインスタンスが関数なしで期待どおりに実行できることを確認してください。
解決策
次のステートメントを実行して、互換性のない関数を削除します。
ドロップ機能が存在する場合 <削除される機能>;
付録
loadable_libraries.txt
このファイルには、新しいメジャーエンジンバージョンと互換性のないライブラリが含まれています。 これらのライブラリに基づいて互換性のない拡張機能を特定できます。
次の情報は、一般的な互換性のない拡張機能と互換性の問題に対する解決策について説明します。
pgrouting拡張
考えられる原因
pgrouting拡張機能は、新しいメジャーエンジンバージョンと互換性がありません。
解決策
ビジネス要件に基づいて拡張機能を削除するかどうかを決定します。 拡張機能を削除する場合は、アップグレードの前に拡張機能を削除することを推奨します。 拡張機能を削除する前に、RDSインスタンスが拡張機能なしで期待どおりに実行できることを確認してください。 ApsaraDB RDS For PostgreSQLでサポートされている拡張機能の詳細については、「サポートされている拡張機能」をご参照ください。
jsonbx拡张子
考えられる原因
一部のJSONデータ型は、PostgreSQL 9.4でサポートされていません。 すべてのJSONデータ型をサポートするには、jsonbx拡張機能を有効にする必要があります。 PostgreSQL 10以降のバージョンは、すべてのJSONデータ型をサポートしています。 RDSインスタンスがPostgreSQL 10以降のバージョンを実行している場合、jsonbx拡張機能を有効にする必要はありません。
解決策
新しいメジャーエンジンバージョンのjsonbx拡張機能で使用されている関数を確認し、ビジネス要件に基づいて拡張機能を削除するかどうかを判断します。 拡張機能を削除する場合は、アップグレードの前に拡張機能を削除することを推奨します。 拡張機能を削除する前に、RDSインスタンスが拡張機能なしで期待どおりに実行できることを確認してください。
jsonbx拡張機能で使用される一部の関数は、異なるPostgreSQLバージョンで異なる結果を返す場合があります。 次の表に、結果の違いを示します。
関数 | 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} | {"b": 3} |
PostGISおよびpostgis_topology拡張
考えられる原因
使用されているPostGIS拡張機能のバージョンが古いため、新しいメジャーエンジンバージョンで指定されたライブラリと互換性がありません。 その結果、RDSインスタンスはアップグレードチェックに失敗しました。
解決策
重要 PostGIS拡張機能は、主要なエンジンバージョンによって異なります。 たとえば、この拡張機能は、さまざまなメジャーエンジンバージョンのよく知られているテキスト (WKT) 形式に関連するさまざまな解析エラーを報告します。 この拡張機能を更新する前に、RDSインスタンスのクローンを作成することを推奨します。 クローン化されたRDSインスタンスを使用して、この拡張機能と新しいメジャーエンジンバージョンとの互換性をテストできます。 この拡張機能が新しいエンジンバージョンと互換性があることを確認したら、元のRDSインスタンスでこの拡張機能を更新できます。 RDSインスタンスのクローンを作成する方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのバックアップ」および「ApsaraDB RDS for PostgreSQLインスタンスのデータの復元」をご参照ください。
インスタンスのマイナーエンジンバージョンを更新します。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
エラーを報告するPostGIS拡張機能を更新します。 詳細については、「Ganosのプラグインを更新する方法」をご参照ください。
\dx
コマンドを実行して、PostGIS拡張機能のバージョンを照会します。 PostGIS拡張機能のバージョンが3.3.2以降であることを確認してください。
アップグレードチェックを再度実行します。
重要 PostGIS拡張機能、postgis_topology拡張機能、またはpgrouting拡張機能がRDSインスタンスにインストールされている場合は、次の制限事項に注意してください。
RDSインスタンスがPostgreSQL 9.4を実行している場合、RDSインスタンスのメジャーエンジンバージョンをPostgreSQL 10またはPostgreSQL 11にのみアップグレードできます。
RDSインスタンスがPostgreSQL 10を実行している場合、RDSインスタンスのメジャーエンジンバージョンをPostgreSQL 11にのみアップグレードできます。
RDSインスタンスがPostgreSQL 11、PostgreSQL 12、またはPostgreSQL 13を実行している場合、RDSインスタンスのメジャーエンジンバージョンをアップグレードすることはできません。
tables_with_oids.txt
このアイテムは、with OIDS
句で作成されたテーブルを表示するために使用されます。