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

Data Transmission Service:ApsaraDB for MongoDB から AnalyticDB for PostgreSQL へのデータ移行

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) を使用して、ApsaraDB for MongoDB のレプリカセットインスタンスから AnalyticDB for PostgreSQL インスタンスへデータを移行します。DTS は完全なデータ移行および増分データ移行をサポートしているため、ダウンタイムを最小限に抑えて切り替えが可能です。

サポートされる機能

機能対応状況備考
完全なデータ移行はい

すべての既存データを移行します

増分データ移行はい挿入、更新($set のみ)、削除操作をキャプチャします
コレクションレベルの移行はいデータベースレベルの移行はサポートされていません
シャードクラスターをソースとして使用はいMongos ノード数は 10 を超えてはなりません。_id はコレクション間で一意である必要があります
ETLはいタスク構成でデータ処理文を入力します
速度制限はい完全移行および増分移行の両方で設定可能です
送信先として追記最適化(AO)テーブルを使用いいえ
トランザクションの保持いいえトランザクションは個別のレコードに変換されます
時系列コレクション(MongoDB 5.0+)いいえ
SRV レコード接続いいえ
adminconfiglocal データベースの移行いいえ

課金

移行タイプリンク構成料金データ転送コスト
全データ移行無料課金対象項目Alibaba Cloud インスタンスアクセスを使用する場合は無料です。パブリック IP アドレスアクセスを使用する場合は有料です。をご参照ください。
増分データ移行有料課金概要をご参照ください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • 移行元の ApsaraDB for MongoDB インスタンスが使用しているストレージ領域よりも少なくとも 10 % 大きいストレージ領域を持つ、移行先の AnalyticDB for PostgreSQL インスタンス。詳細については、「インスタンスの作成」をご参照ください。

  • 移行対象データ用に、移行先インスタンスにデータベース、スキーマ、および一意(複合でない)プライマリキーを持つテーブルを作成済みであること。詳細については、「SQL 構文」をご参照ください。

    重要

    移行先テーブルを作成する際は、以下の点にご注意ください。 - MongoDB の _id フィールド(ObjectId 型)を、AnalyticDB for PostgreSQL の varchar 列にマップします。 - 任意の列名を _id または _value としないでください。 - フィールドマッピングの構成時に、プライマリキー列の値として bson_value("_id") を指定します。 - 追記最適化(AO)テーブルは移行先テーブルとしてサポートされていません。

  • シャードクラスターを移行元とする場合:すべてのシャードノードのエンドポイント、およびすべてのシャードで共通のデータベースアカウントとパスワードが必要です。詳細については、「シャードエンドポイントの申請」をご参照ください。

  • 必要な権限を持つデータベースアカウント。詳細については、「必要な権限」をご参照ください。

必要な権限

データベース完全移行増分移行
移行元 ApsaraDB for MongoDB移行対象データベースの読み取り移行対象のデータベース、管理者データベース、およびローカルデータベースからの読み取り
移行先 AnalyticDB for PostgreSQL移行先データベースに対する読み取りおよび書き込み権限移行先データベースに対する読み取りおよび書き込み権限

制限事項

