AWS Database Migration Service
ユーザーガイド (Version API バージョン 2016-01-01)

PostgreSQL データベースの AWS DMS のソースとしての使用

AWS DMS を使用して、1 つ以上の PostgreSQL データベースからデータを移行できます。PostgreSQL データベースをソースとして使用すると、別の PostgreSQL データベースまたはサポートされている他のデータベースのいずれかにデータを移行できます。AWS DMS では、オンプレミスデータベース、EC2 インスタンス上のデータベース、Amazon RDS DB インスタンス上のデータベースのソースとして、PostgreSQL バージョン 9.4 以降のデータベースがサポートされています。

注記

PostgreSQL バージョン 10.x 以降では、以前のバージョンの関数名とフォルダ名に多くの変更が加えられています。PostgreSQL バージョン 10.x 以降を AWS DMS のソースとして使用している場合は、「AWS DMS のソースとして PostgreSQL バージョン 10.x 以降を使用する」トピックで、AWS DMS のソースとしてのデータベースの準備に関する情報を参照してください。

SSL を使用して、PostgreSQL エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。PostgreSQL エンドポイントで SSL を使用する方法の詳細については、「AWS Database Migration Service での SSL の使用」を参照してください。

PostgreSQL データベースから AWS 上の PostgreSQL データベースへの同種移行の場合、以下が当てはまります。

  • ソースの JSONB 列は、ターゲットの JSONB 列に移行されます。

  • JSON 列は、ターゲットで JSON 列として移行されます。

  • HSTORE 列は、ターゲットで HSTORE 列として移行されます。

ソースが PostgreSQL、ターゲットが別のデータベースエンジンである異種移行の場合、状況は異なります。この場合、JSONB、JSON、および HSTORE 列は AWS DMS 中間タイプの NCLOB に変換され、ターゲットで対応する NCLOB 列タイプに変換されます。この場合、AWS DMS は JSONB データを LOB 列と同様に扱います。移行の全ロードフェーズ中、ターゲット列は NULL を許容する必要があります。

AWS DMS は、プライマリキーを持つ PostgreSQL テーブルの変更データキャプチャ (CDC) をサポートしています。テーブルにプライマリキーがない場合、先書きログ (WAL) にはデータベース行の前イメージが含まれていないため、AWS DMS がテーブルを更新できません。

DB インスタンスが論理レプリケーションを使用するように設定されている場合、AWS DMS では Amazon RDS PostgreSQL データベースでの CDC がサポートされています。Amazon RDS は、PostgreSQL DB インスタンスバージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。

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

AWS DMS を使用した PostgreSQL から PostgreSQL への移行

PostgreSQL 以外のデータベースエンジンから PostgreSQL データベースに移行する異種移行では、ほぼ常に AWS DMS が最適な移行ツールです。一方、PostgreSQL データベースから PostgreSQL データベースに移行する同種移行では、ネイティブツールがより効果的な場合があります。

以下の条件では、pg_dump などのネイティブ PostgreSQL データベース移行ツールを使用することをお勧めします。

  • ソース PostgreSQL データベースからターゲット PostgreSQL データベースに移行する同種移行である。

  • データベース全体を移行する。

  • ネイティブツールで最小のダウンタイムでデータを移行できる。

pg_dump ユーティリティでは、COPY コマンドを使用して、PostgreSQL データベースのスキーマとデータダンプを作成します。pg_dump によって生成されるダンプスクリプトは、同じ名前のデータベースにデータをロードし、テーブル、インデックス、外部キーを再作成します。pg_restore コマンドと -d パラメータを使用して、データを別の名前でデータベースに復元できます。

PostgreSQL データベースを Amazon RDS for PostgreSQL や Amazon Aurora (PostgreSQL) にインポートする詳しい方法については、「https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide//PostgreSQL.Procedural.Importing.html」を参照してください。

DMS を使用した PostgreSQL から PostgreSQL へのデータの移行

AWS DMS では、たとえば、オンプレミスのソース PostgreSQL データベースからターゲットの Amazon RDS for PostgreSQL や Amazon Aurora(PostgreSQL) インスタンスにデータを移行できます。通常、PostgreSQL のコアまたは基本のデータ型は正常に移行されます。

