すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自主管理 PostgreSQL データベースから PolarDB for PostgreSQL へのデータ移行

最終更新日:Nov 21, 2025

このトピックでは、Data Transmission Service (DTS) を使用して、自主管理 PostgreSQL データベースから PolarDB for PostgreSQL クラスターにデータを移行する方法について説明します。

前提条件

  • 移行先の PolarDB for PostgreSQL データベースクラスターを作成済みであること。 詳細については、「PolarDB for PostgreSQL クラスターの作成」をご参照ください。

    説明

    ソースデータベースとターゲットデータベースでサポートされているバージョンについては、「データ移行シナリオの概要」をご参照ください。

  • 移行先の PolarDB for PostgreSQL クラスターのストレージ容量は、ソースの自主管理 PostgreSQL インスタンスで使用されているストレージ容量よりも大きい必要があります。

注意事項

説明
  • スキーマ移行中、DTS はソースデータベースからターゲットデータベースに外部キーを移行します。

  • 完全データ移行および増分データ移行中、DTS はセッションレベルで外部キーの制約チェックとカスケード操作を一時的に無効にします。 データ移行中にソースデータベースでカスケード更新および削除操作を実行すると、データ不整合が発生する可能性があります。

カテゴリ

説明

ソースデータベースの制限

  • ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。 そうでない場合、データ移行速度が影響を受けます。

  • 移行するテーブルには、プライマリキーまたは一意制約が必要であり、制約内のフィールドは一意である必要があります。 そうでない場合、ターゲットデータベースに重複データが表示される可能性があります。

    説明

    ターゲットテーブルが DTS によって作成されていない場合 (つまり、移行タイプスキーマ移行 を選択しなかった場合)、テーブルにソーステーブルと同じプライマリキーまたは空でない一意制約があることを確認する必要があります。 そうでない場合、ターゲットデータベースに重複データが表示される可能性があります。

    移行するデータベースの名前にハイフン (-) を含めることはできません。 例: dts-testdata。

  • テーブルレベルでオブジェクトを移行し、テーブル名や列名のマッピングなどで編集する必要がある場合、1 つのデータ移行タスクでサポートされるテーブルは最大 1,000 個です。 この制限を超えると、タスクの送信後にリクエストエラーが報告されます。 この場合、テーブルを複数の移行タスクに分割するか、データベース全体を移行するようにタスクを設定します。

  • 増分移行の場合、先行書き込みログ (WAL) ファイルに関する次の要件に注意してください。

    • wal_level パラメーターを logical に設定します。

    • 増分移行タスクの場合、DTS はソースデータベースが WAL ファイルを 24 時間以上保持することを要求します。 完全移行と増分移行の両方を含むタスクの場合、DTS はソースデータベースが WAL ファイルを少なくとも 7 日間保持することを要求します。 完全移行が完了したら、保持期間を 24 時間以上に変更できます。 保持期間が短すぎると、DTS が必要な WAL ファイルを取得できないため、タスクが失敗する可能性があります。 極端な場合、これによりデータの不整合やデータ損失が発生する可能性があります。 必要な期間より短いログ保持期間によって引き起こされる問題は、DTS サービスレベルアグリーメント (SLA) の対象外です。

  • ソースデータベースでの操作の制限:

    • 自主管理 PostgreSQL データベースでプライマリ/セカンダリのスイッチオーバーを実行すると、移行タスクは失敗します。

    • 完全データ移行中は、データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。 そうしないと、データ移行タスクは失敗します。

    • ソースデータベースの論理レプリケーションの制限により、移行中に移行対象の増分データが 1 件で 256 MB を超えると、DTS インスタンスが失敗し、回復できなくなる可能性があります。 DTS インスタンスを再設定する必要があります。

    • 完全データ移行のみを実行する場合は、ソースデータベースに新しいデータを書き込まないでください。 そうしないと、ソースデータベースとターゲットデータベースのデータに不整合が生じます。 リアルタイムのデータ整合性を維持するには、完全データ移行と増分データ移行の両方を選択します。

  • ソースデータベースに長時間実行されるトランザクションがあり、タスクに増分移行が含まれている場合、トランザクションがコミットされる前に生成された WAL ファイルが蓄積される可能性があります。 これにより、ソースデータベースのディスク領域が不足する可能性があります。

  • ソースインスタンスが Google Cloud Platform Cloud SQL for PostgreSQL の場合、ソースデータベースの データベースアカウント に cloudsqlsuperuser 権限を持つアカウントを指定する必要があります。 移行オブジェクトを選択するときは、このアカウントが管理権限を持つオブジェクトを選択するか、移行するオブジェクトに対する Owner 権限をこのアカウントに付与する必要があります (たとえば、GRANT <owner_of_objects_to_migrate> TO <source_db_account_for_task> コマンドを実行して、このアカウントがオブジェクトの所有者として関連操作を実行できるようにします)。

    説明

    `cloudsqlsuperuser` 権限を持つアカウントは、`cloudsqlsuperuser` 権限を持つ別のアカウントが所有するデータを管理できません。

  • DTS インスタンスの実行中にソースデータベースでメジャーエンジンバージョンのアップグレードを実行すると、インスタンスは失敗し、回復できなくなります。 DTS インスタンスを再設定する必要があります。