ソースデータベース

  • 帯域幅:ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。そうでないと、移行速度に影響が出ます。

  • コレクション数の制限:名前マッピングを構成した場合、1 つの移行タスクで最大 1,000 コレクションを移行できます。この制限を超える場合は、オブジェクトを複数のタスクに分割してください。

  • 完全移行のみ対応:スタンドアロンの MongoDB インスタンス、Azure Cosmos DB for MongoDB、Amazon DocumentDB エラスティッククラスターは、完全なデータ移行のみをサポートしています。

  • 増分移行 — oplog/チェンジストリームの保持期間:ソースデータベースでは、oplog を有効化し、少なくとも 7 日間保持するか、またはチェンジストリームを有効化し、少なくとも 7 日間のサブスクライブ可能な履歴を確保する必要があります。この要件を満たさない場合、タスクが失敗したり、データ損失が発生したりする可能性があります。このような問題は Data Transmission Service (DTS) のサービスレベルアグリーメント (SLA) の対象外です。

    • 可能であれば oplog を使用してください。これにより、増分タスクのレイテンシを低減できます。

    • チェンジストリームは MongoDB 4.0 以降で必要です。

    • Amazon DocumentDB(非エラスティッククラスター)では、チェンジストリームを手動で有効化し、移行方法ChangeStreamチェンジストリーム に設定し、アーキテクチャSharded Cluster に設定する必要があります。

  • シャードクラスター — 一意の _id:移行対象のすべてのコレクションにおける _id フィールドは一意である必要があります。そうでないと、データの不整合が発生する可能性があります。

  • シャードクラスター — Mongos ノード数:Mongos ノード数は 10 を超えてはなりません。

  • シャードクラスター — 孤立ドキュメント: クラスターに孤立ドキュメントが存在しないことを確認してください。そうしないと、データの不整合やタスクの失敗が発生する可能性があります。詳細については、「孤立ドキュメント」および「MongoDB シャードクラスターから孤立ドキュメントをパージする方法」をご参照ください。

  • 自己管理型シャードクラスター — 接続タイプ:パブリック IP専用回線/VPN Gateway/Smart GatewayCEN のみがサポートされています。

  • 自己管理型シャードクラスター — MongoDB 8.0+ と oplog を併用:移行タスクで使用されるシャードアカウントには、directShardOperations 権限が必要です。以下のコマンドを実行して権限を付与します。

    db.adminCommand({ grantRolesToUser: "username", roles: [{ role: "directShardOperations", db: "admin"}]})

    username を実際のシャードアカウント名に置き換えてください。

  • SRV レコード:SRV レコードを使用した MongoDB への接続はサポートされていません。

  • アクティブなバランサーを備えたシャードクラスター:移行中にバランサーがデータのリバランスを行っている場合、インスタンスのレイテンシが発生する可能性があります。

移行中の操作

  • 完全なデータ移行中は、配列型データの更新を含む、データベースまたはコレクションのスキーマを変更しないでください。

  • 完全移行のみ(増分移行なし)を行う場合、移行中にソースインスタンスへの新規データの書き込みは行わないでください。

  • シャードクラスターをソースとする場合、移行インスタンスが実行中は、shardCollectionreshardCollectionunshardCollectionmoveCollectionmovePrimary のようなデータ分布を変更するコマンドを実行しないでください。

その他の制限事項

  • コレクションレベルの移行のみがサポートされています。

  • adminconfiglocal データベースは移行できません。

  • トランザクション情報は保持されません。ソースからのトランザクションは、送信先で個別のレコードに変換されます。

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

  • 完全なデータ移行では同時 INSERT 操作が使用されるため、断片化が発生する可能性があります。移行後、送信先テーブルが使用するディスク領域は、ソースコレクションよりも大きくなる場合があります。

  • DTS は失敗したタスクを 7 日間以内に再開しようと試みます。ビジネストラフィックを送信先に切り替える前に、タスクを終了または解放するか、revoke コマンドを使用して送信先アカウントの書き込み権限を取り消すことで、自動再開後にソースが送信先データを上書きすることを防止してください。

  • DTS は、最後に移行されたレコードのタイムスタンプと現在時刻を比較してレイテンシを算出します。ソースが長期間更新されていない場合、レイテンシの数値は不正確になる可能性があります。これを更新するには、ソースデータベースに対して更新操作を実行してください。

  • 時系列コレクション(MongoDB 5.0 で導入)の移行はサポートされていません。

  • タスクが失敗した場合、DTS サポートスタッフは 8 時間以内にそのタスクを復旧しようと試みます。復旧中、タスクが再起動されるか、またはそのパラメーターが調整される場合があります。変更されるのは DTS タスクのパラメーターのみであり、データベースパラメーターは変更されません。調整可能なパラメーターの一覧については、「DTS インスタンスのパラメーターを変更する」をご参照ください。

移行方法の選択

DTS では、2 種類の増分移行方法がサポートされています。ソースの構成に基づいて選択してください。

条件推奨される方法
ソースで oplog が有効化されている(ApsaraDB for MongoDB のデフォルト)Oplog — レイテンシが低く、推奨
ソースが Amazon DocumentDB(非エラスティッククラスター)であるChangeStream — 必須
ソースがシャードクラスターであり、シャードの認証情報を提供したくない場合ChangeStream — シャードアカウントおよびパスワードは不要
チェンジストリームが有効化されており、MongoDB 4.0 以降であるChangeStream

データの移行

