このトピックでは、ApsaraDB RDS for PostgreSQLのクラウド移行機能を使用して、パブリックIPアドレスを持つPostgreSQLインスタンスのデータをApsaraDB RDS for PostgreSQLインスタンスに移行する方法について説明します。 PostgreSQLインスタンスは、自己管理型PostgreSQLインスタンスまたはサードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスです。
背景情報
仮想プライベートクラウド (VPC) でRDSインスタンスを作成できます。 クラウド移行機能を使用して、PostgreSQLインスタンスのデータを内部ネットワーク経由でRDSインスタンスに移行できます。 クラウド移行機能を使用して、パブリックIPアドレスを持つPostgreSQLインスタンスのデータをRDSインスタンスに移行する場合は、RDSインスタンスにインターネットNATゲートウェイを設定し、elastic IPアドレス (EIP) をインターネットNATゲートウェイに関連付ける必要があります。
このトピックでは、RDSインスタンスにインターネットNATゲートウェイを設定し、EIPをインターネットNATゲートウェイに関連付ける方法についても説明します。
この構成により、インターネット経由での移行が可能になり、クラウド移行中のRDSインスタンスのネットワークセキュリティが確保されます。
インターネットNATゲートウェイ用に作成されたソースネットワークアドレス変換 (SNAT) エントリは、RDSインスタンスがインターネットにアクセスすることを許可しますが、RDSインスタンスがインターネット経由でサービスを提供することを許可しません。 インターネットNATゲートウェイとSNATの詳細については、「インターネットNATゲートウェイのSNAT機能を使用してインターネットにアクセスする」をご参照ください。
シナリオ
パブリックIPアドレスを持つ自己管理型PostgreSQLインスタンスのデータをRDSインスタンスに移行する場合。
GoogleやAmazonなどのサードパーティのクラウドサービスプロバイダーが提供するPostgreSQLインスタンスのデータをRDSインスタンスに移行する場合。
説明サードパーティのクラウドサービスプロバイダーは、自己開発またはカスタムのPostgreSQL拡張機能を使用できます。 クラウド移行中に拡張機能の非互換性の問題が発生した場合は、 チケット
前提条件
次の要件が満たされています。
PostgreSQLインスタンスとRDSインスタンスのメジャーエンジンバージョンは同じです。 PostgreSQL 10以降がサポートされています。
説明PostgreSQLインスタンスのメジャーエンジンバージョンがPostgreSQL 10より前の場合、クラウド移行を実行する前にメジャーバージョンをアップグレードする必要があります。
PostgreSQLインスタンスのメジャーエンジンバージョンがRDSインスタンスのメジャーエンジンバージョンと異なる場合、クラウド移行の評価は失敗し、クラウド移行を実行できません。
RDSインスタンスはプライマリRDSインスタンスです。 読み取り専用RDSインスタンスは、クラウド移行機能をサポートしていません。
RDSインスタンスはクラウドディスクを使用しています。
RDSインスタンスは空です。 RDSインスタンスの使用可能なストレージが、PostgreSQLインスタンスのデータのサイズ以上であること。
説明RDSインスタンスにデータが存在する場合、クラウド移行評価は失敗し、クラウド移行を実行できません。 クラウド移行を実行する前に、データをバックアップしてRDSインスタンスのデータを消去するか、別のRDSインスタンスを作成する必要があります。
制限事項
なし。
影響
なし。
使用上の注意
クラウド移行中に、PostgreSQLインスタンスにアクセスできることを確認します。 再起動などの操作は行わないでください。 高可用性を実現するために必要な一時的な接続または切り替えがクラウド移行中に発生すると、クラウド移行は失敗します。
課金
RDSインスタンスにインターネットNATゲートウェイを設定し、EIPをインターネットNATゲートウェイに関連付ける必要があります。 詳細については、「インターネットNATゲートウェイの課金」をご参照ください。
手順
手順1: インターネットNATゲートウェイを設定し、EIPをインターネットNATゲートウェイに関連付ける
この手順では、パブリックIPアドレスをRDSインスタンスのVPCに関連付ける方法について説明します。 パブリックIPアドレスが関連付けられると、RDSインスタンスは、パブリックIPアドレスを持つ自己管理型PostgreSQLインスタンス、またはサードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスにアクセスできます。
インターネットNATゲートウェイが設定されておらず、パブリックIPアドレスがRDSインスタンスのVPCに関連付けられていないことを確認してください。 そうしないと、RDSインスタンスへのアクセスに失敗する可能性があります。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションペインで、データベースの接続 を選択します。 表示されるページの [データベース接続] セクションで、[ネットワークタイプ] パラメーターの右側にある [VPC] リンクをクリックします。
VPCコンソールで、[リソース] タブをクリックします。 [インターネットへのアクセス] セクションで、[今すぐ作成] をクリックします。
[インターネットNATゲートウェイ] ページで、次のパラメーターを設定し、次の表に記載されていないパラメーターのデフォルト値を保持します。
パラメーター
説明
例
EIP
EIPがVPCに関連付けられている場合、このパラメーターを [EIPの選択] に設定します。 このトピックでは、[EIPの購入] を選択します。
EIPの購入
最大帯域幅
ビジネス要件に基づいて最大帯域幅値を指定します。 クラウド移行を容易にするために、このパラメーターを最大値に設定して、帯域幅制限によるクラウド移行の問題を防ぐことができます。
200 Mbps
[今すぐ購入] をクリックします。
パラメーターの設定を確認し、利用規約を読んで選択し、[確認] をクリックします。
次の図に示すページが表示されると、インターネットNATゲートウェイが作成され、EIPがインターネットNATゲートウェイに関連付けられ、インターネットNATゲートウェイのSNATエントリが作成されます。
EIPのリソースIDをクリックします。 EIPの [インスタンス情報] タブで、パブリックIPアドレスを表示します。
手順2: サードパーティのクラウドサービスプロバイダーの自己管理型PostgreSQLインスタンスまたはPostgreSQLインスタンスの設定
自己管理型PostgreSQLインスタンスの設定
セルフマネージドPostgreSQLインスタンスのpg_hba.confファイルを更新します。
重要pg_hba.confファイルで設定されているIPアドレスは、ステップ1でRDSインスタンスに関連付けられているEIPです。
サードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスの設定
wal_keep_segmentsまたはwal_keep_sizeパラメーターの値を変更します。 詳細については、各クラウドサービスプロバイダーの公式ドキュメントを参照してください。
pg_walディレクトリに保持できるログファイルの最小サイズを表示します。 最小サイズを超える場合、完全バックアップ後にPostgreSQLインスタンスのWALログが削除されます。 この場合、PostgreSQLインスタンスを再度バックアップする必要があります。
wal_keep_segments: このパラメーターは、PostgreSQL 10、PostgreSQL 11、およびPostgreSQL 12を実行するインスタンスに適用できます。 このパラメーターを4096以上の値に設定することを推奨します。
wal_keep_size: このパラメーターは、PostgreSQL 13、PostgreSQL 14、およびPostgreSQL 15を実行するインスタンスに適用できます。 このパラメーターを65536以上の値に設定することを推奨します。
クラウド移行用のアカウントを作成します。
CREATE USER migratetest CREATEROLE REPLICATION LOGIN PASSWORD '123456'; GRANT pg_monitor TO migratetest;
説明上記のステートメントでは、
migratetest
と123456
は例です。 それらを実際の値に置き換える必要があります。パブリックIPアドレスを有効にし、セキュリティグループまたはホワイトリストを設定して、手順1でRDSインスタンスに関連付けられているEIPを使用して、RDSインスタンスがサードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスにアクセスできるようにします。 詳細については、クラウドサービスプロバイダーの公式ドキュメントを参照してください。
重要サードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスに対して、インターネット制御メッセージプロトコル (ICMP) プロトコルが有効になっていることを確認する必要があります。
ping <サードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスのパブリックエンドポイント>
コマンドを実行して、ICMPプロトコルが有効になっているかどうかを確認できます。
ステップ3: クラウド移行評価の実行
ApsaraDB RDSコンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 RDSインスタンスを見つけ、インスタンスIDをクリックします。
左側のナビゲーションウィンドウで、[クラウド移行 /DR構築] をクリックします。 表示されるページで、[実現可能性評価] タブをクリックします。
設定ウィザードの [シナリオとソースタイプの設定] ステップで、[シナリオ] の場合は [クラウドへの移行] 、[ソース] の場合は [セルフマネージドインスタンスまたはその他のインスタンス] を選択します。 次に、[次へ] をクリックします。
設定ウィザードの宛先インスタンスの設定ステップで、次へをクリックします。
設定ウィザードの [ソースインスタンスの設定] ステップで、リストされているすべての項目を選択し、[次へ] をクリックします。 クラウド移行を開始する前に、リストされた項目に記載されている準備を完了する必要があります。
では、実現可能性評価の開始設定ウィザードのステップで、自己管理型PostgreSQLインスタンスに関する情報を設定します。
パラメーター
説明
移行タスク名
クラウド移行タスクの名前が自動的に生成されます。 生成された名前を変更する必要はありません。
ソース VPC IP/DNS
ソースインスタンスがパブリックIPアドレスを持つセルフマネージドPostgreSQLインスタンスの場合、このパラメーターを、セルフマネージドPostgreSQLインスタンスがデプロイされているサーバーのパブリックIPアドレスに設定します。
ソースインスタンスがサードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスの場合、このパラメーターをPostgreSQLインスタンスのパブリックエンドポイントに設定します。
ソースインスタンスポート
ソースインスタンスがパブリックIPアドレスを持つ自己管理型PostgreSQLインスタンスの場合、
netstat -a | grep PGSQL
コマンドを実行してポートを表示できます。ソースインスタンスがサードパーティのクラウドサービスプロバイダーのPostgreSQLインスタンスである場合、サードパーティのクラウドサービスプロバイダーのコンソールに移動してポートを表示できます。
ユーザ名
手順2でクラウド移行タスク用に作成されたユーザー名とパスワード。
パスワード
実現可能性評価タスクの作成をクリックします。
クラウド移行評価が完了したら、[Feasibility assessment] タブの [migration to cloud] セクションでクラウド移行評価タスクのステータスを確認できます。
実現可能性評価タスクの [ステータス] 列の値が [成功] の場合、クラウド移行を開始できます。
実現可能性評価タスクの [ステータス] 列の値が [失敗] の場合、[アクション] 列の [レポートの表示] をクリックして、報告されたエラーを表示および処理できます。一般的なエラーの詳細については、「クラウド移行評価レポートの概要」をご参照ください。
説明サードパーティのクラウドサービスプロバイダーは、自己開発またはカスタムのPostgreSQL拡張機能を使用できます。 移行中に拡張機能の非互換性の問題が発生した場合は、 チケット
報告されたエラーを処理した後、操作 列の 再評価 をクリックして、クラウド移行評価タスクを再度実行できます。
ステップ4: クラウド移行の開始
クラウド移行は、実現可能性評価タスクのステータスが [成功] の場合にのみ開始できます。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、クラウド移行 / ディザスタリカバリ構築 をクリックします。 表示されるページで、クラウド移行 タブをクリックします。 表示されるタブで、[クラウド移行タスクの作成] をクリックします。
クラウド移行タスクの作成 ダイアログボックスで、評価タスクを関連付け ドロップダウンリストから、手順3でステータスが成功を示す移行評価タスクを選択します。
評価タスクを関連付け ドロップダウンリストから移行評価タスクを選択すると、必要なパラメーターの値が自動的に取得されます。
クラウド移行を開始 をクリックします。 クラウド移行タスクが自動的に開始されます。
警告クラウド移行中に、PostgreSQLインスタンスにアクセスできることを確認します。 再起動などの操作は行わないでください。 高可用性を実現するために必要な一時的な接続または切り替えがクラウド移行中に発生すると、クラウド移行は失敗します。
ワークロードを切り替えます。
クラウド移行プロセス 列のリンクをクリックして、クラウド移行タスクの進行状況を表示します。
クラウド移行タスクが増分同期のフェーズに入ったら、クラウド移行タスクの [操作] 列で 切り替え をクリックして、PostgreSQLインスタンスのワークロードをRDSインスタンスに切り替えます。
切り替え ダイアログボックスで、読み取り要求のみを処理するようにPostgreSQLインスタンスを設定します。 または、接続されたアプリケーションからPostgreSQLインスタンスへのデータの書き込みを停止します。
読み取り要求のみを処理するようにPostgreSQLインスタンスを設定できます。
-- Configure the PostgreSQL instance to process only read requests. ALTER SYSTEM SET default_transaction_read_only=on; -- Reload the parameter configuration for the modification to take effect. SELECT pg_reload_conf(); -- Terminate all existing sessions. SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
すべてのチェックボックスを選択し、今すぐ切り替え をクリックします。 その後、クラウド移行が完了するまで待ちます。