その他の制限

  • DTS インスタンスが増分データ移行タスクを実行する場合、データを書き込む前に、ソースデータベースの移行対象テーブルで ALTER TABLE schema.table REPLICA IDENTITY FULL; コマンドを実行する必要があります。 これは、次の 2 つのシナリオに適用され、データの整合性を保証します。 このコマンドの実行中は、テーブルロック操作を実行しないことをお勧めします。 そうしないと、テーブルがロックされる可能性があります。 事前チェックで関連するチェックをスキップすると、DTS はインスタンスの初期化中にこのコマンドを自動的に実行します。

    • インスタンスが初めて実行されるとき。

    • 移行オブジェクトの粒度がスキーマであり、移行対象のスキーマに新しいテーブルが作成されるか、RENAME コマンドを使用して移行対象のテーブルが再構築されるとき。

    説明
    • コマンドで、schematable を移行するデータのスキーマ名とテーブル名に置き換えます。

    • この操作はオフピーク時に実行することをお勧めします。

  • 移行するテーブルに SERIAL 型のフィールドが含まれている場合、ソースデータベースはそのフィールドのシーケンスを自動的に作成します。 したがって、ソースオブジェクト を設定するときに、移行タイプスキーマ移行 を選択した場合は、シーケンスも選択するか、完全なスキーマ移行を実行することをお勧めします。 そうしないと、移行インスタンスが失敗する可能性があります。

  • 完全移行または増分移行タスクの場合、ソースデータベースの移行対象テーブルに外部キー、トリガー、またはイベントトリガーが含まれている場合、ターゲットデータベースアカウントが特権アカウントであれば、DTS はセッションレベルで `session_replication_role` パラメーターの値を一時的に 'replica' に設定します。 ターゲットデータベースアカウントにこの権限がない場合は、ターゲットデータベースで `session_replication_role` パラメーターの値を手動で 'replica' に設定する必要があります。 この期間中 (完全移行または増分移行中に `session_replication_role` パラメーターの値が 'replica' である間)、ソースデータベースでカスケード更新または削除操作が発生すると、データの不整合が発生する可能性があります。 DTS 移行タスクがリリースされた後、`session_replication_role` パラメーターの値を 'origin' に戻すことができます。

  • DTS は、増分データの DDL 文、増分テーブルのスキーマ、およびハートビート情報を取得するために、ソースデータベースに次の一時テーブルを作成します。 データ移行中は、ソースデータベースの一時テーブルを削除しないでください。 そうしないと、DTS タスクが異常になる可能性があります。 DTS インスタンスがリリースされると、一時テーブルは自動的に削除されます。

    public.dts_pg_classpublic.dts_pg_attributepublic.dts_pg_typepublic.dts_pg_enumpublic.dts_postgres_heartbeatpublic.dts_ddl_commandpublic.dts_args_session、および public.aliyun_dts_instance

  • 増分データ移行の表示遅延の精度を確保するために、DTS はソースデータベースに dts_postgres_heartbeat という名前のハートビートテーブルを作成します。

  • 増分データ移行中、DTS はデータをレプリケートするために、ソースデータベースに dts_sync_ というプレフィックスが付いたレプリケーションスロットを作成します。 このレプリケーションスロットを使用して、DTS は過去 15 分間のソースデータベースから増分ログを取得できます。

    説明

    データ移行タスクがリリースされるか失敗した場合、DTS は自動的にレプリケーションスロットをクリアします。 RDS for PostgreSQL インスタンスでプライマリ/セカンダリのスイッチオーバーが発生した場合は、セカンダリデータベースにログインして手動でレプリケーションスロットをクリアする必要があります。

  • 1 つのデータ移行タスクでは、1 つのデータベースからのみデータを移行できます。 複数のデータベースからデータを移行するには、データベースごとにデータ移行タスクを作成する必要があります。

  • DTS は、TimescaleDB 拡張テーブルまたはスキーマ間継承を持つテーブルの移行をサポートしていません。

  • データを移行する前に、ソースデータベースとターゲットデータベースのパフォーマンスを評価してください。 オフピーク時にデータを移行してください。 完全データ移行中、DTS はソースデータベースとターゲットデータベースの両方で読み取りおよび書き込みリソースを消費します。 これにより、データベースサーバーの負荷が増加する可能性があります。

  • 完全データ移行には同時 INSERT 操作が含まれるため、ターゲットデータベースのテーブルに断片化が発生します。 完全移行が完了すると、ターゲットデータベースのテーブルで使用されるストレージ領域は、ソースデータベースよりも大きくなります。

  • FLOAT または DOUBLE 列の移行精度がビジネス要件を満たしていることを確認してください。 DTS は、ROUND(COLUMN,PRECISION) 関数を使用してこれらの列から値を読み取ります。 精度を指定しない場合、DTS は FLOAT には 38 桁、DOUBLE には 308 桁の精度を使用します。

  • DTS は、過去 7 日以内に失敗したデータ移行タスクの再開を試みます。 ビジネスをターゲットインスタンスに切り替える前に、タスクを停止またはリリースしてください。 また、revoke コマンドを使用して、DTS がターゲットインスタンスへのアクセスに使用するアカウントから書き込み権限を取り消すこともできます。 これにより、タスクが自動的に再開された場合に、ソースデータがターゲットデータを上書きするのを防ぎます。

  • DTS はデータコンテンツを検証しますが、シーケンスなどのメタデータの検証はサポートしていません。 メタデータは自分で検証する必要があります。

  • ビジネスをターゲットインスタンスに切り替えた後、新しいシーケンスはソースシーケンスの最大値からインクリメントされません。 ビジネスの切り替え前に、ターゲットデータベースのシーケンス値を更新する必要があります。 詳細については、「ターゲットデータベースのシーケンス値を更新する」をご参照ください。

  • インスタンスが失敗した場合、DTS ヘルプデスクは 8 時間以内にインスタンスの回復を試みます。 回復プロセス中に、インスタンスの再起動やパラメーターの調整などの操作が実行される場合があります。

    説明

    パラメーターが調整されると、DTS インスタンスのパラメーターのみが変更されます。 データベースのパラメーターは変更されません。 変更される可能性のあるパラメーターには、インスタンスパラメーターの変更で説明されているものが含まれますが、これらに限定されません。

  • パーティションテーブルを移行する場合、親テーブルとその子パーティションの両方を同期オブジェクトとして含める必要があります。 そうしないと、パーティションテーブルでデータの不整合が発生する可能性があります。

    説明

    PostgreSQL パーティションテーブルの親テーブルはデータを直接格納しません。 すべてのデータは子パーティションに格納されます。 同期タスクには、親テーブルとそのすべての子パーティションを含める必要があります。 そうしないと、子パーティションのデータが同期されず、ソースとターゲットの間でデータの不整合が発生する可能性があります。

