すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ApsaraDB RDS for PostgreSQL インスタンスのメジャーエンジンバージョンアップグレードのチェックレポートの概要

最終更新日:Nov 10, 2025

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

関連するアップグレードドキュメント

チェック項目

コンソールの メジャーバージョンのアップグレード ページで、Upgrade Check タブをクリックし、対象のチェックレポートの 情報の表示 をクリックして詳細を表示します。

チェックレポートのチェックモジュールと発生する可能性のあるエラーは次のとおりです。

警告

チェック内容

RDS インスタンスのメジャーエンジンバージョンアップグレード中、RDS インスタンスの読み取り専用時間、メモリ、およびディスクリソースは、そのデータベースオブジェクトの数に影響されます。データベースオブジェクトの数が多すぎ、メモリとディスクリソースが不足している場合、アップグレードは失敗する可能性があります。この場合、システムはアップグレードチェックタブで推奨メモリ容量、推奨最小メモリ容量、および推奨ディスクサイズを提供します。

アップグレードに ゼロダウンタイム ソリューションを使用する場合、システムはシーケンス テーブルの数もチェックします。

  • 推奨メモリ容量: メジャーエンジンバージョンアップグレード中、システムは複数のデータベースを含むインスタンスに対して同時アップグレード機能を提供できます。RDS インスタンスのメモリ容量が推奨メモリ容量以上の場合、RDS インスタンスは直ちにアップグレードされ、RDS インスタンスの読み取り専用時間が短縮されます。

  • 推奨最小メモリ容量: RDS インスタンスのメモリ容量が推奨最小メモリ容量以上の場合、メモリリソースの不足によるアップグレードの失敗はありません。ただし、システムが RDS インスタンスの各データベースを順次アップグレードするため、RDS インスタンスの読み取り専用時間が延長される可能性があります。

  • 推奨ディスクサイズ: メジャーエンジンバージョンアップグレード中、システムはすべてオブジェクト定義を一時的にコピーするため、inode の消費量が 2 倍になります。アップグレード中にディスクサイズが推奨ディスクサイズより小さい場合、アップグレードは失敗する可能性があります。

  • シーケンステーブル数のチェック (ゼロダウンタイムモードのみ): ゼロダウンタイムのメジャーエンジンバージョンアップグレード中、データは論理レプリケーションを通じて同期されます。ただし、論理レプリケーションはシーケンステーブルの同期をサポートしていません。したがって、シーケンステーブルの同期を完了するには、短いスイッチオーバー時間が必要です。ゼロダウンタイムのメジャーエンジンバージョンアップグレードでは、スイッチオーバー時間はシーケンステーブルの数によって決まります。

警告と解決策

ディスクの警告

  • 警告フォーマット: 合計ディスク領域: {*} GB; 使用済みディスク: {*} GB; 使用済み inode: {*}; ノードあたりのバイト数: {*}; アップグレードに必要な最小ディスク領域: {*} GB

  • 考えられる原因: オブジェクトが多すぎるため、十分なディスク領域が必要です。

  • 解決策:

    • ブルーグリーンデプロイメントモードでは、新しい RDS インスタンスに、アップグレードに必要な最小ディスクサイズ以上のストレージ容量を指定する必要があります。

    • ローカルアップグレードモードでは、アップグレード前にアップグレードしたい RDS インスタンスのストレージ容量を拡張する必要があります。新しいストレージ容量は、アップグレードに必要な最小ディスクサイズ以上でなければなりません。詳細については、「設定の変更」をご参照ください。

メモリの警告

  • 警告フォーマット: 現在のメモリ: {*} GB; 推奨メモリ: {*} GB; 最小メモリ: {*} GB

  • 考えられる原因: オブジェクトが多すぎるため、アップグレード中のインスタンスの読み取り専用時間を最小限に抑えるために十分なメモリが必要です。

  • 解決策:

    • ブルーグリーンデプロイメントの場合、アップグレードパラメーターを設定する際、新しいインスタンス仕様のメモリは最小メモリ要件以上でなければなりません。

    • ローカルアップグレードモードでは、インスタンスタイプによって提供されるメモリ容量が推奨メモリ容量より少ない場合、RDS インスタンスの仕様をアップグレードする必要があります。詳細については、「設定の変更」をご参照ください。

サブスクリプションの警告

  • 警告フォーマット: インスタンスにはレプリケーションスロットのサブスクライバーがあります。サブスクリプションデータの不整合を防ぐには、Alibaba Cloud ドキュメントを参照してください

  • 考えられる原因: インスタンスにレプリケーションスロットのサブスクライバーがあります。select * from pg_subscription; を実行して確認できます。

  • 解決策: 対処法については、「データベースのメジャーバージョンのアップグレード」をご参照ください。

