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

ApsaraDB RDS:クラウド移行評価レポートの概要

最終更新日:Aug 22, 2026

クラウド移行評価レポートのステータスが [失敗] の場合、[操作] 列の [レポートを表示] をクリックすると、どのチェックが失敗したかを確認できます。各チェックは、特定の互換性や設定の要件に対応しています。

レポートの重大度レベル:

レベル 説明 必要なアクション
エラー 移行の失敗を招くブロッキングの問題 移行を再試行する前に、すべてのエラーを修正してください
警告 移行後に予期せぬ動作を引き起こす潜在的なリスク 移行する前に確認し、対処してください

この評価では、次のチェックが実行されます:

クラウド移行の実行手順については、「ApsaraDB RDS for PostgreSQL インスタンスのクラウド移行機能の使用」をご参照ください。

RDSが空かどうかのチェック

[チェック項目:] RDS データベースのチェック

エラーメッセージ:

error: postgres not empty, check if any table exists

影響:移行では、移行先の ApsaraDB RDS for PostgreSQL インスタンスにデータが新規に書き込まれます。移行先にすでにデータベースやテーブルが存在する場合、移行は失敗するか、データが重複します。

[解決策:]

ApsaraDB RDS for PostgreSQL インスタンスから template0template1、および postgres 以外のすべてのデータベースを削除します。次に、postgres データベースで、ha_health_check 以外のすべてのテーブルを削除します。

ソース接続性のチェック

このチェックでは、ソースのセルフマネージド PostgreSQL インスタンスと移行先の ApsaraDB RDS for PostgreSQL インスタンス間のネットワークおよび認証アクセスを検証します。6 つのサブチェックを実行します。

IP接続性のチェック

エラーメッセージ:

error: XX.XX.XX.XX is unapproachable

影響:移行サービスがソースホストに到達できません。完全バックアップとレプリケーションは直ちに失敗します。

[解決策:]

  • 自己管理型の PostgreSQL インスタンスが Elastic Compute Service (ECS) インスタンス上で実行されている場合、ソースホストとして ECS インスタンスの [プライベート IP アドレス] を入力してください。プライベート IP アドレスを確認するには、「IP アドレスの表示」をご参照ください。

  • セルフマネージド PostgreSQL インスタンスがデータセンターで実行されている場合は、ソースホスト上の DNS サーバーの IP アドレスを入力します。

ポート接続性のチェック

エラーメッセージ:

error: 5432 is unapproachable

影響:移行サービスは PostgreSQL への TCP 接続を確立できません。移行を開始できません。

[解決策:]

以下の原因のうち、1 つまたは両方に対処してください:

データベース接続性のチェック

エラーメッセージ:

error: cannot connect to source database by migratetest:123456

影響:移行サービスはソースデータベースで認証できません。移行を開始できません。

[解決策:]

以下の原因のうち、1 つまたは両方に対処してください:

  • パスワードが正しくない: 手動で接続して認証情報が機能することを確認してください。パスワードをリセットするには、以下を実行します:

    ALTER USER migratetest WITH PASSWORD '123456';
  • pg_hba.conf が RDS VPC からの接続を許可するように設定されていません: pg_hba.conf に次の行を追加します:

    host  all  migratetest  <ApsaraDB RDS for PostgreSQLインスタンスが属するVPCのCIDR ブロック>  md5

    pg_hba.conf の更新の詳細については、「pg_hba.conf ファイルを更新する」をご参照ください。

アカウントのレプリケーション権限のチェック

エラーメッセージ:

error: migratetest has no replication privilege

影響:移行サービスはストリーミングレプリケーションを使用して進行中の変更を同期します。REPLICATION 権限がない場合、完全バックアップの完了後に増分レプリケーションが失敗します。

[解決策:]

以下の原因のうち、1 つまたは両方に対処してください:

  • アカウントにREPLICATION権限がない: 権限を付与します:

    ALTER ROLE migratetest REPLICATION;
  • pg_hba.conf で RDS VPC からのレプリケーション接続が許可されていません: pg_hba.conf に次の行を追加します:

    host  replication  migratetest  <ApsaraDB RDS for PostgreSQLインスタンスが属するVPCのCIDR ブロック>  md5

    pg_hba.conf の更新の詳細については、「pg_hba.conf ファイルを更新する」をご参照ください。

