のターゲットとしてのPostgreSQLデータベースの使用AWS Database Migration Service - AWS Database Migration Service

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

のターゲットとしてのPostgreSQLデータベースの使用AWS Database Migration Service

を使用して、別のPostgreSQLデータベースまたはサポートされている他のいずれかのAWS DMSデータベースから、データベースにデータを移行できます。PostgreSQLターゲットとしての PostgreSQL バージョン 9.4 以降 (9.x 用)、10.x、11.x、および 12.x は、これらのタイプのデータベースでサポートされています。

  • オンプレミスのデータベース

  • EC2 インスタンスでのデータベース

  • Amazon RDS DB インスタンスでのデータベース

  • Amazon Aurora互換性を持つ PostgreSQL DB インスタンス上のデータベース

注記
  • PostgreSQLバージョン 12.x はAWS DMSバージョン 3.3.3 以降でターゲットとしてサポートされています。

  • PostgreSQLバージョン 11.x はAWS DMSバージョン 3.3.1 以降でターゲットとしてサポートされています。任意の DMS バージョンのソースとして、PostgreSQLバージョン 9.4 以降 (バージョン 9.x 用) および 10.x を使用できます。

AWS DMS は、全ロードフェーズでソースからターゲットにデータを移行するときに、テーブル手法によりテーブルを受け取ります。全ロードフェーズ中のテーブルの順序は保証されません。テーブル全ロードフェーズ中、および個々のテーブルのキャッシュしたトランザクションが適用されている間は、テーブルは同期されません。その結果、アクティブな参照整合性制約により、全ロードフェーズ中にタスクが失敗する可能性があります。

PostgreSQLでは、外部キー (参照整合性制約) はトリガーを使用して実装されます。全ロードフェーズ中に、AWS DMS は各テーブルを一度に 1 つずつロードします。次のいずれかの方法を使用して、全ロード中に外部キーの制約を無効にすることを強くお勧めします。

  • インスタンスからすべてのトリガーを一時的に無効にして、全ロードを終了します。

  • session_replication_roleパラメータを使用しますPostgreSQL。

どの時点でも、トリガーは以下のいずれかの状態になります。originreplicaalways 、または disabledsession_replication_roleパラメータが replica に設定されている場合、 replica 状態のトリガーのみがアクティブになり、呼び出されると実行されます。それ以外の場合、トリガーは非アクティブなままです。

PostgreSQLには、 が設定されている場合でも、テーブルの切り捨てを防止するフェイルセーフメカニズムが用意されています。session_replication_roleこれを、トリガーを無効にする代わりに使用して、全ロードの完了を支援できます。これを行うには、ターゲットテーブルの準備モードを に設定しますDO_NOTHING。 それ以外の場合、外部キーの制約があると DROP および TRUNCATE オペレーションは失敗します。

Amazon RDS では、パラメータグループを使用してこのパラメータの設定を管理できます。で実行されているPostgreSQLインスタンスの場合、直接パラメータを設定できます。Amazon EC2

のターゲットとしてのPostgreSQLデータベースの使用の詳細については、以下のセクションを参照してください。AWS DMS

AWS Database Migration Service のターゲットとして PostgreSQL を使用する場合の制限

データベースを のターゲットとして使用する場合は、以下の制限が適用されますPostgreSQL。AWS DMS

  • JSON データ型はネイティブ CLOB データ型に変換されます。

  • Oracle PostgreSQLから移行の場合、Oracle の列に NULL 文字 (16 進数値 U + 0000) が含まれる場合、 AWS DMSは NULL 文字をスペース (16 進数値 U + 0020) に変換します。これはPostgreSQL制限によるものです。

  • Amazon Auroraサーバーレスは のターゲットとしてバージョン 10.7 Amazon Aurora との互換性があります。PostgreSQLAmazon Auroraサーバーレスの詳細については、の「Amazon Auroraサーバーレスの使用」を参照してくださいAmazon Aurora ユーザーガイド

のターゲットとしてPostgreSQLデータベースを使用する場合のセキュリティ要件AWS Database Migration Service

セキュリティ上の観点から、データ移行に使用されるユーザーアカウントは、ターゲットとして使用するすべてのPostgreSQLデータベースに登録されたユーザーである必要があります。

PostgreSQLターゲットエンドポイントで AWS DMS 移行を実行するには、最小限のユーザーアクセス許可が必要です。次の例を参照してください。

CREATE USER newuser WITH PASSWORD 'your-password'; ALTER SCHEMA schema_name OWNER TO newuser;

または,

GRANT USAGE ON SCHEMA schema_name TO myuser; GRANT CONNECT ON DATABASE postgres to myuser; GRANT CREATE ON DATABASE postgres TO myuser; GRANT CREATE ON SCHEMA schema_name TO myuser; GRANT UPDATE, INSERT, SELECT, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA schema_name TO myuser; GRANT TRUNCATE ON schema_name."BasicFeed" TO myuser;

AWS DMS のターゲットとして PostgreSQL を使用する場合の追加の接続属性

追加の接続属性を使用して PostgreSQL ターゲットを設定できます。これらの設定は、ターゲットエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります。

次の表に、 のターゲットPostgreSQLとして設定するときに使用できる追加の接続属性を示しますAWS DMS。

Name 説明

maxFileSize

PostgreSQL へのデータ転送に使用される .csv ファイルの最大サイズ (KB 単位) を指定します。

デフォルト値: 32,768 KB (32 MB)

有効な値: 1–1,048,576 KB (最大 1.1 GB)

例:maxFileSize=512

executeTimeout

PostgreSQLインスタンスのクライアントステートメントタイムアウトを秒単位で設定します。デフォルト値は 60 秒です。

例:executeTimeout=100

afterConnectScript=SET session_replication_role='replica'

変更データキャプチャ (CDC) でのみ使用する場合、この属性には AWS DMS バイパス外部キーとユーザートリガーがあり、データの一括ロードにかかる時間を短縮します。

注記

この属性は、変更データキャプチャモードでのみ有効です。

PostgreSQL のターゲットデータ型

のPostgreSQLデータベースエンドポイントAWS DMSでは、PostgreSQLデータベースのほとんどのデータ型がサポートされます。次の表に、 を使用する場合にサポートされるPostgreSQLデータベースのターゲットデータ型AWS DMSと、 のデータ型からのデフォルトマッピングを示します。AWS DMSサポートされていないデータ型は、表の後にリストされています。

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型」を参照してください。

AWS DMS データ型

PostgreSQL データ型

BOOL

BOOL

BYTES

BYTEA

DATE

DATE

TIME

TIME

DATETIME

スケールが 0 ~ 6 の場合、TIMESTAMP を使用します。

スケールが 7 ~ 9 の場合、VARCHAR (37) を使用します。

INT1

SMALLINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (P,S)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

長さが 1 ~ 21,845 の場合、VARCHAR (バイト単位の長さ) を使用します。

長さが 21,846 ~ 2,147,483,647 の場合、VARCHAR (65535) を使用します。

UINT1

SMALLINT

UINT2

INTEGER

UINT4

BIGINT

UINT8

BIGINT

WSTRING

長さが 1 ~ 21,845 の場合、VARCHAR (バイト単位の長さ) を使用します。

長さが 21,846 ~ 2,147,483,647 の場合、VARCHAR (65535) を使用します。

NCLOB

TEXT

CLOB

TEXT

注記

PostgreSQLは、ソースからレプリケートする場合、ユーザー定義のデータ型を持つ列とは別に、すべての列に対して同じデータ型のターゲットテーブルAWS DMSを作成します。このような場合、データ型はターゲットで「character varying」として作成されます。