

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での同種データ移行のソースとしての PostgreSQL データベースの使用 AWS DMS
<a name="dm-data-providers-source-postgresql"></a>

 AWS DMSでの [同種データ移行](data-migrations.md) のソースとして、PostgreSQL データベースを使用できます。この場合、ソースデータプロバイダーは、オンプレミス、Amazon EC2、または RDS for PostgreSQL データベースにすることができます。

同種データ移行を実行するには、PostgreSQL ソースデータベース AWS DMS の で指定したデータベースユーザーにスーパーユーザーアクセス許可を付与します。データベースユーザーがソース内のレプリケーション固有の機能にアクセスするには、スーパーユーザーのアクセス許可が必要となります。フルロードデータ移行の場合、データベースユーザーにはテーブルを移行するための `SELECT` 権限が必要です。

次のスクリプトを使用して、PostgreSQL のソースデータベースで必要な権限を持つデータベースユーザーを作成します。移行するすべてのデータベースに対して`GRANT`クエリを実行します AWS。

```
CREATE USER your_user WITH LOGIN PASSWORD 'your_password';
ALTER USER your_user WITH SUPERUSER;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO your_user;
```

上記の例の各 *user input placeholder* は独自の情報に置き換えます。

AWS DMS は、プライマリ キーを持つ PostgreSQL テーブルの CDC をサポートしています。テーブルにプライマリ キーがない場合、先書きログ (WAL) にはデータベース行の前イメージが含まれません。ここでは、追加の構成設定を使用し、回避策としてテーブルレプリカ アイデンティティを使用できます。ただし、この方法では追加のログが生成される可能性があります。注意深いテストの後にのみ、回避策としてテーブルレプリカ アイデンティティ を使用することをお勧めします。詳細については、「[DMS ソースとして PostgreSQL データベースを使用する場合の追加設定](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Advanced)」を参照してください。

次のセクションでは、セルフマネージド型の PostgreSQL データベースと AWSが管理する PostgreSQL データベースの設定の具体的な前提条件について説明します。

**Topics**
+ [での同種データ移行のソースとしてのセルフマネージド PostgreSQL データベースの使用 AWS DMS](#dm-data-providers-source-postgresql-sm)
+ [での同種データ移行のソースとしての AWSマネージド PostgreSQL データベースの使用 AWS DMS](#dm-data-providers-source-postgresql-aws)
+ [PostgreSQL 互換データベースを同種データ移行のソースとして使用する場合の制限](#dm-data-providers-source-postgresql-limitations)

## での同種データ移行のソースとしてのセルフマネージド PostgreSQL データベースの使用 AWS DMS
<a name="dm-data-providers-source-postgresql-sm"></a>

このセクションでは、オンプレミスまたは Amazon EC2 インスタンスでホストされる PostgreSQL データベースの設定方法について説明します。

ソースの PostgreSQL データベースのバージョンを確認します。で説明されているように、 がソース PostgreSQL データベースバージョン AWS DMS をサポートしていることを確認します[DMS 同種データ移行のソース](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.HomogeneousDataMigrations)。

同種データ移行は、論理レプリケーションを使用した変更データキャプチャ (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 ドキュメント](https://www.postgresql.org/docs/current/intro-whatis.html)をご参照ください。

## での同種データ移行のソースとしての AWSマネージド PostgreSQL データベースの使用 AWS DMS
<a name="dm-data-providers-source-postgresql-aws"></a>

このセクションでは、Amazon RDS for PostgreSQL データベースインスタンスを設定する方法について説明します。

PostgreSQL DB インスタンスの AWS マスターユーザーアカウントを、 での同種データ移行用の PostgreSQL ソースデータプロバイダーのユーザーアカウントとして使用します AWS DMS。マスターユーザーアカウントには、CDC を設定するために必要なロールがあります。管理ユーザーアカウント以外のアカウントを使用する場合、アカウントに `rds_superuser` ロールと `rds_replication` ロールが必要です。`rds_replication` ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権許可付与します。

次のコード例を使用して、`rds_superuser` ロールと `rds_replication` ロールを付与します。

```
GRANT rds_superuser to your_user;
GRANT rds_replication to your_user;
```

上記の例の *your\$1user* は、使用するユーザー名に置き換えます。

論理レプリケーションを有効にするには、DB パラメータグループの `rds.logical_replication` パラメータを 1 に設定します。この静的パラメータを有効にするには、DB インスタンスを再起動する必要があります。

## PostgreSQL 互換データベースを同種データ移行のソースとして使用する場合の制限
<a name="dm-data-providers-source-postgresql-limitations"></a>

PostgreSQL 互換データベースを同種データ移行のソースとして使用する場合、次の制限が適用されます。
+ データソースへの接続に使用するユーザー名には以下の制限があります。
  + 2～64 文字を使用できます。
  + スペースは使用できません。
  + 文字として a～z、A～Z、0～9、アンダースコア (\$1) を使用できます。
  + a～z または A～Z で始める必要があります。
+ データソースへの接続に使用するパスワードには以下の制限があります。
  + 1～128 文字を使用できます。
  + 一重引用符 (')、二重引用符 (")、セミコロン (;)、スペースのいずれも使用できません。