アカウントのCREATEROLE権限のチェック

エラーメッセージ:

error: migratetest has no createrole privilege

影響:移行サービスは移行先インスタンスでロールを再作成する必要があります。CREATEROLE 権限がないと、ロールの移行は失敗します。

[解決策:]

CREATEROLE 権限を付与してください:

ALTER ROLE migratetest CREATEROLE;

アカウントのpg_monitor権限のチェック

エラーメッセージ:

error: migratetest should be a member of pg_monitor to monitor replication status

影響: 移行サービスは、レプリケーションの進捗を追跡するために pg_stat_replicationpg_stat_wal_receiver を照会します。pg_monitor ロールがないと、サービスはレプリケーションが追いついていることを確認できず、移行が停止したり、サイレントに失敗したりする可能性があります。

[解決策:]

pg_monitor ロールを付与する:

GRANT pg_monitor TO migratetest;

ソースバージョンのチェック

[チェック項目:] メジャーバージョンの一貫性チェック

エラーメッセージ:

error: version mismatch, source version:10, current version:13.0

影響:メジャーバージョンをまたいだ移行はサポートされていません。ソースと移行先のメジャーエンジンバージョンが異なる場合、移行は失敗します。

[解決策:]

セルフマネージド PostgreSQL インスタンスと同じメジャーエンジンバージョンを実行する ApsaraDB RDS for PostgreSQL インスタンスを購入してください。

ソースglibcバージョンのチェック

[チェック項目:] ソース glibc バージョンの互換性を確認

警告メッセージ:

warning: source glibc version is not compatible with rds pg

影響:GNU C ライブラリ (glibc) のバージョンは、PostgreSQL が UTF-8 エンコーディングで文字をソートする方法に影響します。バージョン 2.28 では、異なる照合順序が導入されました。ソースと移行先で glibc のバージョンが異なる場合、C 以外の照合順序を持つテキストインデックスは、移行後に予期しない順序で結果を返し、クエリの正確性に影響を与える可能性があります。

[解決策:]

以下の診断クエリを実行して、データに対する実際のリスクを評価してください。

  1. 現在の照合順序がデータに影響するかどうかを確認してください:

    • 結果が true の場合、照合順序は影響を受けません。これ以上の操作は必要ありません。

    • 結果が false の場合、ステップ 2 に進みます。

    BEGIN;
    CREATE TEMP TABLE testcollation(id varchar(20) COLLATE "en_US.utf8") ON COMMIT DROP;
    INSERT INTO testcollation VALUES('-1'),('1');
    SELECT id='1' FROM testcollation ORDER BY id LIMIT 1;
    ROLLBACK;
  2. C 以外の照合順序を使用しているデータベースがあるかどうかを確認してください:

    • 行が返されない場合、移行に照合順序のリスクはありません。これ以上の対応は不要です。

    • 行が返された場合、ステップ 3 に進みます。

    SELECT datname, datcollate FROM pg_database WHERE datcollate NOT IN ('C', 'POSIX');
  3. すべてのデータベースで、C 以外の照合順序を持つすべてのインデックスを特定してください:

    • 行が返されない場合、移行に照合順序のリスクはありません。

    • 行が返された場合、影響を受けるインデックスは移行後に正しくないソート結果を返す可能性があります。続行する前に、これらのインデックスがアプリケーションのクエリに影響するかどうかを評価してください。

    WITH result AS (
        WITH defcoll AS (
            SELECT datcollate AS coll
            FROM pg_database
            WHERE datname = current_database()
        )
        SELECT indrelid::regclass::text relname, indexrelid::regclass::text indexname,
            CASE WHEN c.collname = 'default'
                THEN defcoll.coll
                ELSE c.collname
            END AS collation
        FROM (SELECT indexrelid, indrelid, indcollation[i] coll FROM pg_index, generate_subscripts(indcollation, 1) g(i)) s
            JOIN pg_collation c ON coll=c.oid
            CROSS JOIN defcoll
        WHERE collprovider IN ('d', 'c') AND collname NOT IN ('C', 'POSIX')
    )
    SELECT result.relname, result.indexname, result.collation FROM result WHERE result.collation NOT IN ('C', 'POSIX');

ディスクサイズのチェック

[チェック項目:]ディスク容量が十分であることを確認

