このトピックでは、Data Transmission Service (DTS) を使用して、自己管理 PostgreSQL データベースから ApsaraDB RDS for PostgreSQL インスタンスにデータを同期する方法について説明します。
前提条件
ソースの自己管理 PostgreSQL データベースとターゲットの ApsaraDB RDS for PostgreSQL インスタンスが作成済みである必要があります。ターゲットの ApsaraDB RDS for PostgreSQL インスタンスの作成方法の詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」をご参照ください。
説明- 説明
サポートされているソースデータベースとターゲットデータベースのバージョンの詳細については、「データ同期ソリューションの概要」をご参照ください。
ターゲットデータベースのバージョンは、ソースデータベースのバージョンと同じか、それ以降である必要があります。これにより、データベースの互換性が確保されます。ターゲットデータベースのバージョンがソースデータベースのバージョンより古い場合、データベースの互換性の問題が発生する可能性があります。
ターゲットの ApsaraDB RDS for PostgreSQL インスタンスの利用可能なストレージ領域は、ソースの自己管理 PostgreSQL データベースが占有するストレージ領域よりも大きい必要があります。
注意事項
タイプ | 説明 |
ソースデータベースの制限 |
|
その他の制限 |
|
課金説明
同期タイプ | タスク構成料金 |
スキーマ同期と完全データ同期 | 無料。 |
増分同期 | 有料です。詳細については、「課金概要」をご参照ください。 |
サポートされる同期トポロジ
一対一の一方向同期
一対多の一方向同期
カスケードの一方向同期
多対一の一方向同期
DTS がサポートする同期トポロジの詳細については、「同期トポロジ」をご参照ください。
サポートされる同期オブジェクト
同期可能な SQL 操作
データベースアカウントに必要な権限
事前準備
以下の手順では、Linux オペレーティングシステムを例として使用します。
すべてのバージョンの自己管理 PostgreSQL データベースに対して、以下の準備を行ってください。
自己管理 PostgreSQL データベースが存在するサーバーにログインします。
次のコマンドを実行して、データベースで使用されているレプリケーションスロットの数をクエリします。
select count(1) from pg_replication_slots;postgresql.confファイルを修正します。wal_levelパラメーターをlogicalに設定します。max_wal_sendersとmax_replication_slotsパラメーターの値が、使用中のレプリケーションスロットの数と、この自己管理 PostgreSQL データベースをソースとして使用する DTS インスタンスの数の合計よりも大きいことを確認してください。# - Settings - wal_level = logical # minimal, replica, or logical # (change requires restart) ...... # - Sending Server(s) - # Set these on the master and on any standby that will send replication data. max_wal_senders = 10 # max number of walsender processes # (change requires restart) #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables #wal_sender_timeout = 60s # in milliseconds; 0 disables max_replication_slots = 10 # max number of replication slots # (change requires restart)説明設定ファイルを修正した後、パラメーター設定を有効にするには、自己管理 PostgreSQL データベースを再起動する必要があります。
DTS サーバーの IP アドレスを、自己管理 PostgreSQL データベースの pg_hba.conf ファイルに追加します。ターゲットデータベースが配置されているリージョンの DTS IP アドレス CIDR ブロックを追加するだけで十分です。詳細については、「自己管理データベースのホワイトリストに DTS サーバーの CIDR ブロックを追加する」をご参照ください。
説明設定ファイルを修正した後、
SELECTpg_reload_conf();コマンドを実行するか、自己管理 PostgreSQL データベースを再起動して変更を有効にしてください。この設定ファイルの設定の詳細については、「The pg_hba.conf File」をご参照ください。次の図に示すように、信頼できるアドレスを
0.0.0.0/0に設定している場合は、このステップをスキップできます。