シーケンスの警告

  • 警告フォーマット: シーケンステーブルの合計: {0}。シーケンステーブルが多すぎると、論理レプリケーションのメジャーバージョンアップグレードのスイッチオーバー時間が延長されます。

  • 考えられる原因: インスタンスにシーケンステーブルが含まれています。データベース内のすべてのシーケンステーブルは、select * from pg_sequences; を実行して表示できます。

  • 解決策: シーケンステーブルが多すぎる場合は、インスタンスをクローンしてスイッチオーバー時間をテストし、要件を満たしていることを確認することをお勧めします。

エラー

チェック内容

  • システムは、不要なスーパーユーザーアカウントがバックグラウンドで作成されていないか、または標準アカウントに無効な暗号化メソッドが設定されていないかを確認します。

  • システムは、アップグレードチェックが失敗するかどうかを確認します。アップグレードチェックが失敗した場合、「pg_upgrade エラーログ」のエラーメッセージがチェックレポートに含まれます。

  • システムは、pgcrypto 拡張機能が pg_catalog スキーマにインストールされているかどうかを確認します。

  • (ゼロダウンタイムモードのみ) システムは、インスタンスのマイナーエンジンバージョンが 20250228 以降であるかどうかを確認します。

  • (ゼロダウンタイムモードのみ) システムは、論理レプリケーションの非互換性をチェックします。論理レプリケーションは特定のデータベースオブジェクトを同期できないため、これらのオブジェクトを持つインスタンスはゼロダウンタイムのメジャーバージョンアップグレードをサポートしません。非互換性が存在する場合、チェックレポートには「論理レプリケーションの非互換性」項目が表示されます。

エラーと解決策

アカウントエラー

  • エラーフォーマット: 無効なスーパーユーザーアカウント: {*}; 無効なアカウント: {*}; Alibaba Cloud ドキュメントを参照してください

  • 考えられる原因: 冗長なスーパーユーザーアカウントまたは異常な標準アカウントがあります。

  • 解決策:

    • 冗長なスーパーユーザーアカウントについては、チケット を送信してアフターサービスに連絡し、削除を依頼してください。

    • 異常な標準アカウントのパスワードをリセットします。

事前チェックエラー

  • エラーフォーマット: pg_upgrade 事前チェックタスクが失敗しました。[pg_upgrade エラーログ] と [pg_upgrade 関連ファイルとエラー] を確認する必要があります

  • 考えられる原因: 事前チェックが失敗しました。

  • 解決策: ログの問題を解決するには、「pg_upgrade エラーログ」をご参照ください。

Pgcrypto 拡張機能エラー

  • エラーフォーマット: pg_crypto 拡張機能がデータベース: {*} のスキーマ: pg_catalog にインストールされています。Alibaba Cloud ドキュメントを参照してください

  • 考えられる原因: pgcrypto は、上位バージョンにのみ存在する関数を pg_catalog に作成するため、メジャーバージョンのアップグレードが失敗します。

  • 解決策: 各データベースで pgcrypto 拡張機能を削除し、その後、pg_catalog 以外のスキーマで拡張機能を作成します。

マイナーバージョンエラー

  • エラーフォーマット: ゼロダウンタイムのメジャーバージョンアップグレードには、最小マイナーバージョン 20250228 が必要です

  • 考えられる原因: インスタンスのマイナーエンジンバージョンが低すぎます。

  • 解決策: マイナーエンジンバージョンをアップグレードする

Pg_upgrade エラーログ

チェック内容

システムは、新しいメジャーエンジンバージョンと互換性のない拡張機能やキーワードが存在するかどうかをチェックします。

一般的なエラー

問題のあるライブラリのリストは、loadable_libraries.txt ファイルにあります

考えられる原因

新しいメジャーエンジンバージョンと互換性のない拡張機能が存在し、関連する拡張機能は loadable_libraries.txt ファイルに記録されます。

解決策

loadable_libraries.txt レポート項目にリストされている拡張機能を確認します。ビジネス要件に基づいて拡張機能を削除するかどうかを決定します。拡張機能を削除する場合は、アップグレード前に拡張機能を削除することをお勧めします。拡張機能を削除する前に、RDS インスタンスが拡張機能なしで期待どおりに実行できることを確認してください。各バージョンでサポートされている拡張機能のリストについては、「サポートされている拡張機能」をご参照ください。

問題のあるテーブルのリストは、tables_with_oids.txt ファイルにあります

考えられる原因

テーブルは WITH OIDS 宣言で作成されましたが、これは PostgreSQL 12 以降のバージョンではサポートされていません。関連するテーブルは tables_with_oids.txt ファイルに記録されます。