ソースデータベースではサポートされているが、ターゲットではサポートされていないデータ型は、正常に移行されない場合があります。データ型が不明な場合、AWS DMS では一部のデータ型を文字列としてストリーミングします。XML や JSON などの一部のデータ型は、小さなファイルの場合は正常に移行されますが、大きなドキュメントの場合は失敗することがあります。

次の表は、ソース PostgreSQL のデータ型と、これらのデータ型が正常に移行されるかどうかを示しています。

データ型 正常に移行 部分的に移行 移行されない コメント
INTEGER X
SMALLINT X
BIGINT X
NUMERIC/DECIMAL(p,s) X 0<p<39 および 0<s
NUMERIC/DECIMAL X p>38 または p=s=0
REAL X
DOUBLE X
SMALLSERIAL X
SERIAL X
BIGSERIAL X
MONEY X
CHAR X 精度の指定なし
CHAR(n) X
VARCHAR X 精度の指定なし
VARCHAR(n) X
TEXT X
BYTEA X
TIMESTAMP X
TIMESTAMP(Z) X
DATE X
TIME X
TIME (z) X
INTERVAL X
BOOLEAN X
ENUM X
CIDR X
INET X
MACADDR X
TSVECTOR X
TSQUERY X
XML X
POINT X
LINE X
LSEG X
BOX X
PATH X
POLYGON X
CIRCLE X
JSON X
ARRAY X
COMPOSITE X
RANGE X

PostgreSQL データベースを AWS DMS のソースとして使用する場合の前提条件

PostgreSQL データベースを AWS DMS のソースにする場合、以下の操作を実行する必要があります。

  • バージョン 9.4.x 以降の PostgreSQL データベースを使用します。

  • PostgreSQL ソースデータベースに指定されたユーザーアカウントにスーパーユーザーアクセス許可を付与します。

  • AWS DMS レプリケーションサーバーの IP アドレスを pg_hba.conf 設定ファイルに追加します。

  • postgresql.conf 設定ファイルで次のパラメーターと値を設定します。

    • 設定 wal_level = logical

    • max_replication_slots を 1 より大きい値に設定します。

      max_replication_slots 値は、実行するタスクの数に従って設定してください。たとえば、5 つのタスクを実行するには、少なくとも 5 つのスロットを設定する必要があります。スロットは、タスクが開始するとすぐに自動的に開き、タスクが実行されなくなった場合でも開いたままです。開いているスロットは手動で削除する必要があります。

    • max_wal_senders を 1 より大きい値に設定します。

      max_wal_senders パラメーターは、実行可能な同時タスクの数を設定します。

    • 設定 wal_sender_timeout =0

      wal_sender_timeout パラメーターは、指定されたミリ秒数が過ぎても非アクティブなレプリケーション接続を終了します。デフォルトは 60 秒ですが、このパラメーターは 0 に設定することをお勧めします (タイムアウトメカニズムが無効になります)。

  • PostgreSQL バージョン 9.6 以降で idle_in_transaction_session_timeout パラメータを使用すると、アイドル状態のトランザクションでタイムアウトやエラーが生じる場合があります。一部の AWS DMS トランザクションでは、AWS DMS エンジンで再度そのパラメータが使用されるまでの間、しばらくアイドル状態になることがあります。AWS DMS を使用する際、アイドル状態のトランザクションを終了しないでください。

PostgreSQL データベースを AWS DMS のソースとして使用する場合のセキュリティ要件

PostgreSQL をソースとして使用する場合の唯一のセキュリティ要件として、指定されるユーザーアカウントは PostgreSQL データベースの登録済みユーザーでなければなりません。