課金

移行タイプ

インスタンス設定料金

インターネットトラフィック料金

スキーマ移行と完全データ移行

無料です。

ターゲットデータベースの アクセス方法 パラメーターが パブリック IP アドレス に設定されている場合、インターネットトラフィックに対して課金されます。 詳細については、「課金の概要」をご参照ください。

増分データ移行

課金されます。 詳細については、「課金の概要」をご参照ください。

移行タイプ

  • スキーマ移行

    DTS は、選択したオブジェクトのスキーマをソースデータベースからターゲットデータベースに移行します。

  • 完全データ移行

    DTS は、必要なオブジェクトの既存データをソースデータベースからターゲットデータベースに移行します。

  • 増分データ移行

    完全データ移行が完了すると、DTS は増分データをソースデータベースからターゲットデータベースに移行します。 増分データ移行により、データ移行中に自主管理アプリケーションのサービスを中断することなく、データをスムーズに移行できます。

移行対象のサポートされるオブジェクト

  • SCHEMA と TABLE。

    説明

    PRIMARY KEY、UNIQUE KEY、FOREIGN KEY、DATATYPE (組み込みデータ型)、および DEFAULT CONSTRAINT を含みます。

  • VIEW、PROCEDURE (PostgreSQL V11 以降)、FUNCTION、RULE、SEQUENCE、EXTENSION、TRIGGER、AGGREGATE、INDEX、OPERATOR、および DOMAIN。

増分移行をサポートする SQL 操作

操作タイプ

SQL 文

DML

INSERT、UPDATE、および DELETE