解決策

  • 方法 1 (推奨): WITH OIDS 宣言をサポートする PostgreSQL 11 にアップグレードします。

  • 方法 2: loadable_libraries.txt レポート項目にリストされているテーブルを確認します。ビジネスコードが OID に依存しているかどうかを評価します。ビジネスに影響しないことを確認した後、次のステートメントを実行します:

    ALTER TABLE {table_name} SET WITHOUT OIDS;

Pg_upgrade 関連ファイルとエラー

loadable_libraries.txt

このファイルには、新しいメジャーエンジンバージョンと互換性のないライブラリが含まれています。これらのライブラリに基づいて、互換性のない拡張機能を特定できます。

次の情報は、一般的な互換性のない拡張機能と、非互換性の問題に対する解決策について説明しています。

pgrouting 拡張機能

考えられる原因

pgrouting 拡張機能は、新しいメジャーエンジンバージョンと互換性がありません。

解決策

ビジネス要件に基づいて拡張機能を削除するかどうかを決定します。拡張機能を削除する場合は、アップグレード前に拡張機能を削除することをお勧めします。拡張機能を削除する前に、RDS インスタンスが拡張機能なしで期待どおりに実行できることを確認してください。各バージョンでサポートされている拡張機能のリストについては、「サポートされている拡張機能」をご参照ください。

jsonbx 拡張機能

考えられる原因

一部の JSON データ型は PostgreSQL 9.4 ではサポートされていません。すべての JSON データ型をサポートするには、jsonbx 拡張機能を有効にする必要があります。PostgreSQL 10 以降のバージョンは、すべての JSON データ型をサポートしています。RDS インスタンスが PostgreSQL 10 以降のバージョンを実行している場合、jsonbx 拡張機能を有効にする必要はありません。

解決策

新しいメジャーエンジンバージョンで jsonbx 拡張機能によって使用される関数を確認し、ビジネス要件に基づいて拡張機能を削除するかどうかを決定します。拡張機能を削除する場合は、アップグレード前に拡張機能を削除することをお勧めします。拡張機能を削除する前に、RDS インスタンスが拡張機能なしで期待どおりに実行できることを確認してください。

jsonbx プラグイン関数の使用法は、次の点で異なります。

関数の使用法

PostgreSQL 9.4 の実行結果

PostgreSQL 10 以降のバージョンの実行結果

select '{"a":1, "b":2, "c":3}'::jsonb - 2;

{"a": 1, "b": 2}

ERROR: 整数インデックスを使用してオブジェクトから削除できません

select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]);

{"a": 1, "c": 3}

ERROR: 関数 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 拡張機能は、メジャーエンジンバージョンによって異なります。たとえば、この拡張機能は、メジャーエンジンバージョンによって、well-known text (WKT) フォーマットに関連する異なる解析エラーを報告します。この拡張機能を更新する前に、RDS インスタンスをクローンすることをお勧めします。クローンされた RDS インスタンスを使用して、この拡張機能と新しいメジャーエンジンバージョンとの互換性をテストできます。この拡張機能が新しいエンジンバージョンと互換性があることを確認した後、元の RDS インスタンスでこの拡張機能を更新できます。特定のクローン操作については、「PostgreSQL データのバックアップ」および「PostgreSQL データの復元」をご参照ください。

  1. マイナーエンジンバージョンをアップグレードします。詳細については、「マイナーエンジンバージョンのアップグレード」をご参照ください。

  2. エラーを報告する PostGIS 拡張機能を更新します。詳細については、「PostGIS 拡張機能のアップグレード」をご参照ください。

  3. \dx コマンドを実行して拡張機能のバージョンをクエリし、PostGIS 拡張機能のバージョンが少なくとも 3.3.2 であることを確認します。

  4. アップグレードチェックを再度実行します。

    重要

    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 で宣言されたテーブルのリストが表示されます。

論理レプリケーションの非互換性

チェック内容

  • システムは外部テーブルが存在するかどうかをチェックします。

  • システムは、プライマリキーまたは一意キーのないテーブルが存在するかどうかをチェックします。

  • システムはマテリアライズドビューが存在するかどうかをチェックします。

  • システムはラージオブジェクトが存在するかどうかをチェックします。

  • システムは、論理レプリケーションで禁止されている拡張機能が存在するかどうかをチェックします。

  • システムは、論理レプリケーションに関連するパラメーターの値が要件を満たしているかどうかをチェックします。

非互換性と解決策

外部テーブルの非互換性

  • エラーフォーマット: データベース内の外部テーブル: {0}。データベースの合計: {1}

  • 考えられる原因: 外部テーブルが存在します。

  • 解決策: 外部テーブルを削除します。

    1. インスタンスの各データベースで次の SQL 文を実行して、外部テーブルに関する情報を取得します。

      SELECT COUNT(*) AS count, relkind
      FROM pg_class WHERE relkind IN ('f') GROUP BY relkind;
    2. 次の SQL 文を実行して、外部テーブルを削除します。

      DROP FOREIGN TABLE [ IF EXISTS ] name [ CASCADE | RESTRICT ];

    詳細については、「コミュニティドキュメント」をご参照ください。