PostgreSQL データベースを AWS DMS のソースとして使用する場合の制限

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

  • キャプチャされたテーブルにはプライマリキーが必要です。テーブルにプライマリキーがない場合、AWS DMS はそのテーブルの DELETE および UPDATE レコードオペレーションを無視します。

  • タイムゾーンの種類の列のタイムスタンプはサポートされていません。

  • AWS DMS は、プライマリキーセグメントの更新の試みを無視します。この場合、ターゲットは、その更新によってどの行も更新されないと識別します。ただし、PostgreSQL でのプライマリキーの更新結果は予測できないため、どのレコードも例外テーブルには書き込まれません。

  • AWS DMS では、[Start Process Changes from Timestamp] 実行オプションがサポートされていません。

  • AWS DMS では、Amazon RDS for PostgreSQL での全ロードと変更処理がサポートされています。PostgreSQL DB インスタンスを準備する方法と、CDC を使用するようにそのインスタンスを設定する方法については、「ソースとしての Amazon RDS PostgreSQL DB インスタンスの設定」を参照してください。

  • 大文字と小文字の組み合わせが異なる同じ名前 (table1、TABLE1、Table1) を持つ複数のテーブルをレプリケートすると、予測できない動作が生じるため、AWS DMS ではサポートされていません。

  • テーブルが内部関数またはプロシージャ本文ブロックに保持されているか、ネストしている他の構造に保持されている限り、AWS DMS ではテーブルに対する CREATE、ALTER、DROP DDL ステートメントの変更処理がサポートされています。

    たとえば、以下の変更はキャプチャされません。

    CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$;
  • AWS DMS では、TRUNCATE オペレーションの変更処理はサポートされていません。

  • OID LOB データ型は、ターゲットに移行されません。

  • ソースがオンプレミスの PostgreSQL データベース、または Amazon EC2 インスタンスの PostgreSQL データベースの場合は、test_decoding 出力プラグイン (Postgres contrib パッケージに含む) がソースエンドポイントにインストールされていることを確認します。test-decoding プラグインの詳細については、「PostgreSQL のドキュメント」を参照してください。

  • AWS DMS では、列のデフォルト値を設定するための変更処理はサポートされていません (ALTER TABLE ステートメントでの ALTER COLUMN SET DEFAULT 句の使用)。

  • AWS DMS では、列の null 機能を設定するための変更処理はサポートされていません (ALTER TABLE ステートメントでの ALTER COLUMN [SET|DROP] NOT NULL 句の使用)。

  • AWS DMS では、パーティション分割されたテーブルのレプリケーションはサポートされていません。パーティション分割されたテーブルが検出された場合、以下の状況が発生します。

    • エンドポイントは、親テーブルと子テーブルのリストを報告します。

    • AWS DMS は、ターゲットのテーブルを、選択したテーブルと同じプロパティを持つ通常のテーブルとして作成します。

    • ソースデータベースの親テーブルに子テーブルと同じプライマリキー値がある場合、「重複するキー」エラーが生成されます。

注記

パーティション分割されたテーブルを PostgreSQL ソースから PostgreSQL ターゲットにレプリケートする場合、まずターゲットで親テーブルと子テーブルを手動で作成する必要があります。次に、それらのテーブルにレプリケートする別個のタスクを定義します。その場合、タスク設定を [Truncate before loading] に設定します。

ソースとしての Amazon RDS PostgreSQL DB インスタンスの設定

Amazon RDS for PostgreSQL DB インスタンスまたはリードレプリカを AWS DMS のソースとして使用できます。DB インスタンスは全ロードと CDC (継続的なレプリケーション) の両方で使用できます。リードレプリカは全ロードタスクにのみ使用でき、CDC に使用することはできません。

PostgreSQL DB インスタンス用の AWS マスターユーザーアカウントを AWS DMS の PostgreSQL ソースエンドポイント用のユーザーアカウントとして使用します。マスターユーザーアカウントには、変更データキャプチャ (CDC) を設定するために必要なロールがあります。マスターユーザーアカウント以外のアカウントを使用する場合、アカウントには rds_superuser ロールと rds_replication ロールが必要です。rds_replication ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権限を付与します。

DB インスタンスのマスターユーザーアカウントを使用しない場合は、使用するアカウントのマスターユーザーアカウントから複数のオブジェクトを作成する必要があります。必要なオブジェクトの作成については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行」を参照してください。

RDS for PostgreSQL DB インスタンス での CDC の使用

PostgreSQL のネイティブ論理レプリケーション機能を使用して、Amazon RDS PostgreSQL DB インスタンスのデータベースの移行中に CDC を有効にすることができます。このアプローチにより、ダウンタイムが短くなり、確実にターゲットデータベースがソース PostgreSQL データベースと同期されるようになります。Amazon RDS は、PostgreSQL DB インスタンスバージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。