DDL

  • DDL 操作は、2020 年 10 月 1 日以降に作成されたデータ移行タスクでのみ移行できます。

    重要
    • 2023 年 5 月 12 日より前に作成されたデータ移行タスクを使用して DDL 操作を移行するには、データ移行タスクを設定する前に、ソースデータベースにトリガーと関数を作成して DDL 情報をキャプチャする必要があります。 詳細については、「トリガーと関数を使用して PostgreSQL データベースの増分 DDL 移行を実装する」をご参照ください。

    • 増分データ移行は BIT 型のデータをサポートしていません。

  • ソースデータベースのデータベースアカウントは、特権アカウントである必要があります。 DTS は、データ移行タスクで次の DDL 文をサポートしています。

    • CREATE TABLE および DROP TABLE

    • ALTER TABLE (RENAME TABLE、ADD COLUMN、ADD COLUMN DEFAULT、ALTER COLUMN TYPE、DROP COLUMN、ADD CONSTRAINT、ADD CONSTRAINT CHECK、ALTER COLUMN DROP DEFAULT を含む)

    • TRUNCATE TABLE (ソース PolarDB for PostgreSQL クラスターのデータベースエンジンバージョンは PostgreSQL V11 以降である必要があります。)

    • CREATE INDEX ON TABLE

    重要
    • CASCADE や RESTRICT など、DDL 文の追加情報は移行できません。

    • SET session_replication_role = replica 文が実行されたセッションからの DDL 文は移行できません。

    • 関数を呼び出して実行される DDL 文は移行できません。

    • ソースデータベースから一度に送信される SQL 文に DML 文と DDL 文の両方が含まれている場合、DTS は DDL 文を移行しません。

    • ソースデータベースから一度に送信される SQL 文に移行対象外の DDL 文が含まれている場合、DTS は DDL 文を移行しません。

    • CREATE SEQUENCE 文はサポートされていません。

データベースアカウントに必要な権限

データベース

スキーマ移行

完全移行

増分移行

自主管理 PostgreSQL データベース

pg_catalog に対する USAGE 権限

移行対象オブジェクトに対する SELECT 文の権限

スーパーユーザー権限。

PolarDB for PostgreSQL

ターゲットスキーマ所有者の権限。

説明

データベース作成時に指定した [データベース所有者] を使用できます。

データベースアカウントを作成し、アカウントに権限を付与するには:

準備

説明
  • ソースデータベースが Amazon RDS for PostgreSQL インスタンスの場合の準備方法の詳細については、「Amazon RDS for PostgreSQL インスタンスから ApsaraDB RDS for PostgreSQL インスタンスへの増分データの移行」トピックの「開始する前に」セクションをご参照ください。 ソースデータベースが Amazon Aurora PostgreSQL インスタンスの場合の準備方法の詳細については、「Amazon Aurora PostgreSQL インスタンスから ApsaraDB RDS for PostgreSQL インスタンスへの完全データの移行」トピックの「準備 1: Amazon Aurora PostgreSQL インスタンスのインバウンドルールを編集する」セクションをご参照ください。

  • この例では、Linux サーバーで実行される自主管理 PostgreSQL データベースを使用します。

自主管理 PostgreSQL データベースのバージョンが 10.1 以降の場合は、データ移行タスクを設定する前に次の操作を実行する必要があります。

  1. 自主管理 PostgreSQL データベースが存在するサーバーにログインします。

  2. postgresql.conf 設定ファイルを変更します。 wal_level パラメーターを logical に設定し、max_wal_senders および max_replication_slots パラメーターの値が、自主管理 PostgreSQL データベースで使用されているレプリケーションスロットの数と、ソースデータベースがその自主管理 PostgreSQL データベースである DTS インスタンスの数の合計よりも大きいことを確認します。

    # - 設定 -
    
    wal_level = logical			# minimal、replica、または logical
    					# (変更には再起動が必要)
    
    ......
    
    # - 送信サーバー -
    
    # これらをマスターおよびレプリケーションデータを送信するスタンバイに設定します。
    
    max_wal_senders = 10		# walsender プロセスの最大数
    				# (変更には再起動が必要)
    #wal_keep_segments = 0		# ログファイルセグメント単位、各 16MB。0 は無効化
    #wal_sender_timeout = 60s	# ミリ秒単位。0 は無効化
    
    max_replication_slots = 10	# レプリケーションスロットの最大数
    				# (変更には再起動が必要)
    説明

    設定ファイルを変更した後、自主管理 PostgreSQL データベースを再起動してパラメーター設定を有効にします。

  3. DTS サーバーの CIDR ブロックを、自主管理 PostgreSQL データベースの pg_hba.conf 設定ファイルに追加します。 ターゲットデータベースと同じリージョンにある DTS サーバーの CIDR ブロックのみを追加します。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。

    説明
    • 設定ファイルを変更した後、SELECT pg_reload_conf(); 文を実行するか、自主管理 PostgreSQL データベースを再起動してパラメーター設定を有効にします。

    • pg_hba.conf 設定ファイルの詳細については、「pg_hba.conf ファイル」をご参照ください。 pg_hba.conf ファイルの IP アドレスを 0.0.0.0/0 に設定している場合は、このステップをスキップしてください。 次の図に設定を示します。

    IP

  4. 移行対象オブジェクトのデータベースとスキーマの情報に基づいて、移行先クラスターに対応するデータベースとスキーマを作成します。