一意キーがないテーブルの非互換性

  • エラーフォーマット: データベースにプライマリキーまたは一意キーのないテーブル: {0}。データベースの合計: {1}

  • 考えられる原因: プライマリキーまたは一意キーのないテーブルが存在します。

  • 解決策: テーブルにプライマリキーまたは一意キーを追加します。

    1. インスタンスの各データベースで次の SQL 文を実行して、プライマリキーまたは一意キーのないテーブルに関する情報を取得します。

       SELECT COUNT(*) AS count
      FROM information_schema.tables t
      LEFT JOIN information_schema.table_constraints tc
          ON t.table_name = tc.table_name 
          AND t.table_schema = tc.table_schema
          AND (tc.constraint_type = 'PRIMARY KEY' OR tc.constraint_type = 'UNIQUE')
      JOIN pg_class c 
          ON t.table_name = c.relname
      JOIN pg_namespace ns 
          ON c.relnamespace = ns.oid 
          AND ns.nspname = t.table_schema
      WHERE t.table_type = 'BASE TABLE'
          AND tc.constraint_type IS NULL
          AND t.table_schema NOT IN ('pg_catalog', 'information_schema')
          AND c.relreplident != 'f';
    2. 次の SQL 文を実行して、対象テーブルの REPLICA IDENTITYFULL に設定します。

      ALTER TABLE name REPLICA IDENTITY FULL;
    3. 次の SQL 文を実行して、対象テーブルにプライマリキーまたは一意キーを追加します。

      --Primary key constraint
      ALTER TABLE name
          ADD CONSTRAINT constrain_name PRIMARY KEY (column_name);
      --Unique key constraint
      ALTER TABLE name
          ADD CONSTRAINT constrain_name UNIQUE (column_name);

    詳細については、「コミュニティドキュメント」をご参照ください。

マテリアライズドビューの非互換性

  • エラーフォーマット: データベース内のマテリアライズドビュー: {0}。データベースの合計: {1}

  • 考えられる原因: マテリアライズドビューが存在します。

  • 解決策: マテリアライズドビューを削除します。

    1. インスタンスの各データベースで次の SQL 文を実行して、マテリアライズドビューを取得します。

      SELECT COUNT(*) AS count, relkind
      FROM pg_class
      WHERE relkind IN ('m')
      GROUP BY relkind;
    2. 次の SQL 文を実行して、マテリアライズドビューを削除します。

      DROP MATERIALIZED VIEW IF EXISTS name;

ラージオブジェクトの非互換性

  • エラーフォーマット: データベース内のラージオブジェクト: {0}。データベースの合計: {1}

  • 考えられる原因: ラージオブジェクトが存在します。

  • 解決策: ラージオブジェクトを削除します。

    1. インスタンスの各データベースで次の SQL 文を実行して、ラージオブジェクトを取得します。

      SELECT COUNT(*) AS count
      FROM pg_largeobject_metadata;
    2. 次の SQL 文を実行して、ラージオブジェクトを削除します。

      SELECT lo_unlink(largeobject_oid);

拡張機能の非互換性

  • エラーフォーマット: データベースで論理レプリケーションが禁止されている拡張機能: {0}。データベースの合計: {1}

  • 考えられる原因: 次の 4 つの禁止されている拡張機能が使用されています: 'pg_partman'、'pg_cron'、'pg_active'、および 'pg_logical'。

  • 解決策: 互換性のない拡張機能を一時的に削除します。

    1. インスタンスの各データベースで次の SQL 文を実行して、互換性のない拡張機能がインストールされているかどうかを確認します。

      SELECT COUNT(*) AS count
      FROM pg_extension 
      WHERE extname IN ('pg_partman', 'pg_cron', 'pg_active', 'pglogical');
    2. 互換性のない拡張機能を一時的に削除します。

      DROP EXTENSION extension_name;

パラメーターの非互換性

  • エラーフォーマット: 論理レプリケーションでは、wal_level を logical に、max_wal_sender と max_replication_slots を少なくとも {0} にする必要があります。インスタンスの wal_level は {1}、max_wal_sender は {2}、max_replication_slots は {3} です

  • 考えられる原因: 3 つのパラメーターの値が要件を満たしていません。

  • 解決策: パラメーターの値を変更します。変更を有効にするには、インスタンスの再起動が必要になる場合があることに注意してください。詳細については、「インスタンスのパラメーターを設定する」をご参照ください。

チェックレポートのフォーマットの説明

チェックレポートは中国語と英語で提供されます。