移行プロセスは 7 ステップで構成されています:タスク一覧への移動、タスクの作成、ソースおよび送信先データベースの構成、移行オブジェクトの構成、高度な設定の構成、事前チェックの実行、およびインスタンスの購入です。

ステップ 1:移行タスク一覧へ移動

DTS コンソールまたは DMS コンソールのいずれかを使用します。

DTS コンソールから

  1. Data Transmission Service (DTS) コンソール にログインします。

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

  3. ページの左上隅で、移行インスタンスが配置されているリージョンを選択します。

DMS コンソールから

説明

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

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

  2. トップメニューで、Data + AI > Data Transmission (DTS) > データ移行 の順に選択します。

  3. データ移行タスク の右側で、移行インスタンスが配置されているリージョンを選択します。

ステップ 2:タスクの作成

タスクの作成 をクリックして、タスク構成ページを開きます。

ステップ 3:ソースおよび送信先データベースの構成

カテゴリパラメーター説明
タスク名DTS が自動的に名前を生成します。識別しやすいように、意味のある名前を指定してください。名前は一意である必要はありません。
ソースデータベース既存の接続を選択以前に登録済みのデータベースインスタンスを再利用する場合は、ドロップダウンリストから選択してください。下記のフィールドは自動的に入力されます。DMS コンソールでは、このパラメーターの名称は DMS データベースインスタンスの選択 です。それ以外の場合は、フィールドを手動で入力してください。
データベースタイプ MongoDB を選択します。
アクセス方法 Alibaba Cloud インスタンス を選択します。
インスタンスリージョンソース ApsaraDB for MongoDB インスタンスが配置されているリージョンを選択します。
Alibaba Cloud アカウント間でのデータ複製同一の Alibaba Cloud アカウント下のインスタンスの場合は、いいえ を選択します。
アーキテクチャ本例では レプリカセット を選択します。 シャードクラスター をソースとする場合は、シャードアカウント および シャードパスワード も指定する必要があります。
移行方法ソースに基づいて選択します。「移行方法の選択」をご参照ください。Oplog は、ソースの oplog が有効化されている場合に推奨されます。
インスタンス IDソース ApsaraDB for MongoDB インスタンスのインスタンス ID を選択します。
認証データベースソースアカウントが所属するデータベースを入力します。デフォルト: admin
データベースアカウントソースデータベースアカウントを入力します。
データベースパスワードソースアカウントのパスワードを入力します。
暗号化 暗号化なしSSL 暗号化、または Mongo Atlas SSL を選択します。利用可能なオプションは、アクセス方法 および アーキテクチャ によって異なります。Oplog 移行方法を使用するシャードクラスターをソースとする場合、SSL 暗号化はサポートされていません。
送信先データベース既存の接続を選択ソースと同様に、登録済みのインスタンスを再利用するか、手動で入力します。
データベースタイプ AnalyticDB for PostgreSQL を選択します。
アクセス方法 Alibaba Cloud インスタンス を選択します。
インスタンスリージョン送信先 AnalyticDB for PostgreSQL インスタンスが配置されているリージョンを選択します。
インスタンス ID送信先 AnalyticDB for PostgreSQL インスタンスのインスタンス ID を選択します。
データベース名送信先データベースの名前を入力します。
データベースアカウント送信先データベースアカウントを入力します。
データベースパスワード送信先アカウントのパスワードを入力します。

構成を完了したら、接続テストと続行 をクリックします。

DTS サーバーからのアクセスを許可するために、DTS サービスの IP アドレス範囲がソースデータベースとターゲットデータベースのセキュリティ設定に自動または手動で追加されていることを確認してください。 自己管理データベース ([アクセス方法][Alibaba Cloud インスタンス] ではない場合) では、[DTS サーバーの CIDR ブロック] ダイアログで [接続テスト] もクリックしてください。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。

ステップ 4:移行オブジェクトの構成

オブジェクトの構成 ページで、以下の設定を行います。

パラメーター説明
移行タイプ一度限りの移行の場合は、完全なデータ移行 を選択します。ダウンタイムをほぼゼロにする移行の場合は、完全なデータ移行 および 増分データ移行 の両方を選択します。増分データ移行 を選択しない場合、移行中にソースへの新規データの書き込みは行わないでください。
同期対象の DDL および DML 操作増分移行で含める DML 操作を、インスタンスレベルで選択します。コレクションレベルで構成する場合は、選択済みオブジェクト 内の移行対象オブジェクトを右クリックし、ダイアログで操作を選択します。
競合するテーブルの処理モード事前チェックとエラー報告:送信先に同名のコレクションが存在する場合、事前チェックが失敗します。必要に応じて競合するコレクションの名前を変更してください(「オブジェクト名マッピング」をご参照ください)。エラーを無視して続行:チェックをスキップします。
警告