注記

Amazon RDS for PostgreSQL のリードレプリカを CDC (継続的なレプリケーション) に使用することはできません。

RDS PostgreSQL DB インスタンスに対して論理レプリケーションを有効にするには、以下の手順を実行します。

  • 一般的に、PostgreSQL DB インスタンス用の AWS マスターユーザーアカウントを PostgreSQL ソースエンドポイント用のユーザーアカウントとして使用します。マスターユーザーアカウントには、CDC を設定するために必要なロールがあります。マスターユーザーアカウント以外のアカウントを使用する場合は、使用するアカウントのマスターユーザーアカウントから複数のオブジェクトを作成する必要があります。詳細については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行」を参照してください。

  • DB パラメータグループの rds.logical_replication パラメーターを 1 に設定します。これは静的パラメーターであり、有効にするには DB インスタンスの再起動が必要です。このパラメータを適用する一環として、AWS DMS は wal_levelmax_wal_sendersmax_replication_slotsmax_connections の各パラメータを設定します。これらのパラメータの変更により、生成される WAL が増えることがあるため、論理スロットを使用する場合にのみ、rds.logical_replication パラメータを設定してください。

  • ベストプラクティスとして、wal_sender_timeout パラメータを 0 に設定します。このパラメーターを 0 に設定すると、PostgreSQL が指定したタイムアウトを超えて非アクティブなレプリケーション接続が終了することを防ぎます。AWS DMS がデータを移行している間、レプリケーション接続は指定するタイムアウトより長く実行できる必要があります。

マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行

Amazon RDS PostgreSQL DB インスタンス用のマスターユーザーアカウントをソースとして使用しない場合は、データ定義言語 (DDL) イベントをキャプチャするために複数のオブジェクトを作成する必要があります。マスターアカウント以外のアカウントでこれらのオブジェクトを作成し、マスターユーザーアカウントでトリガーを作成します。

注記

ソースエンドポイントで captureDDL パラメータを N に設定すると、ソースデータベース上で次のテーブルおよびトリガーを作成する必要はありません。

これらのオブジェクトを作成するには、以下の手順を実行します。マスターアカウント以外のユーザーアカウントをこの手順では NoPriv アカウントと呼んでいます。

オブジェクトを作成するには

  1. オブジェクトが作成されるスキーマを選択します。デフォルトのスキーマは public です。スキーマが存在し、NoPriv アカウントからアクセス可能であることを確認します。

  2. NoPriv アカウントを使用して PostgreSQL DB インスタンスにログインします。

  3. 以下のコマンドを実行して awsdms_ddl_audit テーブルを作成します。コード内の <objects_schema> は、使用するスキーマの名前に置き換えてください。

    create table <objects_schema>.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event )
  4. 以下のコマンドを実行して awsdms_intercept_ddl 関数を作成します。コード内の <objects_schema> は、使用するスキーマの名前に置き換えてください。

    CREATE OR REPLACE FUNCTION <objects_schema>.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE') then SELECT current_query() into _qry; insert into <objects_schema>.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from <objects_schema>.awsdms_ddl_audit; end if; END; $$;
  5. NoPriv アカウントからログアウトし、rds_superuser ロールが割り当てられたアカウントを使用してログインします。

  6. 以下のコマンドを実行してイベントトリガー awsdms_intercept_ddl を作成します。

    CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE <objects_schema>.awsdms_intercept_ddl();

前の手順を完了したら、NoPriv アカウントを使用して AWS DMS ソースエンドポイントを作成できます。

PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除

DDL イベントをキャプチャするため、移行タスクの開始時に AWS DMS によりさまざまなアーティファクトが PostgreSQL データベースに作成されます。タスクが完了したら、これらのアーティファクトを削除できます。アーティファクトを削除するには、以下のステートメントを発行します (示されている順序で)。{AmazonRDSMigration} は、アーティファクトが作成されたスキーマです。

drop event trigger awsdms_intercept_ddl;

イベントトリガーは特定のスキーマに属していません。

