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

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

最終更新日:Jan 16, 2024

このトピックでは、セルフマネージド型PostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへのクラウド移行の評価レポートについて説明します。 このトピックでは、レポートの一般的なエラーとエラーの解決策についても説明します。

クラウド移行評価レポートのステータス失敗の場合、操作列の [レポートの表示] をクリックして、レポートの詳細を表示できます。 レポートには次の詳細が含まれています。
説明 ApsaraDB RDS For PostgreSQLインスタンスへのクラウド移行の詳細については、「ApsaraDB RDS for PostgreSQLインスタンスへのクラウド移行機能の使用」をご参照ください。

rdsを空にする (ApsaraDB RDS for PostgreSQLインスタンスのデータベースが空かどうかを確認する)

チェックアイテム:

rdsデータベースの確認

一般的なエラー:
error:postgres not empty、テーブルが存在するかどうかを確認

説明:

データベースはApsaraDB RDS for PostgreSQLインスタンスに作成され、データベースにはデータが含まれています。

解決策:

ApsaraDB RDS for PostgreSQLインスタンスからtemplate0、template1、postgresデータベースを除くすべてのデータベースを削除します。 さらに、ha_health_checkテーブルを除くすべてのテーブルをpostgresデータベースから削除します。

ソース接続の確認 (セルフマネージドPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンス間の通信が正常かどうかを確認)

  • チェックアイテム1:

    チェックip接続可能

    一般的なエラー:
    エラー: XX.XX.XX.XXは近寄りません

    説明:

    自己管理型PostgreSQLインスタンスが存在するサーバーのIPアドレス、またはDNSサーバーのIPアドレスにアクセスできません。

    解決策:
    • 自己管理型PostgreSQLインスタンスがElastic Compute Service (ECS) インスタンスにある場合、ソースデータベース情報の設定時にECSインスタンスのプライベートIPアドレスを入力します。 ECSインスタンスのプライベートIPアドレスを取得する方法の詳細については、「IPアドレスの表示」をご参照ください。
    • 自己管理型PostgreSQLインスタンスがデータセンターに存在する場合、ソースデータベース情報を設定するときに、自己管理型PostgreSQLインスタンスが存在するホストのDNSサーバーのIPアドレスを入力します。
  • チェックアイテム2:

    接続可能なチェックポート

    一般的なエラー:
    エラー: 5432は近寄りがたい

    説明:

    • 自己管理型PostgreSQLインスタンスは、リモート接続をリッスンするように設定されていません。
    • 自己管理型PostgreSQLインスタンス用に設定されたファイアウォールは、自己管理型PostgreSQLインスタンスのポートへのアクセスを許可しません。
    解決策:
  • チェックアイテム3:

    接続可能なデータベースの確認

    一般的なエラー:
    error:cannot connect to source database by migratetest:123456

    説明:

    • 入力したパスワードが正しくありません。
    • セルフマネージド型PostgreSQLインスタンスのpg_hba.confファイルの設定が正しくありません。
    解決策:
    • 入力したユーザー名とパスワードを使用して、自己管理型PostgreSQLインスタンスに接続できるかどうかを確認します。 接続に失敗した場合は、パスワードを更新できます。 たとえば、migratetestアカウントを使用する場合は、次のコマンドを実行してmigratetestアカウントのパスワードを更新します。
      ALTER USER migratetest WITH password '123456';
    • 自己管理型PostgreSQLインスタンスのpg_hba.confファイルを変更します。 たとえば、migratetestアカウントを使用する場合、次の内容をファイルに追加します。
      host all migratetest <ApsaraDB RDS For PostgreSQLインスタンスが属するVPCのCIDRブロック> md5
      説明 詳細については、「セルフマネージドPostgreSQLインスタンスのpg_hba.confファイルの更新」をご参照ください。
  • チェックアイテム4:

    アカウントの複製権限の確認

    一般的なエラー:
    エラー: migratetestにレプリケーション権限がありません

    説明:

    • 使用するアカウントにはREPLICATION権限がありません。
    • セルフマネージド型PostgreSQLインスタンスのpg_hba.confファイルの設定が正しくありません。

    解決策:

    • 使用するアカウントにREPLICATION権限を付与します。 たとえば、migratetestアカウントを使用する場合は、次のコマンドを実行して、migratetestアカウントにREPLICATION権限を付与します。
      ALTER ROLE migratetest REPLICATION;
    • 自己管理型PostgreSQLインスタンスのpg_hba.confファイルを変更します。 たとえば、migratetestアカウントを使用する場合、次の内容をファイルに追加します。
      host replication migratetest <ApsaraDB RDS For PostgreSQLインスタンスが属するVPCのCIDRブロック> md5
      説明 詳細については、「セルフマネージドPostgreSQLインスタンスのpg_hba.confファイルの更新」をご参照ください。
  • チェックアイテム5:

    アカウントcreaterole特権を確認する

    一般的なエラー:
    エラー: migratetestにはcreaterole特権がありません

    説明:

    使用するアカウントにはCREATEROLE権限がありません。

    解決策:

    使用するアカウントにCREATEROLE権限を付与します。 たとえば、migratetestアカウントを使用する場合は、次のコマンドを実行して、
    ALTER ROLE migratetest CREATEROLE;
  • チェックアイテム6:

    アカウントのモニター権限を確認する

    一般的なエラー:
    error:migratetestは、レプリケーションステータスを監視するpg_monitorのメンバーである必要があります

    説明:

    使用するアカウントにはpg_monitor権限がありません。 pg_stat_wal_receiver
    説明 pg_monitor権限は、pg_stat_replicationやpg_stat_wal_receiverなどのシステムビューを照会し、レプリケーションリンクに関する情報を取得するために使用されます。

    解決策:

    使用するアカウントにpg_monitor権限を付与します。 たとえば、migratetestアカウントを使用する場合は、次のコマンドを実行して、migratetestアカウントにpg_monitor権限を付与します。
    grant pg_monitor to migratetest;