同期するオブジェクトのデータベースとスキーマ情報に基づいて、ターゲットの ApsaraDB RDS for PostgreSQL インスタンスに対応するデータベースとスキーマを作成します。スキーマ名は同じでなければなりません。詳細については、「データベースの作成」および「スキーマの管理」をご参照ください。
自己管理 PostgreSQL データベースのバージョンが 9.4.8 から 10.0 の間の場合、以下の準備も行う必要があります。
PostgreSQL のソースコードをダウンロードし、コンパイルしてインストールします。
自己管理 PostgreSQL データベースが存在するサーバーにログインします。
PostgreSQL 公式ウェブサイトから、ソースの自己管理 PostgreSQL データベースのバージョンに対応するソースコードをダウンロードします。
sudo ./configure、sudo make、およびsudo make installコマンドを順に実行して、ソースコードを設定、コンパイル、インストールします。重要PostgreSQL をコンパイルしてインストールする際、オペレーティングシステムのバージョンは GCC のバージョンと互換性がある必要があります。
sudo ./configureコマンドの実行中にエラーが発生した場合は、エラーメッセージに基づいてコマンドを修正できます。たとえば、エラーメッセージがreadline library not found. Use --without-readline to disable readline support.の場合、コマンドをsudo ./configure --without-readlineに変更できます。別の方法で PostgreSQL をインストールする場合は、同じオペレーティングシステムと GCC バージョンを持つステージング環境で ali_decoding をコンパイルする必要があります。
DTS が提供する ali_decoding 拡張機能をダウンロードし、コンパイルしてインストールします。
ali_decoding をダウンロードします。
ali_decoding ディレクトリ全体を、コンパイルおよびインストールされた PostgreSQL の contrib ディレクトリにコピーします。

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) # Use the following for source code installation 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 endifali_decoding ディレクトリに移動します。
sudo makeとsudo make installコマンドを順に実行して ali_decoding をコンパイルし、インストールに必要なファイルを取得します。次のファイルを指定された場所にコピーします。