エラーメッセージ:

error: source_db_size > disk_size * 0.95

影響:ソースデータは、移行先の利用可能なストレージの 95% 以内に収まる必要があります。移行先のストレージが小さすぎる場合、完全バックアップの転送が途中で失敗し、移行先が不完全な状態になります。

[解決策:]

  1. ソースインスタンスの合計データサイズを確認してください (結果は MB 単位):

    SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
  2. 必要なストレージを計算してください。移行先のストレージは、ソースのデータサイズの 110% 以上である必要があります。たとえば、ソースが 100 GB を使用している場合、移行先には少なくとも 110 GB の利用可能なストレージが必要です。

  3. ApsaraDB RDS for PostgreSQL インスタンスのストレージを拡張してください。手順については、「インスタンス仕様の変更」をご参照ください。

wal_keep_sizeのチェック

[チェック項目:] WAL 保持サイズが十分に大きいことを確認

警告メッセージ:

warning: wal_keep_size X MB is too small. Try to set wal_keep_segments or wal_keep_size large enough ensure pg_basebackup success

影響: 移行中、pg_basebackup はソースデータベースのフル スナップショットを転送します。このとき、ソースが pg_basebackup によるデータコピーよりも速く WAL を生成し、かつソースが十分な WAL セグメントを保持していない場合、pg_basebackup は「WAL segment has been removed」エラーで失敗します。

[解決策:]

ApsaraDB RDS for PostgreSQL インスタンスの WAL 保持設定を増やし、pg_basebackup の失敗のリスクを低減します:

  • PostgreSQL 13 以降: wal_keep_size の値を増やします。

  • PostgreSQL 13 未満: wal_keep_segments の値を増やします。

PostgreSQL 13 より前のバージョンでは、2 つのパラメーターの関係は wal_keep_size = wal_keep_segments × wal_segment_size です。

仕様パラメータのチェック

[チェック項目:] 仕様パラメーターが大きすぎないか確認

エラーメッセージ:

error: max_connections too large, value=XXX
error: max_prepared_transactions too large, value=XXX

影響: 移行元インスタンスの max_connections または max_prepared_transactions が、移行先 RDS インスタンスの対応する値の 100 倍を超えている場合、移行サービスがレプリケーションリンクを確立する際に、移行先インスタンスの起動に失敗する可能性があります。

[解決策:]

ソースインスタンスで max_connectionsmax_prepared_transactions を、移行先の値の 100 倍以内になるように減らします。

max_connections および max_prepared_transactions への変更を反映させるには、ソース PostgreSQL インスタンスの再起動が必要です。

RDSユーザーのチェック

[チェック項目:] rds システムユーザーが占有されているかどうかの確認

警告メッセージ:

warning: Check if rds system user is occupied ...XXX will be reused in rds

影響: ApsaraDB RDS for PostgreSQL は、アカウント aurorareplicator、および pgxxx を内部システム用として予約しています。これらのアカウントがソースインスタンスに存在する場合、移行によって移行先でそれらの設定が上書きされ、管理機能が破損する恐れがあります。

[解決策:]

自己管理型の PostgreSQL インスタンスでは、アカウント aurorareplicator、および pgxxx を使用しないようにしてください。

拡張機能のチェック

このチェックでは、ソースのセルフマネージド PostgreSQL インスタンスと移行先の ApsaraDB RDS for PostgreSQL インスタンス間の拡張機能の互換性を検証します。3 つのサブチェックを実行します。

ソース拡張機能のサポート状況チェック

エラーメッセージ:

error: Check source supported extensions XXX not supported

影響:ソースに存在するが ApsaraDB RDS for PostgreSQL でサポートされていない拡張機能は、移行先で作成できません。移行を続行すると、これらの拡張機能に依存するオブジェクトは機能しなくなります。

[解決策:]

ソースインスタンスからサポートされていない拡張機能を削除してください:

DROP EXTENSION <拡張機能名>;

ソース拡張機能のバージョンが新しい場合のチェック

エラーメッセージ:

error: Check source extensions with higher version XXX

影響:ApsaraDB RDS for PostgreSQL は、提供されているバージョンよりも新しいバージョンの拡張機能を読み込むことができません。拡張機能は移行先で初期化に失敗し、依存するオブジェクトが破損する原因となります。

[解決策:]