自主管理 PostgreSQL データベースのバージョンが 9.4.8 から 10.0 の場合は、データ移行タスクを設定する前に次の操作を実行する必要があります。

  1. 公式ウェブサイトから PostgreSQL のソースコードをダウンロードし、ソースコードをコンパイルして PostgreSQL をインストールします。

    1. 自主管理 PostgreSQL データベースのバージョンに基づいて、PostgreSQL 公式ウェブサイトからソースコードをダウンロードします。

    2. sudo ./configuresudo makesudo make install コマンドを順番に実行して、ソースコードを設定およびコンパイルし、PostgreSQL をインストールします。

      重要
      • PostgreSQL をコンパイルしてインストールする場合、PostgreSQL の OS バージョンは GNU コンパイラコレクション (GCC) のバージョンと一致している必要があります。

      • sudo ./configure コマンドの実行中にエラーが発生した場合は、エラーメッセージに基づいてコマンドを変更できます。 たとえば、エラーメッセージが readline library not found. Use --without-readline to disable readline support. の場合、コマンドを sudo ./configure --without-readline に変更できます。

      • 別の方法で PostgreSQL をインストールする場合は、同じオペレーティングシステムバージョンと GCC バージョンを持つテスト環境で ali_decoding プラグインをコンパイルする必要があります。

  2. DTS が提供する ali_decoding プラグインをダウンロードし、プラグインをコンパイルしてインストールします。

    1. ali_decoding をダウンロードします。

    2. ali_decoding ディレクトリを、コンパイルおよびインストールされた PostgreSQL の contrib ディレクトリにコピーします。

      contrib目录

    3. ali_decoding ディレクトリに移動し、Makefile ファイルの内容を次のスクリプトに置き換えます。

      # contrib/ali_decoding/Makefile
      MODULE_big = ali_decoding
      MODULES = ali_decoding
      OBJS    = ali_decoding.o
      
      DATA = ali_decoding--0.0.1.sql ali_decoding--unpackaged--0.0.1.sql
      
      EXTENSION = ali_decoding
      
      NAME = ali_decoding
      
      #subdir = contrib/ali_decoding
      #top_builddir = ../..
      #include $(top_builddir)/src/Makefile.global
      #include $(top_srcdir)/contrib/contrib-global.mk
      
      #PG_CONFIG = /usr/pgsql-9.6/bin/pg_config
      #pgsql_lib_dir := $(shell $(PG_CONFIG) --libdir)
      #PGXS := $(shell $(PG_CONFIG) --pgxs)
      #include $(PGXS)
      
      # 次のコマンドを実行して ali_decoding プラグインをインストールします:
      ifdef USE_PGXS
      PG_CONFIG = pg_config
      PGXS := $(shell $(PG_CONFIG) --pgxs)
      include $(PGXS)
      else
      subdir = contrib/ali_decoding
      top_builddir = ../..
      include $(top_builddir)/src/Makefile.global
      include $(top_srcdir)/contrib/contrib-global.mk
      endif
    4. ali_decoding ディレクトリに移動し、sudo makesudo make install コマンドを順番に実行して ali_decoding プラグインをコンパイルし、ali_decoding プラグインのインストールに必要なファイルを取得します。

    5. ファイルを指定されたディレクトリにコピーします。

      指定位置

  3. 移行対象オブジェクトのデータベースとスキーマの情報に基づいて、移行先クラスターに対応するデータベースとスキーマを作成します。