これによりデータの不整合が発生する可能性があります。プライマリキーが一致する既存の送信先レコードは保持され、ソースレコードは移行されません。

ソースオブジェクト移行するオブジェクトをクリックし、右向き矢印アイコンをクリックして 選択済みオブジェクト に移動します。選択はコレクションレベルで行います。

選択済みオブジェクト で、オブジェクト名マッピングおよびフィールドマッピングを構成します。

データベース名をスキーマにマップ:

  1. 選択済みオブジェクト 内のデータベースを右クリックします。image

  2. データベース名 を、AnalyticDB for PostgreSQL のターゲットスキーマの名前に変更します。image

  3. (任意)同期対象の DDL および DML 操作の選択 で、増分移行の対象となる操作を選択します。image

  4. OK をクリックします。

コレクション名をテーブルにマップ:

  1. 選択済みオブジェクト 内のコレクションを右クリックします。image

  2. テーブル名 を、AnalyticDB for PostgreSQL のターゲットテーブルの名前に変更します。image

  3. (任意)フィルター条件を設定します。詳細については、「フィルター条件の設定」をご参照ください。image

  4. (任意)同期対象の DDL および DML 操作の選択 で、増分移行の対象となる操作を選択します。image

フィールドマッピングの構成:

DTS はコレクションのフィールドを送信先の列に自動的にマップします。 bson_value() 式を確認し、各フィールドについて 列名長さ、および 精度 を構成します。

重要
  • プライマリキー列に bson_value("_id") を割り当てます。

  • bson_value() 式では、最下位のサブフィールドへの完全なパスを指定します。たとえば、ネストされたフィールドの場合は bson_value("person","name") を使用し、bson_value("person") を使用しないでください。部分的なパスを使用すると、子フィールドの増分変更が失われる可能性があります。

正しい式を持つフィールド

既存の bson_value() 式が正しいフィールドの場合:

  1. 列名(AnalyticDB for PostgreSQL の送信先列名)を入力します。

  2. (ソース MongoDB のデータ型との互換性を確保)を選択します。

  3. (任意)長さ および 精度 を構成します。

  4. すべてのフィールドについて繰り返します。

誤った式を持つフィールド

式が誤っているか、存在しないフィールド(たとえばネストされたフィールド)の場合:

  1. 操作 列で、既存のエントリを削除するアイコンをクリックします。

  2. + 列の追加 をクリックします。image

  3. 列名長さ、および 精度 を構成します。

  4. 代入 フィールドに、bson_value() 式を入力します。「フィールドマッピングの例」をご参照ください。

  5. すべてのフィールドについて繰り返します。

OK をクリックします。

ステップ 5:高度な設定の構成

次へ:高度な設定 をクリックし、以下の設定を行います。