影響を受ける拡張機能を、移行先と同じバージョンでソースインスタンスに再インストールしてください:

DROP EXTENSION <拡張機能名>;
CREATE EXTENSION <拡張機能名> VERSION '<移行先のバージョン>';

ソース拡張機能のバージョンが古い場合のチェック

警告メッセージ:

warning: Check source extensions with lower version XXX

影響:ソースインスタンスの拡張機能は、移行先の拡張機能よりも古いバージョンです。これは想定内の動作であり安全です。拡張機能は移行後に自動的に移行先のバージョンにアップグレードされます。

[解決策:]

対応は不要です。

PostgreSQLシステムカタログのチェック

このチェックでは、ソースインスタンスのシステムカタログを検査し、ApsaraDB RDS for PostgreSQL と互換性のない設定がないか確認します。4 つのサブチェックを実行します。

サポートされていない手続き言語

エラーメッセージ:

error: disallowed language exist in databases [xxx, xxx], the languages allowed are [c, internal, sql, plpgsql, pltcl, plperl].

影響:ApsaraDB RDS for PostgreSQL は、C、internal、SQL、PL/pgSQL、PL/Tcl、PL/Perl のみをサポートします。他の言語で書かれた関数は移行できず、移行先でエラーになります。

[解決策:]

影響を受けるデータベースから、サポートされていない言語をソースインスタンスから削除してください:

DROP LANGUAGE <言語名>;

ラージオブジェクト

エラーメッセージ:

error: large object exist in databases [xxx, xxx].

影響:ApsaraDB RDS for PostgreSQL は、PostgreSQL のラージオブジェクトをサポートしていません。ソースインスタンスのラージオブジェクトは移行できず、移行先には存在しなくなります。

[解決策:]

移行する前に、影響を受けるデータベースからすべてのラージオブジェクトをソースインスタンスから削除してください。

デフォルト ACL 設定

エラーメッセージ:

error: default acl settings exist in databases [xxx, xxx].

影響: ALTER DEFAULT PRIVILEGES ステートメントにより、今後作成されるオブジェクトのデフォルト権限を格納する pg_catalog.pg_default_acl にデータが入力されます。これらの設定は直接移行できず、移行チェックが失敗する原因となります。

[解決策:]

  1. ソースインスタンスで、すべてのデフォルト権限を取り消して pg_default_acl をクリアします:

    ALTER DEFAULT PRIVILEGES ... REVOKE ...;
  2. 移行が完了したら、移行先インスタンスでデフォルト権限を再適用してください:

    ALTER DEFAULT PRIVILEGES ... GRANT ...;

空でないシステムテーブル (pg_parameter_acl および pg_db_role_setting)

警告メッセージ:

warning: Invalid system tables: [pg_parameter_acl, pg_db_role_setting], these system tables should be empty.

影響:

  • pg_parameter_acl は、カーネルパラメーターに対するユーザーごとのアクセス権限を記録します。 ApsaraDB RDS for PostgreSQL はこれらの権限を内部で管理するため、ソースのエントリを移行先に適用することはできません。

  • pg_db_role_setting は、データベースごと、ロールごとのデフォルトのパラメーター値を記録します。移行前にテーブルがクリアされていない場合、これらの設定は正しく引き継がれません。

[解決策:]

  1. ソースインスタンスで両方のシステムテーブルをクリアしてください:

    DELETE FROM pg_parameter_acl;
    DELETE FROM pg_db_role_setting;
  2. 移行が完了した後、移行先インスタンスの異なるデータベースでユーザーのデフォルト権限を設定してください。

予約済みロールの権限チェック

チェック内容:ソースインスタンスのアカウントに対し、許可されていない予約済みロールの権限が付与されているかを確認します。

エラーメッセージ:

error: some disallowed reserved roles [pg_write_server_files] are granted to user. you should revoke these roles from their members

影響: ApsaraDB RDS for PostgreSQL は、マネージド環境で許可されていないサーバーファイルシステムの操作へのアクセスを提供する pg_write_server_files などの特定の組み込みロールを制限します。これらのロールがソースインスタンスのアカウントに付与されている場合、移行は失敗します。

[解決策:]

ソースインスタンスのすべてのアカウントから、許可されていない予約済みロールを取り消してください。例:

REVOKE pg_write_server_files FROM "user";