AWS DMS での同種データ移行のソースとしての PostgreSQL データベースの使用
AWS DMS での 同種データ移行 のソースとして、PostgreSQL データベースを使用できます。この場合、ソースデータプロバイダーは、オンプレミス、Amazon EC2、または RDS for PostgreSQL データベースにすることができます。
同種データ移行を実行するには、AWS DMS で PostgreSQL ソースデータベースに指定したデータベースユーザーに対してスーパーユーザー権限を付与します。データベースユーザーがソース内のレプリケーション固有の機能にアクセスするには、スーパーユーザーのアクセス許可が必要となります。フルロードデータ移行の場合、データベースユーザーにはテーブルを移行するための SELECT 権限が必要です。
次のスクリプトを使用して、PostgreSQL のソースデータベースで必要な権限を持つデータベースユーザーを作成します。AWS に移行するすべてのデータベースに対して GRANT クエリを実行します。
CREATE USERyour_userWITH LOGIN PASSWORD 'your_password'; ALTER USERyour_userWITH SUPERUSER; GRANT SELECT ON ALL TABLES IN SCHEMAschema_nameTOyour_user;
上記の例の各 user input placeholder は独自の情報に置き換えます。
AWS DMS は、プライマリ キーを持つ PostgreSQL テーブルの CDC をサポートしています。テーブルにプライマリ キーがない場合、先書きログ (WAL) にはデータベース行の前イメージが含まれません。ここでは、追加の構成設定を使用し、回避策としてテーブルレプリカ アイデンティティを使用できます。ただし、この方法では追加のログが生成される可能性があります。注意深いテストの後にのみ、回避策としてテーブルレプリカ アイデンティティ を使用することをお勧めします。詳細については、「DMS ソースとして PostgreSQL データベースを使用する場合の追加設定」を参照してください。
次のセクションでは、セルフマネージド型の PostgreSQL データベースと AWS が管理する PostgreSQL データベースの設定の具体的な前提条件について説明します。
トピック
AWS DMS での同種データ移行のソースとしてのセルフマネージド型 PostgreSQL データベースの使用
このセクションでは、オンプレミスまたは Amazon EC2 インスタンスでホストされる PostgreSQL データベースの設定方法について説明します。
ソースの PostgreSQL データベースのバージョンを確認します。「DMS 同種データ移行のソース」で説明されるとおり、使用している AWS DMS がソースの PostgreSQL データベースのバージョンをサポートしているかを確認します。
同種データ移行は、論理レプリケーションを使用した変更データキャプチャ (CDC) をサポートします。セルフマネージド型 PostgreSQL ソースデータベースの論理レプリケーションを有効にするには、postgresql.conf の設定ファイルで次のパラメータと値を設定します。
-
に
wal_levelを設定します。。logical -
max_replication_slotsを 1 より大きい値に設定します。max_replication_slots値は、実行するタスクの数に従って設定してください。たとえば、5 つのタスクを実行するには、少なくとも 5 つのスロットを設定する必要があります。スロットは、タスクが開始するとすぐに自動的に開き、タスクが実行されなくなった場合でも開いたままです。開いているスロットは手動で削除してください。 -
max_wal_sendersを 1 より大きい値に設定します。max_wal_sendersパラメータは、実行可能な同時タスクの数を設定します。 -
wal_sender_timeoutパラメータは、指定されたミリ秒数が過ぎても非アクティブなレプリケーション接続を終了します。デフォルト値は 60,000 ミリ秒 (1 秒)。値を 0 (ゼロ) に設定するとタイムアウトメカニズムが無効になる。この設定は DMS では有効。
一部のパラメータは静的であり、サーバースタート時にのみ設定できます。設定ファイルへの変更は、サーバーが再起動されるまで無視されます。詳細については、PostgreSQL ドキュメント
AWS DMS での同種データ移行のソースとしての AWS 管理の PostgreSQL データベースの使用
このセクションでは、Amazon RDS for PostgreSQL データベースインスタンスを設定する方法について説明します。
AWS DMS での同種データ移行には、PostgreSQL DB インスタンスの AWS 管理ユーザーアカウントを PostgreSQL ソースデータプロバイダーのユーザーアカウントとして使用します。マスターユーザーアカウントには、CDC を設定するために必要なロールがあります。管理ユーザーアカウント以外のアカウントを使用する場合、アカウントに rds_superuser ロールと rds_replication ロールが必要です。rds_replication ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権許可付与します。
次のコード例を使用して、rds_superuser ロールと rds_replication ロールを付与します。
GRANT rds_superuser toyour_user; GRANT rds_replication toyour_user;
上記の例の your_user は、使用するユーザー名に置き換えます。
論理レプリケーションを有効にするには、DB パラメータグループの rds.logical_replication パラメータを 1 に設定します。この静的パラメータを有効にするには、DB インスタンスを再起動する必要があります。
PostgreSQL 互換データベースを同種データ移行のソースとして使用する場合の制限
PostgreSQL 互換データベースを同種データ移行のソースとして使用する場合、次の制限が適用されます。
データソースへの接続に使用するユーザー名には以下の制限があります。
2~64 文字を使用できます。
スペースは使用できません。
文字として a~z、A~Z、0~9、アンダースコア (_) を使用できます。
a~z または A~Z で始める必要があります。
データソースへの接続に使用するパスワードには以下の制限があります。
1~128 文字を使用できます。
一重引用符 (')、二重引用符 (")、セミコロン (;)、スペースのいずれも使用できません。