ソースバージョンの確認 (セルフマネージドPostgreSQLインスタンスのメジャーエンジンバージョンの確認)

チェックアイテム:

メジャーバージョンの一貫性を確認する

一般的なエラー:
エラー: バージョン不一致、ソースバージョン: 10、現在のバージョン: 13.0

説明:

自己管理型PostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンスは、異なるメジャーエンジンバージョンを実行します。

解決策:

自己管理型PostgreSQLインスタンスと同じメジャーエンジンバージョンを実行するApsaraDB RDS for PostgreSQLインスタンスを購入します。

ソースglibcバージョンの確認 (セルフマネージドPostgreSQLインスタンスのGNU Cライブラリバージョンの確認)

チェックアイテム:

ソースglibcバージョンの互換性を確認する

一般的なエラー:
warning:source glibc version is not compatible with rds pg

説明:

セルフマネージド型PostgreSQLインスタンスのGNU Cライブラリバージョンは、ApsaraDB RDS for PostgreSQLインスタンスのGNU Cライブラリバージョンと互換性がありません。
説明 GNU Cライブラリのバージョン2.28では、いくつかの異なる照合順序を使用して、UTF-8エンコーディングで文字セットを並べ替えます。 セルフマネージドPostgreSQLインスタンスのGNU Cライブラリバージョンが、ApsaraDB RDS for PostgreSQLインスタンスのGNU Cライブラリバージョンと互換性がない場合、ApsaraDB RDS for PostgreSQLインスタンスの文字セットは、クラウド移行後に予期しない順序になる可能性があります。

解決策:

以下の手順を実行します。
  1. テーブルの照合順序を確認します。
    始める;
    コミットドロップ時に一時テーブルtestcollation(id varchar (20) collate "en_US.utf8") を作成します。testcollation値 ('-1') 、('1') に挿入します。id制限1でtestcollation orderからid='1' を選択します。ロールバック; 
    次の結果を返すことができます。
    • trueが返された場合、それ以上のアクションは必要ありません。 クラウド移行にはリスクはありません。
    • falseが返された場合は、以降の手順に進みます。
  2. データベースの照合順序を確認します。
    SELECT datname,datcollate FROM pg_database, datcollate NOT IN ('C', 'POSIX');
    次の結果を返すことができます。
    • 結果が返されない場合、それ以上のアクションは必要ありません。 クラウド移行にはリスクはありません。
    • 結果が返された場合は、次の手順に進みます。
  3. すべてのデータベースをチェックして、照合順序がCまたはPOSIXでないインデックスを見つけます。 結果ASを持つ
    (
        としてdefcollを使って (
            SELECT datcollate AS coll
            pg_databaseから
            WHERE datname = current_database()
        )
        SELECT indrerid::regclass::text relname, indexrerid::regclass::text indexname,
            c.collname = 'default' の場合
                それからdefcoll.coll
                ELSE c.collname
            END AS照合
        FROM (SELECT indexrerid, indrerid, indcollation[i] coll FROM pg_index, generate_subscripts(indcollation, 1) g(i)) s
            JOIN pg_collation c ON coll=c.oid
            クロス参加defcoll
        どこcollprovider IN ('d' 、'c') とcollname NOT IN ('C' 、'POSIX')
    )
    SELECT result.relname, result.indexname, result.collation FROM result WHERE result.collation NOT IN ('C', 'POSIX'); 
    次の結果を返すことができます。
    • 結果が返されない場合、それ以上のアクションは必要ありません。 クラウド移行にはリスクはありません。
    • 結果が返された場合、クラウド移行にはリスクがあります。

ディスクサイズの確認 (ApsaraDB RDS for PostgreSQLインスタンスの使用可能なストレージが十分かどうかを確認)

チェックアイテム:

ディスクサイズを十分に確認する

一般的なエラー:
エラー: source_db_size > disk_size * 0.95

説明:

自己管理型PostgreSQLインスタンスの使用済みストレージが、ApsaraDB RDS for PostgreSQLインスタンスの使用可能なストレージの95% を超えています。 これは、ApsaraDB RDS for PostgreSQLインスタンスの使用可能なストレージが不足していることを意味します。

解決策:

  1. 次のコマンドを実行して、セルフマネージドPostgreSQLインスタンスの使用済みストレージを表示します。
    SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
    説明 返される使用済みストレージは、MB単位で測定されます。
  2. クラウド移行を成功させるためにApsaraDB RDS for PostgreSQLインスタンスが提供する必要がある利用可能なストレージを計算します。

    たとえば、自己管理型PostgreSQLインスタンスの使用済みストレージが100 GBの場合、ApsaraDB RDS For PostgreSQLインスタンスの使用可能なストレージは110 GB以上である必要があります。

  3. ApsaraDB RDS for PostgreSQLインスタンスの仕様を変更して、ストレージ容量を拡張します。 詳細は、「インスタンス仕様の変更」をご参照ください。

Check wal keep size (wal_keep_sizeパラメータの値を確認してください)

チェックアイテム:

チェックwalはサイズを十分に大きく保つ

一般的なエラー:
warning:wal_keep_size X MBが小さすぎます。 wal_keep_segmentsまたはwal_keep_sizeを十分に大きく設定して、pg_basebackupの成功
を確認してください

説明:

wal_keep_sizeまたはwal_keep_segmentsパラメーターの値は小さいです。