drop function {AmazonRDSMigration}.awsdms_intercept_ddl() drop table {AmazonRDSMigration}.awsdms_ddl_audit drop schema {AmazonRDSMigration}

注記

スキーマを削除する場合でも、細心の注意を払ってください。運用中のスキーマ (特に公開スキーマ) は絶対に削除しないでください。

PostgreSQL データベースを AWS DMS のソースとして使用する場合の追加設定

PostgreSQL データベースからデータを移行するときは、2 つの方法で詳細設定を追加できます。

  • 追加接続属性に値を追加して、DDL イベントをキャプチャし、運用中の DDL データベースアーティファクトが作成されたスキーマを指定します。詳細については、「AWS DMS のソースとして PostgreSQL を使用する場合の追加の接続属性」を参照してください。

  • 接続文字列パラメーターを上書きできます。以下のいずれかを行う必要がある場合は、このオプションを選択します。

    • 内部 AWS DMS パラメータを指定します。このようなパラメーターが必要になることはめったにないため、ユーザーインターフェイスには表示されません。

    • 特定のデータベースクライアントのパススルー (passthru) 値を指定します。AWS DMS では、データベースクライアントに渡される接続文字列にパススルーパラメータが含まれています。

AWS DMS のソースとして PostgreSQL バージョン 10.x 以降を使用する

PostgreSQL バージョン 10.x 以降では、以前の PostgreSQL バージョンの関数名とフォルダ名に多くの変更が加えられています。そのため、一部の移行アクションには下位互換性がありません。

ほとんどの名前変更は表面上のものであるため、AWS DMS では AWS DMS が PostgreSQL バージョン 10.x 以降を使用できるようにするラッパー関数を作成しました。ラッパー関数は、pg_catalog の関数よりも優先されます。さらに、ユーザー定義関数などの他のシステムカタログ関数が上書きされないように、既存のスキーマのスキーマ可視性は変更されないようにしました。

移行タスクを実行する前にこれらのラッパー関数を使用するには、ソース PostgreSQL データベースで次の SQL コードを実行します。ターゲットデータベースに使用しているのと同じ AWS DMS ユーザーアカウントを使用します。

