このトピックでは、セルフマネージド型PostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスへのクラウド移行の評価レポートについて説明します。 このトピックでは、レポートの一般的なエラーとエラーの解決策についても説明します。
- rdsを空にする (ApsaraDB RDS for PostgreSQLインスタンスのデータベースが空かどうかを確認する)
- ソース接続の確認 (セルフマネージドPostgreSQLインスタンスとApsaraDB RDS for PostgreSQLインスタンス間の通信が正常かどうかを確認)
- ソースバージョンの確認 (セルフマネージドPostgreSQLインスタンスのメジャーエンジンバージョンの確認)
- ソースglibcバージョンの確認 (セルフマネージドPostgreSQLインスタンスのGNU Cライブラリバージョンの確認)
- ディスクサイズの確認 (ApsaraDB RDS for PostgreSQLインスタンスの使用可能なストレージが十分かどうかを確認)
- Check wal keep size (wal_keep_sizeパラメーターの値を確認してください)
- Check spec params (仕様関连パラメータの设定を确认)
- rdsユーザーの確認 (ApsaraDB RDS for PostgreSQLインスタンスのシステムアカウントが自己管理型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インスタンスのポートへのアクセスを許可しません。
解決策:- 自己管理型postgresqlインスタンスのPostgreSQL. confファイルに
listen_addresses = '*'
の内容を追加します。 詳細については、「セルフマネージドpostgresqlインスタンスのPostgreSQL. confファイルの設定」をご参照ください。 - ポート5432へのアクセスを許可するようにファイアウォールを設定します。 または、クラウド移行を開始する前にファイアウォールを無効にします。 詳細については、「自己管理型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
説明:
解決策:
- テーブルの照合順序を確認します。
始める; コミットドロップ時に一時テーブルtestcollation(id varchar (20) collate "en_US.utf8") を作成します。testcollation値 ('-1') 、('1') に挿入します。id制限1でtestcollation orderからid='1' を選択します。ロールバック;
次の結果を返すことができます。- trueが返された場合、それ以上のアクションは必要ありません。 クラウド移行にはリスクはありません。
- falseが返された場合は、以降の手順に進みます。
- データベースの照合順序を確認します。
SELECT datname,datcollate FROM pg_database, datcollate NOT IN ('C', 'POSIX');
次の結果を返すことができます。- 結果が返されない場合、それ以上のアクションは必要ありません。 クラウド移行にはリスクはありません。
- 結果が返された場合は、次の手順に進みます。
- すべてのデータベースをチェックして、照合順序が
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インスタンスの使用可能なストレージが不足していることを意味します。
解決策:
- 次のコマンドを実行して、セルフマネージドPostgreSQLインスタンスの使用済みストレージを表示します。
SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
説明 返される使用済みストレージは、MB単位で測定されます。 - クラウド移行を成功させるためにApsaraDB RDS for PostgreSQLインスタンスが提供する必要がある利用可能なストレージを計算します。
たとえば、自己管理型PostgreSQLインスタンスの使用済みストレージが100 GBの場合、ApsaraDB RDS For PostgreSQLインスタンスの使用可能なストレージは110 GB以上である必要があります。
- 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インスタンスがレプリケーションリンクの確立中に起動しないことがあります。
解決策:
rdsユーザーを確認する (ApsaraDB RDS for PostgreSQLインスタンスのシステムアカウントが自己管理型PostgreSQLインスタンスで使用されているかどうかを確認する)
チェックアイテム:
rdsシステムユーザーが占有されているかどうかを確認する
一般的なエラー:
警告: rdsシステムユーザーが占有されているかどうかを確認します。.. XXXはrds
で再利用されます説明:
自己管理型PostgreSQLインスタンスでは、ApsaraDB RDS for PostgreSQLインスタンスのシステムアカウントaurora
、replicator
、および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インスタンスのこれらのプラグインのバージョンよりも前のバージョンです。
解決策:
アクションは必要ありません。 プラグインのバージョンは、クラウド移行後に自動的に更新されます。