Amazon RDS の PostgreSQL にデータをインポートする
Amazon RDS に移動させる既存の PostgreSQL デプロイがあるとします。タスクの複雑さは、データベースのサイズと転送するデータベースオブジェクトの種類に依存しています。例えば、データベースにギガバイトのオーダーのデータセット、さらにストアドプロシージャとトリガーが含まれているとします。このようなデータベースは、単純なデータベース (数メガバイトのテストデータを含むだけで、トリガーやストアドプロシージャを含まないもの) よりも複雑になります。
次の条件で、ネイティブ PostgreSQL データベース移行ツールを使用することをお勧めします。
-
ターゲットデータベースエンジンと同じデータベースエンジンを持つデータベースから移行する、同機種移行である。
-
データベース全体を移行する。
-
ネイティブツールでは、最小のダウンタイムでシステムを移行することができます。
他の多くの場合、データベースの移行には、AWS Database Migration Service (AWS DMS) を使用することが最良のアプローチとなります。AWSDMS により、ダウンタイムなしでデータベースを移行できます。また、多くのデータベースエンジンでは、ターゲットデータベースへの切り替え準備ができるまで、進行中のレプリケーションを続行することができます。AWS DMS を使用することで、同じデータベースエンジン、または異なるデータベースエンジンへの移行が可能です。ソースデータベースとは別のデータベースエンジンへ移行する場合は、AWS Schema Conversion Tool (AWS SCT) を使用できます。AWS SCT を使用して、AWS DMS で移行されないスキーマオブジェクトを移行します。AWS DMS の詳細については、「AWS Database Migration Service とは」を参照してください。
DB パラメータグループを変更し、次のインポート専用の設定を含めます。DB インスタンスサイズの最も効率的な設定を見つけるために、パラメータ設定をテストする必要があります。さらに、インポートが完了したら、これらのパラメータを本番稼働用の値に戻す必要があります。
DB インスタンスの設定を次のように変更します。
-
DB インスタンスのバックアップを無効にします (backup_retention を 0 に設定します)。
-
マルチ AZ を無効にする。
次の設定を含むように DB パラメータグループを変更します。これらの設定は、データのインポート時にのみ使用してください。DB インスタンスサイズの最も効率的な設定を見つけるために、パラメータ設定をテストする必要があります。さらに、インポートが完了したら、これらのパラメータを本番稼働用の値に戻す必要があります。
Parameter | インポート時の推奨値 | 説明 |
---|---|---|
|
524288、1048576、2097152、または 4194304 (KB 単位)。これらの設定は、512 MB、1 GB、2 GB、および 4 GB と同等です。 |
この設定の値は、ホストのサイズによって異なります。このパラメータは、CREATE INDEX ステートメントで使用され、各パラレルコマンドがこの量のメモリを使用できます。この設定値が大きすぎてメモリ不足が生じることのないように、最適な値を計算します。 |
|
256 (バージョン 9.6 の場合)、4096 (バージョン 10 以降の場合) |
自動チェックポイント中に WAL を拡張するための最大サイズ。このパラメータを増やすと、クラッシュ回復に必要な時間が長く可能性があります。PostgreSQL 9.6 以降では、このパラメータは PostgreSQL バージョン 9.6 の場合、この値は 16 MB 単位です。それ以降のバージョンでは、値は 1 MB 単位です。例えば、バージョン 9.6 では、128 は、それぞれ 16 MB のサイズである 128 個のチャンクを意味します。バージョン 12.4 では、2048 は、それぞれ 1 MB のサイズである 2048 個のチャンクを意味します。 |
|
1800 |
この値に設定すると、WAL ローテーションの頻度を低くすることができます。 |
|
オフ |
この設定を無効にすると、書き込みが速くなります。このパラメータをオフにすると、サーバークラッシュ時にデータが損失するリスクを下げることができます (FSYNC はオフにしないでください)。 |
|
8192 |
この値は、8 KB 単位です。これも WAL の生成速度に貢献します。 |
|
0 |
リソースが使用されないように、データのロード時に PostgreSQL の自動バキュームパラメータを無効にします。 |
これらの設定で、pg_dump -Fc
(圧縮) または pg_restore -j
(パラレル) コマンドを使用します。
注記
PostgreSQL コマンド pg_dumpall
の実行には SUPER_USER 権限が必要ですが、この権限は DB インスタンスの作成時に付与されません。そのため、このコマンドをデータのインポートに使用することはできません。