同期するオブジェクトのデータベースとスキーマに基づいて、ターゲットの ApsaraDB RDS for PostgreSQL インスタンスに対応するデータベースとスキーマを作成します。スキーマ名は同じでなければなりません。詳細については、「データベースの作成」および「スキーマの管理」をご参照ください。
操作手順
ターゲットリージョンのデータ同期タスクリストページに移動します。次のいずれかの方法を使用できます。
DTS コンソールから
DTS コンソールにログインします。
左側のナビゲーションウィンドウで、データ同期 をクリックします。
ページの左上隅で、同期インスタンスが配置されているリージョンを選択します。
DMS コンソールから
説明実際の操作は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモードコンソール」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソールにログインします。
トップメニューバーから、 を選択します。
データ同期タスク の右側で、同期インスタンスのリージョンを選択します。
タスクの作成 をクリックします。タスク設定ページが開きます。
ソースデータベースとターゲットデータベースを設定します。
警告ソースインスタンスとターゲットインスタンスを選択した後、ページ上部の 制限事項 を確認してください。そうしないと、タスクが失敗したり、データ不整合が発生したりする可能性があります。
カテゴリ
構成
説明
N/A
タスク名
DTS は自動的にタスク名を生成します。簡単に識別できるように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
移行元データベース
データベースタイプ
PostgreSQL を選択します。
アクセス方法
Cloud Enterprise Network (CEN) を選択します。
インスタンスのリージョン
自己管理 PostgreSQL データベースが存在するリージョンを選択します。
CEN インスタンス ID/CEN インスタンス 名
自己管理 PostgreSQL データベースが属する CEN インスタンスの ID を選択します。
既にデータベースに接続されている VPC ネットワーク
自己管理 PostgreSQL データベースに接続されている VPC を選択します。
ドメイン名または IP アドレス
自己管理 PostgreSQL データベースが存在するサーバーの IP アドレスを入力します。
ポート番号
自己管理 PostgreSQL データベースのサービスポートを入力します。デフォルトは 3433 です。
データベース名
同期するオブジェクトを含む自己管理 PostgreSQL インスタンス内のデータベースの名前を入力します。
データベースアカウント
自己管理 PostgreSQL データベースのデータベースアカウントを入力します。必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースのパスワード
データベースアカウントに対応するパスワードを入力します。
暗号化
ソースデータベースへの接続を暗号化するかどうかを指定します。このパラメーターは、ビジネス要件に基づいて設定できます。この例では、非暗号化 が選択されています。
ソースデータベースへの SSL 暗号化接続を確立する場合は、次の手順を実行します:SSL 暗号化 を選択し、必要に応じて CA 証明書、クライアント証明書、および クライアント証明書の秘密鍵 をアップロードし、次に クライアント証明書の秘密鍵のパスワード を指定します。
説明自己管理 PostgreSQL データベースの暗号化を SSL 暗号化 に設定した場合、CA 証明書 をアップロードする必要があります。
クライアント証明書を使用する場合は、クライアント証明書 と クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定する必要があります。
ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化の設定方法については、「SSL 暗号化」をご参照ください。
移行先データベース
データベースタイプ
PostgreSQL を選択します。
アクセス方法
Alibaba Cloud インスタンス を選択します。
インスタンスのリージョン
ターゲットの ApsaraDB RDS for PostgreSQL インスタンスが存在するリージョンを選択します。
インスタンス ID
ターゲットの ApsaraDB RDS for PostgreSQL インスタンスの ID を選択します。
データベース名
同期されたオブジェクトを含むターゲットの ApsaraDB RDS for PostgreSQL インスタンス内のデータベースの名前を入力します。
データベースアカウント
ターゲットの ApsaraDB RDS for PostgreSQL インスタンスのデータベースアカウントを入力します。必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
データベースのパスワード
データベースアカウントに対応するパスワードを入力します。
暗号化
ソースデータベースへの接続を暗号化するかどうかを指定します。このパラメーターは、ビジネス要件に基づいて設定できます。この例では、非暗号化 が選択されています。
ソースデータベースへの SSL 暗号化接続を確立する場合は、次の手順を実行します:SSL 暗号化 を選択し、必要に応じて CA 証明書、クライアント証明書、および クライアント証明書の秘密鍵 をアップロードし、次に クライアント証明書の秘密鍵のパスワード を指定します。
説明自己管理 PostgreSQL データベースの暗号化を SSL 暗号化 に設定した場合、CA 証明書 をアップロードする必要があります。
クライアント証明書を使用する場合は、クライアント証明書 と クライアント証明書の秘密鍵 をアップロードし、クライアント証明書の秘密鍵のパスワード を指定する必要があります。
ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化の設定方法については、「SSL 暗号化」をご参照ください。
設定完了後、ページ下部の 接続をテストして続行 をクリックします。
説明DTS サービスの IP アドレスブロックが、ソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加され、DTS サーバーからのアクセスが許可されていることを確認してください。詳細については、「DTS サーバーの IP アドレスホワイトリストの追加」をご参照ください。
ソースまたはターゲットデータベースが自己管理データベースである場合 (アクセス方法 が Alibaba Cloud インスタンス ではない場合)、DTS サーバーの CIDR ブロック ダイアログボックスで 接続テスト をクリックする必要もあります。
タスクオブジェクトを設定します。
オブジェクト設定 ページで、同期するオブジェクトを設定できます。
構成
説明
同期タイプ
増分同期 がデフォルトで選択されています。スキーマ同期 と 完全データ同期 も選択する必要があります。事前チェックが完了すると、DTS はソースインスタンスの完全データでターゲットクラスターの同期オブジェクトを初期化します。このデータは、後続の増分同期のベースラインとして機能します。
説明スキーマ同期 を選択すると、DTS はソースデータベースからターゲットデータベースへ同期対象テーブルのスキーマを同期します。スキーマには外部キーが含まれます。
競合するテーブルの処理モード
エラーの事前チェックと報告:ターゲットデータベースに同名のテーブルがあるかチェックします。同名のテーブルが見つかった場合、事前チェック中にエラーが報告され、データ同期タスクは開始されません。それ以外の場合、事前チェックは成功します。
説明ターゲットデータベースの同名のテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用してターゲットデータベースのテーブル名を変更できます。詳細については、「オブジェクト名のマッピング」をご参照ください。
エラーを無視して続行:ターゲットデータベースでの名前の衝突チェックをスキップします。
警告エラーを無視して続行 を選択すると、データ不整合が発生し、ビジネスにリスクをもたらす可能性があります。例:
テーブルスキーマが一致し、ターゲットデータベースのレコードがソースデータベースのレコードと同じプライマリキーまたは一意キーの値を持つ場合:
完全データ同期中、DTS はターゲットクラスターのレコードを保持します。ソースデータベースの対応するレコードは同期されません。
増分同期中、ソースデータベースのレコードがターゲットデータベースのレコードを上書きします。
テーブルスキーマが一致しない場合、データ初期化が失敗する可能性があります。これにより、一部の列のみの同期または完全な同期失敗が発生する可能性があります。注意して進めてください。
同期トポロジ
これは一方向同期のシナリオです。一方向同期 を選択します。
移行先インスタンスでのオブジェクト名の大文字化
ターゲットインスタンスのデータベース、テーブル、および列オブジェクトの名前の大文字/小文字ポリシーを設定できます。デフォルトでは、DTS デフォルトポリシー が選択されています。ソースまたはターゲットデータベースのデフォルトポリシーを使用することも選択できます。詳細については、「ターゲットオブジェクト名の大文字/小文字ポリシー」をご参照ください。
ソースオブジェクト
ソースオブジェクト ボックスでオブジェクトをクリックし、
をクリックして 選択中のオブジェクト ボックスに移動します。説明同期するオブジェクトとしてスキーマまたはテーブルを選択できます。同期するオブジェクトとしてテーブルを選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトをターゲットデータベースに移行しません。
同期するテーブルに SERIAL データ型が含まれており、同期タイプとして スキーマ同期 を選択した場合、シーケンスまたはスキーマ全体の同期も選択することを推奨します。
選択中のオブジェクト
ターゲットインスタンスで単一の同期オブジェクトの名前を変更するには、選択中のオブジェクト ボックスでオブジェクトを右クリックします。詳細については、「単一のオブジェクト名のマッピング」をご参照ください。
同期オブジェクトを一括で名前変更するには、選択中のオブジェクト ボックスの右上隅にある 一括編集 をクリックします。詳細については、「複数のオブジェクト名を一括でマッピングする」をご参照ください。
説明データベースまたはテーブルレベルで同期する SQL 操作を選択するには、選択済みオブジェクト セクションで同期するオブジェクトを右クリックします。表示されるダイアログボックスで、目的の操作を選択します。
データをフィルタリングするための WHERE 条件を指定するには、選択済みオブジェクト セクションでテーブルを右クリックします。表示されるダイアログボックスで、フィルター条件を指定します。詳細については、「フィルター条件の設定」をご参照ください。
オブジェクト名マッピング機能を使用すると、マッピングされたオブジェクトに依存する他のオブジェクトの同期が失敗する可能性があります。
詳細設定へ をクリックします。
構成
説明
タスクのスケジュールに使用する専用クラスターの選択
デフォルトでは、DTS は共有クラスターでタスクをスケジュールするため、選択する必要はありません。タスクの安定性を高めるために、DTS 同期タスクを実行するための専用クラスターを購入できます。詳細については、「DTS 専用クラスターとは」をご参照ください。
失敗した接続の再試行時間
同期タスクの開始後にソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、直ちに接続のリトライを開始します。デフォルトのリトライ時間は 720 分です。リトライ時間は 10 分から 1,440 分の間でカスタマイズできます。30 分以上の設定を推奨します。指定されたリトライ時間内に DTS が再接続した場合、タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。
説明同じソースまたはターゲットを持つ複数の DTS インスタンス (DTS インスタンス A と DTS インスタンス B など) で、A のネットワークリトライ時間が 30 分、B が 60 分に設定されている場合、短い方の 30 分が適用されます。
DTS は接続リトライ中のタスク実行時間に対して課金するため、ビジネスニーズに基づいてリトライ時間をカスタマイズするか、ソースおよびターゲットデータベースインスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることを推奨します。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
同期タスクの開始後、ソースまたはターゲットデータベースで接続以外の問題 (DDL または DML の実行エラーなど) が発生した場合、DTS はエラーを報告し、直ちに連続的なリトライ操作を開始します。デフォルトのリトライ時間は 10 分です。リトライ時間は 1 分から 1,440 分の間でカスタマイズすることもできます。10 分以上の設定を推奨します。設定されたリトライ時間内に関連操作が成功した場合、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 の値は、失敗した接続の再試行時間 の値より小さくする必要があります。
完全同期レートを制限するかどうか
完全データ同期フェーズ中、DTS はソースおよびターゲットデータベースの読み書きリソースを消費し、それらの負荷を増加させる可能性があります。1 秒あたりのソースデータベースのクエリ率 QPS、1 秒あたりの完全移行の行数 RPS、および 1 秒あたりの完全移行データ量 (MB) BPS を設定することで、完全データ同期タスクのレート制限を設定し、ターゲットデータベースへの圧力を軽減できます。
説明この設定項目は、同期タイプ が 完全データ同期 に設定されている場合にのみ利用可能です。
同期インスタンスの実行後に 完全データ同期のレートを調整することもできます。
増分同期率を制限するかどうか
1 秒あたりの増分同期の行数 RPS と 1 秒あたりの増分同期データ量 (MB) BPS を設定することで、増分同期タスクのレート制限を設定し、ターゲットデータベースへの圧力を軽減することもできます。
環境タグ
インスタンスを識別するための環境タグを選択できます。
ETL 機能の設定
抽出・変換・書き出し (ETL) 機能を有効にするかどうかを指定します。詳細については、「ETL とは」をご参照ください。有効な値:
はい:ETL 機能を設定します。コードエディタにデータ処理文を入力できます。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」をご参照ください。
いいえ:ETL 機能を設定しません。
監視アラート
アラートを設定するかどうかを指定します。同期が失敗した場合や、遅延が指定されたしきい値を超えた場合に、アラート連絡先に通知が送信されます。
設定しない:アラートは設定されません。
設定:アラートを設定します。アラートのしきい値とアラート通知も設定する必要があります。詳細については、「タスク設定中のモニタリングとアラートの設定」をご参照ください。
次へ:データ検証 をクリックしてタスクを設定します。
データ検証機能を使用するには、「データ検証の設定」をご参照ください。
タスクを保存し、事前チェックを実行します。
API 操作でこのインスタンスを設定するためのパラメーターを表示するには、次:タスク設定の保存と事前チェック ボタンにマウスを移動し、ツールチップの OpenAPI パラメーターのプレビュー をクリックします。
API パラメーターの表示が完了したら、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明同期タスクが開始される前に、事前チェックが実行されます。タスクは事前チェックに合格した後にのみ開始できます。
事前チェックが失敗した場合は、失敗した項目の横にある 詳細を表示 をクリックし、プロンプトに従って問題を解決してから、事前チェックを再実行してください。
事前チェック中に警告が生成された場合:
チェック項目が失敗し、無視できない場合は、項目の横にある 詳細を表示 をクリックします。その後、指示に従って問題を修正し、事前チェックを再実行してください。
無視できるチェック項目については、アラートの詳細を確認、無視、OK、再度事前チェックを実行 を順にクリックして、警告をスキップし、事前チェックを再実行します。チェック項目の警告を無視すると、データ不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
インスタンスを購入します。
成功率 が 100% になったら、次:インスタンスの購入 をクリックします。
購入 ページで、データ同期インスタンスの課金方法とリンク仕様を選択します。詳細については、次の表をご参照ください。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
課金方法
サブスクリプション:インスタンス作成時にお支払いいただきます。長期的なニーズに適しており、従量課金よりも手頃で、サブスクリプション期間が長いほど割引率が高くなります。
従量課金:時間単位で課金されます。短期的なニーズに適しています。使用後すぐにインスタンスをリリースしてコストを節約できます。
リソースグループ構成
インスタンスが属するリソースグループ。デフォルトは デフォルトリソースグループ です。詳細については、「Resource Management とは」をご参照ください。
リンク仕様
DTS は、異なるパフォーマンスレベルの同期仕様を提供します。リンク仕様は同期レートに影響します。ビジネスシナリオに基づいて選択できます。詳細については、「データ同期リンク仕様」をご参照ください。
サブスクリプション期間
サブスクリプションモードでは、サブスクリプションインスタンスの期間と数量を選択します。月次サブスクリプションでは 1〜9 ヶ月、年次サブスクリプションでは 1、2、3、または 5 年から選択できます。
説明このオプションは、課金方法が サブスクリプション の場合にのみ表示されます。
設定が完了したら、Data Transmission Service (従量課金) 利用規約 を読み、選択します。
購入して起動 をクリックし、OK ダイアログボックスで OK をクリックします。
データ同期ページでタスクの進捗状況を確認できます。