BEGIN; CREATE SCHEMA IF NOT EXISTS fnRenames; CREATE OR REPLACE FUNCTION fnRenames.pg_switch_xlog() RETURNS pg_lsn AS $$ SELECT pg_switch_wal(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_replay_pause() RETURNS VOID AS $$ SELECT pg_wal_replay_pause(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_replay_resume() RETURNS VOID AS $$ SELECT pg_wal_replay_resume(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_is_xlog_replay_paused() RETURNS boolean AS $$ SELECT pg_is_wal_replay_paused(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_xlogfile_name(lsn pg_lsn) RETURNS TEXT AS $$ SELECT pg_walfile_name(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_last_xlog_replay_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_replay_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_last_xlog_receive_location() RETURNS pg_lsn AS $$ SELECT pg_last_wal_receive_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_flush_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_flush_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_current_xlog_insert_location() RETURNS pg_lsn AS $$ SELECT pg_current_wal_insert_lsn(); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_xlog_location_diff(lsn1 pg_lsn, lsn2 pg_lsn) RETURNS NUMERIC AS $$ SELECT pg_wal_lsn_diff(lsn1, lsn2); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_xlogfile_name_offset(lsn pg_lsn, OUT TEXT, OUT INTEGER) AS $$ SELECT pg_walfile_name_offset(lsn); $$ LANGUAGE SQL; CREATE OR REPLACE FUNCTION fnRenames.pg_create_logical_replication_slot(slot_name name, plugin name, temporary BOOLEAN DEFAULT FALSE, OUT slot_name name, OUT xlog_position pg_lsn) RETURNS RECORD AS $$ SELECT slot_name::NAME, lsn::pg_lsn FROM pg_catalog.pg_create_logical_replication_slot(slot_name, plugin, temporary); $$ LANGUAGE SQL; ALTER <user name> USER SET search_path = fnRenames, pg_catalog, "$user", public; -- DROP SCHEMA fnRenames CASCADE; -- ALTER USER PG_User SET search_path TO DEFAULT; COMMIT;

AWS DMS のソースとして PostgreSQL を使用する場合の追加の接続属性

追加の接続属性を使用して PostgreSQL ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。複数の追加の接続属性の設定は、セミコロンで区切る必要があります。

次の表に、PostgreSQL を AWS DMS のソースとして使用するときに使用できる追加の接続属性を示します。

名前 説明

captureDDL

DDL イベントをキャプチャするために、AWS DMS によって、タスクの開始時にさまざまなアーティファクトが PostgreSQL データベースに作成されます。「PostgreSQL ソースデータベースからの AWS DMS アーティファクトの削除」に記載されているように、これらのアーティファクトは後で削除できます。

この値が N に設定されている場合は、ソースデータベースにテーブルまたはトリガーを作成する必要はありません。詳細については、「マスターユーザーアカウントの使用なしでの Amazon RDS for PostgreSQL データベースの移行」を参照してください。

ストリーミングされた DDL イベントがキャプチャされます。

デフォルト値: Y

有効な値: Y/N

例: captureDDLs=Y

ddlArtifactsSchema

運用中の DDL データベースアーティファクトが作成されるスキーマ。

デフォルト値: public

有効な値: 文字列

例: ddlArtifactsSchema=xyzddlschema

failTasksOnLobTruncation

true に設定されている場合、LOB 列の実際のサイズが、指定された LobMaxSize を上回ると、この値によりタスクは失敗します。

タスクが制限付き LOB モードに設定され、このオプションが true に設定されている場合、LOB データを切り捨てるのではなくタスクが失敗します。

デフォルト値: false

有効な値: ブール値

例: failTasksOnLobTruncation=true

executeTimeout

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

例: executeTimeout=100

PostgreSQL のソースデータ型

次の表に、AWS DMS を使用する場合にサポートされる PostgreSQL のソースデータ型と、AWS DMS のデータ型とのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

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

PostgreSQL のデータ型

AWS DMS のデータ型

INTEGER

INT4

SMALLINT

INT2

BIGINT

INT8

NUMERIC (p,s)

精度が 0 ~ 38 の場合、NUMERIC を使用します。

精度が 39 以上の場合、STRING を使用します。

DECIMAL(P,S)

精度が 0 ~ 38 の場合、NUMERIC を使用します。

精度が 39 以上の場合、STRING を使用します。

REAL

REAL4

DOUBLE

REAL8

SMALLSERIAL

INT2

SERIAL

INT4

BIGSERIAL

INT8

MONEY

NUMERIC(38,4)

注: MONEY データ型は、SQL Server の FLOAT にマッピングされます。

CHAR

WSTRING (1)

CHAR(N)

WSTRING (n)

VARCHAR(N)

WSTRING (n)

TEXT

NCLOB

BYTEA

BLOB

TIMESTAMP

TIMESTAMP

TIMESTAMP (z)

TIMESTAMP

TIMESTAMP (タイムゾーン付き)

サポート外

DATE

DATE

TIME

TIME

TIME (z)

TIME

INTERVAL

STRING (128)—1 YEAR、2 MONTHS、3 DAYS、4 HOURS、5 MINUTES、6 SECONDS

BOOLEAN

CHAR (5) false または true

ENUM

STRING (64)

CIDR

STRING (50)

INET

STRING (50)

MACADDR

STRING (18)

BIT (n)

STRING (n)

BIT VARYING (n)

STRING (n)

UUID

STRING

TSVECTOR

CLOB

TSQUERY

CLOB

XML

CLOB

POINT

STRING (255) "(x,y)"

LINE

STRING (255) "(x,y,z)"

LSEG

STRING (255) "((x1,y1),(x2,y2))"

BOX

STRING (255) "((x1,y1),(x2,y2))"

PATH

CLOB "((x1,y1),(xn,yn))"

POLYGON

CLOB "((x1,y1),(xn,yn))"

CIRCLE

STRING (255) "(x,y),r"

JSON

NCLOB

JSONB

NCLOB

ARRAY

NCLOB

COMPOSITE

NCLOB

HSTORE

NCLOB

INT4RANGE

STRING (255)

INT8RANGE

STRING (255)

NUMRANGE

STRING (255)

STRRANGE

STRING (255)