このトピックでは、RDS PostgreSQL のワンクリック移行機能を使用して、パブリック PostgreSQL データベースまたは他のクラウドプロバイダーのインスタンスを RDS PostgreSQL に移行する方法について説明します。
背景情報
RDS PostgreSQL は Virtual Private Cloud (VPC) で実行されます。デフォルトでは、ワンクリック移行機能は、プライベートネットワーク経由で他のデータベースを RDS PostgreSQL に移行することに対応しています。パブリックネットワークから PostgreSQL データベースを移行するには、NAT Gateway と関連付けられた Elastic IP Address (EIP) を設定する必要があります。
このトピックでは、RDS PostgreSQL インスタンスに NAT Gateway を設定して EIP を関連付け、パブリックネットワークの移行元からのワンクリック移行を有効にする方法について説明します。
この方法により、RDS PostgreSQL インスタンスのネットワークセキュリティを確保しつつ、パブリックネットワークからのワンクリック移行が可能になります。
NAT Gateway の SNAT エントリにより、RDS PostgreSQL インスタンスはインターネットにアクセスできます。インスタンス自体は公開されず、NAT Gateway を介してサービスを提供することはありません。NAT Gateway と SNAT の詳細については、「NAT Gateway の SNAT 機能を使用してインターネットにアクセスする」をご参照ください。
ユースケース
-
パブリックインターネット上のセルフマネージド PostgreSQL データベースのクラウドへの移行。
-
Google Cloud SQL や Amazon RDS for PostgreSQL など、他のクラウドプロバイダーが提供する PostgreSQL インスタンスの RDS PostgreSQL への移行。
説明他のクラウドプロバイダーには、カスタムの PostgreSQL プラグインがある場合があります。移行中にプラグインの非互換性エラーが発生した場合は、チケットを起票してください。
前提条件
RDS PostgreSQL インスタンスは、次の要件を満たしている必要があります:
-
移行元インスタンスと移行先インスタンスのメジャーバージョンが一致している必要があります。この機能は PostgreSQL 10 以降に対応しています。
説明-
移行元インスタンスのバージョンが PostgreSQL 10 より前の場合は、ワンクリック移行を実行する前にメジャーバージョンをアップグレードしてください。
-
移行元インスタンスと移行先インスタンスのメジャーバージョンが一致しない場合、実現可能性アセスメントは失敗し、移行を続行することはできません。
-
-
移行先インスタンスはプライマリインスタンスである必要があり、読み取り専用インスタンスには対応していません。
-
移行先インスタンスのストレージタイプはクラウドディスクである必要があります。
-
移行先インスタンスは空である必要があります。その利用可能なストレージ容量は、移行元インスタンスの合計データサイズ以上である必要があります。
説明移行先インスタンスにデータが含まれている場合、実現可能性アセスメントは失敗し、移行を続行できません。データをバックアップしてからインスタンスを空にするか、新しいインスタンスを購入してください。
制限事項
なし。
影響
なし。
注意事項
移行タスク中は、移行元インスタンスにアクセスできることを確認してください。インスタンスの再起動などの操作は行わないでください。移行元インスタンスで一時的な接続の問題や HA スイッチオーバーが発生した場合、移行タスクは失敗します。
課金
NAT Gateway を設定し、EIP を関連付けると料金が発生します。詳細については、「NAT Gateway の課金」をご参照ください。
操作手順
ステップ 1:NAT Gateway と EIP の設定
このステップでは、パブリック IP アドレスを RDS PostgreSQL インスタンスの VPC に関連付けます。これにより、RDS PostgreSQL インスタンスは、パブリック IP アドレスを持つセルフマネージドデータベースや他のクラウドプロバイダーが提供するデータベースにアクセスできるようになります。
作業を開始する前に、RDS インスタンスが配置されている VPC に NAT Gateway が設定されておらず、他のパブリック IP アドレスが VPC に関連付けられていないことを確認してください。そうでない場合、接続性の問題が発生する可能性があります。
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側メニューで データベースの接続 をクリックし、[ネットワークタイプ] の横に表示される VPC のリンクをクリックします。
-
VPC コンソールで、[リソース管理] タブを選択します。[パブリックアクセスサービス] セクションで、[今すぐ作成] をクリックします。
-
[NAT Gateway] 作成ページで、次の主要なパラメーターを設定し、残りのパラメーターにはデフォルト値を使用してください。
パラメーター
説明
例
Elastic IP Address
すでに Elastic IP Address をお持ちの場合は、それを選択できます。この例では、[Elastic IP Address の購入] を選択します。
Elastic IP Address の購入
ピーク帯域幅
ニーズに応じてピーク帯域幅を選択します。このワンクリック移行では、帯域幅の制限による移行の遅延を防ぐために、ピーク帯域幅を最大値に設定できます。
200 Mbps
-
[今すぐ購入] をクリックします。
-
パラメーター設定が正しいことを確認し、サービス利用規約のチェックボックスを選択してから、[注文の確認] をクリックします。
操作が完了すると、NAT Gateway が作成され、EIP が関連付けられ、SNAT エントリが設定されます。
-
Elastic IP Address のリソース ID をクリックします。EIP の [インスタンス情報] ページで、パブリック [IP アドレス] を表示できます。
ステップ 2:移行元データベースの設定
セルフマネージド PostgreSQL データベース
-
重要
[pg_hba.conf] ファイルで設定する IP アドレスは、ステップ 1 で RDS PostgreSQL インスタンスに関連付けられた
Elastic IP Address/32です。
他のプロバイダーの PostgreSQL
-
[wal_keep_segments] または [wal_keep_size] パラメーターの値を変更します。詳細については、クラウドプロバイダーの公式ドキュメントをご参照ください。
この設定により、pg_wal ディレクトリに十分な過去のログファイルが保持されるようになります。これにより、完全バックアップ後に移行元インスタンスが必要な WAL ログを削除してしまい、移行の再実行を防ぎます。
-
wal_keep_segments:PostgreSQL 10、11、12 に適用されます。このパラメーターを 4096 以上に設定することを推奨します。
-
wal_keep_size:PostgreSQL 13、14、15 に適用されます。このパラメーターを 65536 以上に設定することを推奨します。
-
-
移行アカウントを作成します。
CREATE USER migratetest CREATEROLE REPLICATION LOGIN PASSWORD '123456'; GRANT pg_monitor TO migratetest;説明上記のコマンドのアカウント (
migratetest) とパスワード (123456) は例です。要件に応じて変更してください。 -
パブリックネットワーク接続を有効にし、セキュリティグループまたはホワイトリストを設定して、ステップ 1 で設定した EIP からのアクセスを許可してください。詳細については、クラウドプロバイダーの公式ドキュメントをご参照ください。
重要他のクラウドプロバイダーが提供する PostgreSQL インスタンスで ICMP プロトコルが有効になっていることを確認してください。
ping <PostgreSQL インスタンスのパブリックエンドポイント>コマンドを実行して接続性を確認できます。
ステップ 3:実現可能性アセスメントの実行
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側メニューで クラウド移行 / ディザスタリカバリ構築 を選択し、Migration Assessment タブをクリックします。
-
設定ウィザードの シーンとソースタイプの選択 ステップで、シナリオとして クラウド移行 を、移行元のタイプとして 自作インスタンスまたはその他のインスタンス を選択し、次に 次のステップ をクリックします。
-
対象インスタンスの設定 ステップで、次のステップ をクリックします。
-
ソースインスタンスの設定 ステップで、すべてのオプションを選択し、次のステップ をクリックします。
-
実現可能性評価の開始 ステップで、次のパラメーターを設定します。
パラメーター
説明
[移行タスク名]
システムが自動的に名前を生成します。変更は不要です。
[ソース VPC IP/DNS]
-
パブリックネットワーク上のセルフマネージド PostgreSQL データベースの場合:データベースサーバーのパブリック IP アドレス。
-
他のクラウドプロバイダーが提供する PostgreSQL インスタンスの場合:インスタンスのパブリックエンドポイント。
[ソースインスタンスポート]
-
パブリックネットワーク上の自己管理型 PostgreSQL データベース: データベースポートです。
netstat -a | grep PGSQLコマンドを実行してポートを確認できます。 -
他のクラウドプロバイダーが提供する PostgreSQL インスタンスの場合:クラウドプロバイダーの管理コンソールでこの情報を見つけます。
[ユーザ名]
ステップ 2 で作成した移行アカウントのユーザー名とパスワード。
[パスワード]
-
-
実現可能性評価タスクの作成 をクリックします。
Migration Assessment ページの クラウド移行 リストで移行アセスメントタスクのステータスを表示できます。
-
ステータス が 成功 の場合にのみ、クラウド移行 に進むことができます。
-
ステータス が 失敗しました の場合は、操作 列の レポートの表示 をクリックし、エラーメッセージに基づいて問題を解決してください。一般的なエラーについては、「移行アセスメントレポートの解釈」をご参照ください。
説明他のクラウドプロバイダーには、カスタムの PostgreSQL プラグインがある場合があります。移行中にプラグインの非互換性エラーが発生した場合は、チケットを起票してください。
エラーを解決した後、操作 列の 再評価 をクリックして、アセスメントを再度実行できます。
-
ステップ 4:クラウドへの移行
このステップは、実現可能性アセスメントタスクが成功した後にのみ実行できます。
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側メニューで クラウド移行 / ディザスタリカバリ構築 を選択し、クラウド移行 タブに切り替えてから、[クラウドへの移行タスクの作成] をクリックします。
-
クラウド移行タスクの作成 ウィンドウで、評価タスクを関連付け ドロップダウンリストから ステップ 3 で成功したタスクを選択します。
評価タスクを関連付け を選択すると、他のパラメーターは自動的に入力されます。
-
クラウド移行を開始 をクリックして、移行タスクを開始します。
警告移行タスク中は、移行元インスタンスにアクセスできることを確認してください。インスタンスの再起動などの操作は行わないでください。移行元インスタンスで一時的な接続の問題や HA スイッチオーバーが発生した場合、移行タスクは失敗します。
-
切り替えを実行します。
-
移行タスクリストで、クラウド移行プロセス 列のリンクをクリックして、タスクの進捗状況を表示できます。
-
移行フェーズが 増分同期 のときに、[操作] 列の 切り替え をクリックして RDS PostgreSQL インスタンスをプライマリインスタンスに昇格させ、本番トラフィックの処理を開始します。
-
切り替え ウィンドウで、画面の指示に従って移行元インスタンスを読み取り専用に設定するか、アプリケーションからの書き込みを停止してください。
移行元インスタンスを読み取り専用に設定するには:
-- データベースを読み取り専用に設定します。 ALTER SYSTEM SET default_transaction_read_only=on; -- パラメーター設定をリロードして変更を適用します。 SELECT pg_reload_conf(); -- 既存のすべてのセッションを終了させます。 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid(); -
すべてのチェックボックスを選択し、今すぐ切り替え をクリックします。その後、移行が完了するまで待ちます。
-