解決策:

  • セルフマネージド型PostgreSQLインスタンスがPostgreSQL 13以降のバージョンを実行している場合は、ApsaraDB RDS for PostgreSQLインスタンスのwal_keep_sizeパラメーターの値を大きくします。 これにより、クラウド移行中の完全バックアップと増分バックアップの成功率を高めることができます。
  • セルフマネージド型PostgreSQLインスタンスがPostgreSQL 13より前のバージョンを実行している場合は、ApsaraDB RDS for PostgreSQLインスタンスのwal_keep_segmentsパラメーターの値を大きくします。 これにより、クラウド移行中の完全バックアップと増分バックアップの成功率を高めることができます。
    説明 PostgreSQL 13より前のバージョンのPostgreSQLを使用する場合、wal_keep_sizeパラメーターの値は、wal_keep_segmentsパラメーターの値にwal_segment_sizeパラメーターの値を掛けた値に等しくなります。

仕様パラメータの確認 (仕様関連パラメータの設定を確認)

チェックアイテム:

spec paramsが大きすぎるかどうかを確認する

一般的なエラー:
エラー: max_connectionsが大きすぎる、value=XXX
エラー: max_prepared_transactionsが大きすぎる、value=XXX 

説明:

セルフマネージド型PostgreSQLインスタンスのmax_connectionsおよびmax_prepared_transactionsパラメーターの値は、ApsaraDB RDS for PostgreSQLインスタンスのこれらのパラメーターの値の100倍を超えています。 この場合、ApsaraDB RDS for PostgreSQLインスタンスがレプリケーションリンクの確立中に起動しないことがあります。

解決策:

セルフマネージド型PostgreSQLインスタンスのmax_connectionsおよびmax_prepared_transactionパラメーターの値を減らします。
説明 セルフマネージドPostgreSQLインスタンスのmax_connectionsおよびmax_prepared_transactionパラメーターを再設定した後、セルフマネージドPostgreSQLインスタンスを再起動する必要があります。

rdsユーザーを確認する (ApsaraDB RDS for PostgreSQLインスタンスのシステムアカウントが自己管理型PostgreSQLインスタンスで使用されているかどうかを確認する)

チェックアイテム:

rdsシステムユーザーが占有されているかどうかを確認する

一般的なエラー:

警告: rdsシステムユーザーが占有されているかどうかを確認します。.. XXXはrds
で再利用されます

説明:

自己管理型PostgreSQLインスタンスでは、ApsaraDB RDS for PostgreSQLインスタンスのシステムアカウントaurorareplicator、およびpgxxxが使用されます。

解決策:

自己管理型PostgreSQLインスタンスで上記のアカウントを使用しないようにしてください。

拡張機能の確認 (プラグインの互換性の確認)

  • チェックアイテム1:

    サポートされている拡張機能の確認

    一般的なエラー:
    エラー: ソースでサポートされている拡張機能XXXがサポートされていません

    説明:

    ApsaraDB RDS for PostgreSQLインスタンスのプラグインは、自己管理型PostgreSQLインスタンスのプラグインと互換性がありません。

    解決策:

    自己管理型PostgreSQLインスタンスから互換性のないプラグインを削除します。

  • チェックアイテム2:

    上位バージョンのソース拡張機能を確認する

    一般的なエラー:
    エラー: 上位バージョンXXXのソース拡張機能を確認

    説明:

    セルフマネージド型PostgreSQLインスタンスの特定のプラグインのバージョンは、ApsaraDB RDS for PostgreSQLインスタンスのこれらのプラグインのバージョンよりも後のバージョンです。

    解決策:

    セルフマネージドPostgreSQLインスタンスにこれらのプラグインを再インストールし、セルフマネージドPostgreSQLインスタンスのこれらのプラグインのバージョンがApsaraDB RDS for PostgreSQLインスタンスのこれらのプラグインのバージョンと同じであることを確認します。

  • チェックアイテム3:

    下位バージョンのソース拡張を確認する

    一般的なエラー:
    警告: 下位バージョンXXXのソース拡張機能を確認

    説明:

    セルフマネージド型PostgreSQLインスタンスの特定のプラグインのバージョンは、ApsaraDB RDS for PostgreSQLインスタンスのこれらのプラグインのバージョンよりも前のバージョンです。

    解決策:

    アクションは必要ありません。 プラグインのバージョンは、クラウド移行後に自動的に更新されます。