パラメーター説明
タスクスケジューリング専用クラスター専用クラスターデフォルトでは、DTS が共有クラスター上でタスクをスケジュールします。より安定したタスク実行を実現するには、をご購入ください。
接続失敗時の再試行時間デフォルト値:720 分。有効範囲:10~1440 分。30 分を超える値を設定してください。DTS はこの期間内に自動的に接続を再試行します。複数の DTS インスタンスが同一のソースまたは送信先を共有する場合、再試行時間は最も新しく作成されたタスクの設定値が優先されます。再試行期間中も課金対象となります。ソースまたは送信先がリリースされた場合は、速やかに DTS インスタンスもリリースしてください。
その他の問題発生時の再試行時間デフォルト値:10 分。有効範囲:1~1440 分。10 分を超える値を設定し、かつ接続失敗時の再試行時間より短い値を指定する必要があります。
完全移行時の速度制限の有効化ソースデータベースへのクエリ毎秒数 (QPS)完全移行の RPS、および完全移行時のデータ移行速度 (MB/s)を制限することで、データベース負荷を軽減します。完全移行データ移行の速度制限の有効化が選択されている場合のみ利用可能です。タスク開始後にも速度制限の調整が可能です — 詳細については、「」をご参照ください。
同期対象テーブルのプライマリキー _id は単一のデータの型のみ使用コレクション全体でプライマリキー _id が単一のデータの型のみを使用しているかどうかを示します。はい:DTS はプライマリキーのデータの型をスキャンせず、コレクションごとに 1 種類のデータの型のみを移行します。いいえ:DTS はすべてのプライマリキーのデータの型をスキャンし、全データを移行します。選択には十分ご注意ください。誤った選択によりデータ損失が発生する可能性があります。完全移行が選択されている場合のみ利用可能です。
増分移行時の速度制限の有効化増分移行の RPSおよび増分移行時のデータ移行速度 (MB/s)を制限します。増分移行が選択されている場合のみ利用可能です。
環境タグ(任意)インスタンスを環境識別用にタグ付けします。
ETL の設定ETL とはデータ移行またはデータ同期タスクにおける ETL の設定抽出・変換・書き出し(ETL)機能を有効化または無効化します。有効化する場合は、コードエディタにデータ処理文を入力します。詳細については、「」および「」をご参照ください。
モニタリングとアラートアラートのしきい値および通知先連絡先を設定します。移行に失敗した場合、または遅延時間がしきい値を超えた場合、システムからアラートが送信されます。

ステップ 6:設定の保存と事前チェックの実行

次へ:タスク設定の保存と事前チェック をクリックします。

この構成の OpenAPI パラメーターを表示するには、次へ:タスク設定の保存と事前チェック ボタンにカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックします。

DTS はタスク開始前に事前チェックを実行します。事前チェックが失敗した場合:

  • 失敗した項目の横にある 詳細の表示 をクリックし、問題を修正してから 再チェック をクリックします。

  • 無視可能な警告項目については:警告の詳細の確認無視OK、および 再チェック の順にクリックします。警告を無視すると、データの不整合が発生する可能性があります。

ステップ 7:インスタンスの購入

  1. 成功率 が 100 % になったら、次へ:インスタンスの購入 をクリックします。

  2. 購入 ページで、インスタンスを構成します。

    パラメーター説明
    リソースグループ設定項目インスタンスのリソースグループを選択します。デフォルト:デフォルトリソースグループ。詳細については、「Resource Management とは」をご参照ください。
    インスタンスクラス必要な移行速度に基づいてリンク仕様を選択します。より高い仕様ほど、高速な移行をサポートします。詳細については、「データ移行リンク仕様」をご参照ください。
  3. Data Transmission Service(従量課金)利用規約 を読み、同意します。

  4. 購入して開始 をクリックします。確認ダイアログで、OK をクリックします。

タスクは データ移行タスク 一覧ページに表示されます。そこで進行状況を監視できます。

完全移行のみのタスクの場合、完全移行が完了するとタスクは自動的に停止します。ステータス完了 に変わります。
増分移行を含むタスクの場合、タスクは継続して実行されます。ステータス は手動で停止するまで 実行中 のままです。

フィールドマッピングの例

この例では、bson_value() 式を使用して、MongoDB ドキュメントのフィールドが AnalyticDB for PostgreSQL のテーブル列にどのようにマップされるかを示します。

ソース MongoDB ドキュメント

{
  "_id": "62cd344c85c1ea6a2a9f****",
  "person": {
    "name": "neo",
    "age": 26,
    "sex": "male"
  }
}

送信先 AnalyticDB for PostgreSQL のテーブルスキーマ

列名備考
mongo_idvarcharプライマリキー
person_namevarchar
person_agedecimal

移行後の送信先テーブルのデータ

上記のソースドキュメントを基に、移行後の送信先テーブルの内容を以下に示します。

mongo_idperson_nameperson_age
62cd344c85c1ea6a2a9f****neo26

この例では、sex は、対応する列が構成されていないため移行されません。

フィールドマッピングの構成

重要

bson_value() 式では、各サブフィールドへの完全なパスを指定します。たとえば、bson_value("person","name") は、name サブフィールドを person にマップします。bson_value("person") のみを使用すると、nameagesex のような子フィールドに対する増分変更が伝播されません。

列名割り当て
mongo_idSTRINGbson_value("_id")
person_nameSTRINGbson_value("person","name")
person_ageDECIMALbson_value("person","age")

次のステップ