手順

  1. 次のいずれかの方法でデータ移行ページに移動し、データ移行インスタンスが存在するリージョンを選択します。

    DTS コンソール

    1. DTS コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、データの移行 をクリックします。

    3. ページの左上隅で、データ移行インスタンスが存在するリージョンを選択します。

    DMS コンソール

    説明

    実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。 詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。

    1. DMS コンソールにログインします。

    2. 上部のナビゲーションバーで、ポインターを [データ + AI] > [DTS (DTS)] > [データ移行] に移動します。

    3. [データ移行タスク] の右側にあるドロップダウンリストから、データ同期インスタンスが存在するリージョンを選択します。

  2. タスクの作成 をクリックして、タスク設定ページに移動します。

  3. ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。

    警告

    ソースインスタンスとターゲットインスタンスを選択した後、ページの上部にある [制限] を注意深くお読みになることをお勧めします。 これにより、データ移行タスクを正常に作成して実行できるようになります。

    カテゴリ

    設定

    注意

    N/A

    タスク名

    DTS タスクの名前。 DTS はタスク名を自動的に生成します。 タスクを簡単に識別できるような、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。

    移行元データベース

    既存の接続情報の選択

    • DTS に登録されているデータベースインスタンスを使用する場合は、ドロップダウンリストからインスタンスを選択します。 DTS は、インスタンスの次のデータベースパラメーターを自動的に入力します。 詳細については、「データベース接続の管理」をご参照ください。

      説明

      DMS コンソールでは、[DMS データベースインスタンスの選択] ドロップダウンリストからデータベースインスタンスを選択できます。

    • DTS へのインスタンスの登録に失敗した場合、または DTS に登録されているインスタンスを使用する必要がない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    ソースデータベースのタイプ。 PostgreSQL を選択します。

    アクセス方法

    ソースデータベースのデプロイ場所に基づいてオプションを選択します。 この例では、ECS 上の自己管理データベース の設定プロセスについて説明します。

    説明

    自主管理データベースにアクセスするために別の方法を選択した場合は、必要な準備を行う必要があります。 詳細については、「準備」をご参照ください。

    インスタンスのリージョン

    自主管理 PostgreSQL データベースが存在するリージョン。

    ECS インスタンス ID

    自主管理 PostgreSQL データベースの ECS インスタンスの ID を入力します。

    ポート番号

    自主管理 PostgreSQL データベースのサービスポートを入力します。 デフォルトは [5432] です。

    データベース名

    移行するオブジェクトを含むデータベースの名前を入力します。

    データベースアカウント

    自主管理 PostgreSQL データベースのデータベースアカウントを入力します。 権限要件については、「データベースアカウントに必要な権限」をご参照ください。

    データベースのパスワード

    データベースインスタンスへのアクセスに使用するパスワード。

    暗号化

    ソースデータベースへの接続を暗号化するかどうかを指定します。 このパラメーターは、ビジネス要件に基づいて設定できます。 この例では、非暗号化 が選択されています。

    ソースデータベースへの SSL 暗号化接続を確立する場合は、次の手順を実行します: SSL 暗号化 を選択し、必要に応じて CA 証明書クライアント証明書、および クライアント証明書の秘密鍵 をアップロードしてから、クライアント証明書の秘密鍵のパスワード を指定します。

    説明
    • 自主管理 PostgreSQL データベースの暗号化を SSL 暗号化 に設定した場合は、CA 証明書 をアップロードする必要があります。

    • クライアント証明書を使用する場合は、クライアント証明書クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定する必要があります。

    • ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化を設定する方法については、「SSL 暗号化」をご参照ください。

    移行先データベース

    既存の接続情報の選択

    • DTS に登録されているデータベースインスタンスを使用する場合は、ドロップダウンリストからインスタンスを選択します。 DTS は、インスタンスの次のデータベースパラメーターを自動的に入力します。 詳細については、「データベース接続の管理」をご参照ください。

      説明

      DMS コンソールでは、[DMS データベースインスタンスの選択] ドロップダウンリストからデータベースインスタンスを選択できます。

    • DTS へのインスタンスの登録に失敗した場合、または DTS に登録されているインスタンスを使用する必要がない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    PolarDB for PostgreSQL を選択します。

    アクセス方法

    Alibaba Cloud インスタンス を選択します。

    インスタンスのリージョン

    移行先の PolarDB for PostgreSQL クラスターが存在するリージョン。

    インスタンス ID

    移行先の PolarDB for PostgreSQL クラスターの ID を選択します。

    データベース名

    移行オブジェクトを含む移行先の PolarDB for PostgreSQL クラスター内のデータベースの名前を入力します。

    データベースアカウント

    移行先の PolarDB for PostgreSQL クラスターのデータベースアカウントを入力します。 権限要件については、「データベースアカウントの権限要件」をご参照ください。

    データベースのパスワード

    データベースインスタンスへのアクセスに使用するパスワード。

  4. ページの下部にある 接続をテストして続行 をクリックします。

    説明
    • DTS サーバーからのアクセスを許可するために、DTS サーバーの CIDR ブロックがソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加できることを確認してください。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。

    • ソースまたはターゲットデータベースが自己管理データベースで、その アクセス方法Alibaba Cloud インスタンス に設定されていない場合は、DTS サーバーの CIDR ブロック ダイアログボックスで 接続テスト をクリックします。

  5. オブジェクト設定 ページで、移行するオブジェクトを設定します。

    1. オブジェクト設定 ページで、移行するオブジェクトを設定します。

      設定

      注意

      移行タイプ

      • 完全データ移行のみを実行するには、[スキーマ移行][完全データ移行] を選択します。

      • データ移行中のサービス継続性を確保するには、[スキーマ移行][完全データ移行]、および [増分データ移行] を選択します。

      説明
      • [スキーマ移行] を選択しない場合は、ターゲットデータベースにデータを受け取るためのデータベースとテーブルが作成されていること、および [選択したオブジェクト] でオブジェクト名マッピング機能が有効になっていることを確認してください。

      • [増分データ移行] を選択しない場合は、データ移行中にソースデータベースにデータを書き込まないことをお勧めします。 これにより、ソースデータベースとターゲットデータベース間のデータ整合性が確保されます。

      競合するテーブルの処理モード

      • エラーの事前チェックと報告: ターゲットデータベースにソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかをチェックします。 ソースデータベースとターゲットデータベースに同じテーブル名のテーブルが含まれていない場合、事前チェックは合格します。 そうでない場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。

        説明

        ソースデータベースとターゲットデータベースに同じ名前のテーブルが含まれており、ターゲットデータベースのテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、ターゲットデータベースに移行されるテーブルの名前を変更できます。 詳細については、「オブジェクト名のマッピング」をご参照ください。

      • エラーを無視して続行: ソースデータベースとターゲットデータベースの同じテーブル名の事前チェックをスキップします。

        警告

        エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスが次の潜在的なリスクにさらされる可能性があります。

        • ソースデータベースとターゲットデータベースのスキーマが同じで、データレコードのプライマリキーがターゲットデータベースの既存のデータレコードと同じ場合、次のシナリオが発生する可能性があります。

          • 完全データ移行中、DTS はデータレコードをターゲットデータベースに移行しません。 ターゲットデータベースの既存のデータレコードは保持されます。

          • 増分データ移行中、DTS はデータレコードをターゲットデータベースに移行します。 ターゲットデータベースの既存のデータレコードは上書きされます。

        • ソースデータベースとターゲットデータベースのスキーマが異なる場合、特定の列のみが移行されるか、データ移行タスクが失敗します。 慎重に進めてください。

      ソースオブジェクト

      ソースオブジェクト セクションから 1 つ以上のオブジェクトを選択します。 向右小箭头 アイコンをクリックして、オブジェクトを 選択中のオブジェクト セクションに追加します。

      説明
      • 移行するオブジェクトとしてスキーマまたはテーブルを選択できます。 移行するオブジェクトとしてテーブルを選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトをターゲットデータベースに移行しません。

      • 移行するテーブルに SERIAL データ型が含まれており、[移行タイプ][スキーマ移行] として選択した場合は、シーケンスまたはスキーマ全体の移行も選択することをお勧めします。

      選択中のオブジェクト

      • ターゲットインスタンスに移行するオブジェクトの名前を変更するには、[選択したオブジェクト] セクションでオブジェクトを右クリックします。 詳細については、「単一オブジェクトの名前をマッピングする」をご参照ください。

      • 一度に複数のオブジェクトの名前を変更するには、[選択したオブジェクト] セクションの右上隅にある [一括編集] をクリックします。 詳細については、「一度に複数のオブジェクト名をマッピングする」をご参照ください。

      説明
      • オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトが移行に失敗する可能性があります。

      • WHERE 条件を設定してデータをフィルタリングするには、[選択したオブジェクト] セクションで移行するテーブルを右クリックします。 表示されるダイアログボックスで、フィルター条件を設定します。 詳細については、「フィルター条件の設定」をご参照ください。

      • データベースまたはテーブルレベルで移行する SQL 操作を選択するには、[選択したオブジェクト] セクションで移行するオブジェクトを右クリックします。 表示されるダイアログボックスで、移行する SQL 操作を選択します。

    2. 詳細設定へ をクリックして詳細設定を行います。

      設定

      注意

      タスクのスケジュールに使用する専用クラスターの選択

      デフォルトでは、専用クラスターを指定しない場合、DTS はデータ移行タスクを共有クラスターにスケジュールします。 データ移行タスクの安定性を向上させたい場合は、専用クラスターを購入してください。 詳細については、「DTS 専用クラスターとは」をご参照ください。

      失敗した接続の再試行時間

      失敗した接続のリトライ時間範囲。 データ移行タスクの開始後にソースまたはターゲットデータベースへの接続に失敗した場合、DTS はリトライ時間範囲内にすぐに接続をリトライします。 有効値: 10 から 1,440。 単位: 分。 デフォルト値: 720。 パラメーターを 30 より大きい値に設定することをお勧めします。 指定されたリトライ時間範囲内に DTS がソースおよびターゲットデータベースに再接続されると、DTS はデータ移行タスクを再開します。 そうでない場合、データ移行タスクは失敗します。

      説明
      • 同じソースまたはターゲットデータベースを共有する複数のデータ移行タスクに異なるリトライ時間範囲を指定した場合、後で指定された値が優先されます。

      • DTS が接続をリトライすると、DTS インスタンスに対して課金されます。 ビジネス要件に基づいてリトライ時間範囲を指定することをお勧めします。 ソースデータベースとターゲットインスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることもできます。

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。

      その他の問題のリトライ時間範囲。 たとえば、データ移行タスクの開始後に DDL または DML 操作が失敗した場合、DTS はリトライ時間範囲内にすぐに操作をリトライします。 有効値: 1 から 1440。 単位: 分。 デフォルト値: 10。 パラメーターを 10 より大きい値に設定することをお勧めします。 指定されたリトライ時間範囲内に失敗した操作が正常に実行されると、DTS はデータ移行タスクを再開します。 そうでない場合、データ移行タスクは失敗します。

      重要

      移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメーターの値は、失敗した接続の再試行時間 パラメーターの値より小さくする必要があります。

      完全移行率を制限するかどうか

      完全データ移行のスロットリングを有効にするかどうかを指定します。 完全データ移行中、DTS はソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 ビジネス要件に基づいて、完全データ移行のスロットリングを有効にできます。 スロットリングを設定するには、1 秒あたりのソースデータベースのクエリ率 QPS1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS パラメーターを設定する必要があります。 これにより、ターゲットデータベースサーバーの負荷が軽減されます。

      説明

      このパラメーターは、移行タイプ パラメーターで 完全データ移行 を選択した場合にのみ設定できます。

      増分移行率を制限するかどうか

      増分データ移行のスロットリングを有効にするかどうかを指定します。 スロットリングを設定するには、1 秒あたりの増分移行の行数 RPS および 1 秒あたりの増分移行データ量 (MB) BPS パラメーターを設定する必要があります。 これにより、ターゲットデータベースサーバーの負荷が軽減されます。

      説明

      このパラメーターは、移行タイプ パラメーターで 増分データ移行 を選択した場合にのみ設定できます。

      環境タグ

      必要に応じて、インスタンスを識別するための環境タグを選択します。 この例では必須ではありません。

      ETL の設定

      抽出、変換、書き出し (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETL とは」をご参照ください。 有効値:

      監視アラート

      データ移行タスクのアラートを設定するかどうかを指定します。 タスクが失敗した場合、または移行遅延が指定されたしきい値を超えた場合、アラート連絡先は通知を受け取ります。 有効値:

      • [いいえ]: アラートを設定しません。

      • [はい]: アラートを設定します。 この場合、アラートのしきい値と アラート通知設定も設定する必要があります。 詳細については、「モニタリングとアラートの設定」トピックの「DTS タスク作成時のモニタリングとアラートの設定」セクションをご参照ください。

    3. [次のステップ: データ検証] をクリックしてデータ検証タスクを設定します。

      データ検証機能の使用方法の詳細については、「データ検証タスクの設定」をご参照ください。

  6. タスク設定を保存し、事前チェックを実行します。

    • 関連する API 操作を呼び出して DTS タスクを設定する際に指定するパラメーターを表示するには、次:タスク設定の保存と事前チェック にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。

    • パラメーターを表示する必要がない場合、または表示済みの場合は、ページの下部にある 次:タスク設定の保存と事前チェック をクリックします。

    説明
    • データ移行タスクを開始する前に、DTS は事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題をトラブルシューティングします。 その後、再度事前チェックを実行します。

    • 事前チェック中に項目のアラートがトリガーされた場合:

      • アラート項目を無視できない場合は、失敗した項目の横にある [詳細の表示] をクリックして問題をトラブルシューティングします。 その後、再度事前チェックを実行します。

      • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されるメッセージで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、再度事前チェックを実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  7. インスタンスを購入します。

    1. [成功率][100%] になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。

    2. [インスタンスの購入] ページで、データ移行インスタンスのインスタンスクラスパラメーターを設定します。 次の表にパラメーターを示します。

      セクション

      パラメーター

      説明

      新しいインスタンスクラス

      リソースグループ

      データ移行インスタンスが属するリソースグループ。 デフォルト値: [デフォルトリソースグループ]。 詳細については、「Resource Management とは」をご参照ください。

      インスタンスクラス

      DTS は、移行速度が異なるインスタンスクラスを提供します。 ビジネスシナリオに基づいてインスタンスクラスを選択できます。 詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。

    3. チェックボックスをオンにして、[Data Transmission Service (Pay-as-you-go) Service Terms] を読んで同意します。

    4. [購入して開始] をクリックします。 表示されるメッセージで、 をクリックします[OK]

      [データ移行] ページでタスクの進捗状況を表示できます。

      説明
      • データ移行タスクを使用して増分データを移行できない場合、タスクは自動的に停止します。 [ステータス] セクションに [完了] が表示されます。

      • データ移行タスクを使用して増分データを移行できる場合、タスクは自動的に停止しません。 増分データ移行タスクは停止も完了もしません。 [ステータス] セクションに [実行中] が表示されます。