AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Mongosync クイックスタート

Mongosync は、同期が 完了する まで、データをレプリケートし、あるクラスターから別のクラスターに書込みます。このツールを使用すると、 MongoDBクラスター間で 1 回限りのデータ移行を最小限のダウンタイムで実行できます。

実行中の mongosync と宛先クラスターの動作の詳細については、中間同期に関する考慮事項 を参照してください。

mongosync バイナリは、Mongosync で使用されるプライマリ プロセスです。

  • 各クラスターは、レプリカセットとシャーディングされたクラスターにすることができます。 いずれかがシャーディングされたクラスターである場合は、 mongosyncのシャーディングされたクラスターの制限を参照してください。

  • シャーディングされたクラスターは、同じ数のシャードを持つ必要はありません。

  • 宛先クラスターは、ソースクラスターと同じバージョンまたは最大 2 つのバージョンが必要です。 パッチ バージョンは、最小のパッチバージョン要件を満たしている限り、重要ではありません。

  • ソースクラスターはコミットまでアクティブのままになることができます。これは、コミットが呼び出されるまで、mongosyncが移行中にソースクラスターの書込みを同期するためです。

重要

mongosync で commit を呼び出し、canWrite が true を正常に返すまで、宛先クラスター上の移行されたコレクションは、アプリケーションの読み取りまたは書き込みトラフィックを受け入れるために使用できません。障害復旧、分析、またはその他の同様のユースケースのセカンダリ クラスターを維持するために、mongosync を使用しないでください。

以下の手順に従って、Mongosync を設定し、クラスターに接続して、データを同期します。

1

自己管理型またはMongoDB Atlasでホストされている MongoDB クラスターがすでに存在する場合は、そのクラスターをソースクラスターとして使用します。 操作するクラスターがない場合は、作成する必要があります。

このクイックスタートは、宛先クラスターとソースクラスターの両方がレプリカセットである場合に機能します。

レプリカセットからシャーディングされたクラスターに同期するには、「 シャーディングされたクラスターにレプリカセットを同期する」を参照してください。 シャーディングされたクラスター間で同期するには、「 シャーディングされたクラスターの同期 」を参照してください。

同じまたは異なるバージョンの MongoDB 上のクラスターを移行できます。 MongoDB サーバーのバージョンの互換性またはバージョン間の移行の詳細については、「 MongoDB Server のバージョンの互換性 」を参照してください。

宛先レプリカセット内のノードの数は、ソース レプリカセット内のノードの数と等しくなっている必要はありません。

重要:

宛先クラスターには、移行される論理データ サイズと最初の同期の宛先oplogエントリーに十分対応できるディスクストレージが必要です。 例、10 GBのデータを移行するには、宛先クラスターでデータには少なくとも 10 GBが使用可能であり、最初の同期からの挿入oplogエントリ用にはさらに 10 GB が必要です。

埋め込み検証 を使用するには、宛先のoplogがより大きくなければなりません。埋め込み検証子を有効にして宛先oplogのサイズを減らすと、埋め込み検証子が追いつけない可能性があり、mongosync がエラーを発生させる可能性があります。

宛先oplogエントリのオーバーヘッドを減らす必要があり、埋め込み検証子が無効になっている場合は、次の操作を実行できます。

  • Use the oplogSizeMB setting to lower the destination cluster's oplog size.

  • Use to oplogMinRetentionHours setting to lower or remove the destination cluster's minimum oplog retention period.

クラスターが自己管理型の場合は、 MongoDB Enterpriseクラスターである必要があります。Mongosync はMongoDB Community Edition では、限られた場合にのみサポートされます。MongoDB Community Edition で Mongosync を使用する方法の詳細については、 MongoDB の営業担当者に問い合わせてください。

Creating a cluster is beyond the scope of this guide. If you need help, refer to the documentation to create an Atlas cluster or to create a self-managed cluster.

重要

Do not choose Latest Version With Auto Upgrades. This option auto upgrades your cluster to the latest minor release. Some minor releases, such as MongoDB version 8.2, may not support Live Migration or Mongosync. When upgrading, choose a major version to ensure compatibility with Live Migration and Mongosync.

2

いずれかのクラスターが Atlas でホストされている場合、またはいずれかに認証が必要な場合は、両方のクラスターで 権限を持つデータベースユーザーを作成する必要があります。

ソース ユーザーは、次のロールを持っている必要があります。

さらに、ソース ユーザーは次の操作を実行できる必要があります。

ソースクラスターが Atlas でホストされている場合、ユーザーにはAtlas 管理者ロールが必要です。 また、ユーザーはクラスターの変更ストリームも読み取ることができる必要があります。

If the destination cluster is hosted in Atlas, the user must have the Atlas admin role.

3

mongosync は、ソースクラスターと宛先クラスターを接続するツールです。 mongosyncは専用のハードウェアでホストできます。 mongosyncは、MongoDB クラスターをホストするハードウェアで実行する必要がありません。

mongosyncをインストールするには次の手順に従います。

  1. ソースクラスターと宛先クラスターへのネットワーク接続を持つmongosync実行可能ファイルのホストサーバーを見つけます。

  2. ホスト システム用のmongosyncパッケージをダウンロードします。

  3. mongosyncパッケージを解凍します。 mongosync実行可能ファイルはbinディレクトリにあります。

オペレーティング システム固有のインストール手順については、「インストール 」を参照してください。

1

接続文字列には、mongosync がソースクラスターと宛先クラスターに接続するために必要なネットワークと認証の詳細が含まれています。

ソースクラスターと宛先クラスターのホスト名または IP アドレスとポートを決定します。 この情報とユーザー認証の詳細を使用して接続文字列を構築します。

標準の URI 接続スキームの形式は次のとおりです。

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

接続文字列は次のようになります。

cluster0:
mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020
cluster1:
mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020

詳細については、「 mongosyncの接続 」を参照してください。

2

mongosync は、データの同期を開始する前に、ソースクラスターと宛先クラスターへの初期接続を作成する必要があります。 初期接続を作成するには、接続文字列を 1 行につき次のコマンドを実行します(コマンドは明確にするために再フォーマットされています)。

./bin/mongosync \
--logPath /var/log/mongosync \
--cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \
--cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
  • mongosyncがソースクラスターと宛先クラスターに初めて接続するときは、 IDLE状態です。

  • mongosync は、開始コマンドを受信するまでデータを同期しません。

  • startコマンドでソースクラスターと宛先クラスターを指定します。 「cluster0」と「cluster1」はラベルだけで、いずれのクラスターはcluster0またはcluster1でもかまいません。

開始エンドポイントは、データ同期を開始します。 同期を開始するには、 curlまたは同様のプログラムを使用して開始リクエストを発行します。

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1"
} '

開始リクエストが成功した場合、 mongosyncは{ "success": true }を返し、ソースクラスター上の既存のデータと宛先クラスターの同期を開始します。 この時点で、 mongosyncはRUNNING状態になり、後続のソースクラスターの書込みを宛先クラスターに適用します。

同期のステータスを確認するには、進行状況エンドポイントを呼び出します。

curl localhost:27182/api/v1/progress -XGET

progress 応答にフィールドcanCommit: true が含まれている場合は、/commit エンドポイントを呼び出せます。「カットオーバー プロセスの終了」を参照してください。

mongosyncのコマンドインターフェースは、HTTP API を公開する HTTP サーバーです。 mongosyncを制御するには、 API エンドポイントを使用します。 API ドキュメントには、次のエンドポイントの使用に関する詳細が記載されています。

エンドポイント
説明

ソースクラスターと宛先クラスター間の同期を開始します。

同期プロセスの状態を返します。

現在の同期操作を一時停止します。

宛先クラスターに保存されているデータに基づいて、一時停止した同期セッションを再開します。

同期操作を宛先クラスターにコミットします。

コミットされた同期操作の方向を逆にします。

mongosyncカットオーバー プロセスを使用して移行を完了し、アプリケーション ワークロードをソース クラスターから宛先クラスターに転送できます。

詳細については、「カットオーバー プロセスの終了 」を参照してください。

mongosync は、移行中にデータベースつまたは複数のデータベースにメタデータを保存します。メタデータデータベースには、次のいずれかの名前を付けることができます。

  • __mdb_internal_mongosync

  • で始まるのもの __mdb_internal_mongosync_verifier

移行が成功させるたら、メタデータデータベースを削除します。

警告

reversible を true に設定して移行を開始した場合、メタデータデータベースを削除した後に移行を元に戻すことはできません。

  • HTTP API のデフォルト ポートは27182です。 別のポートを構成するには、 --portオプションとmongosyncを併用します。

  • mongosync では、ソースクラスターと宛先クラスターをスワップして、逆同期を有効にできます。

    詳細については、 reverseエンドポイントを参照してください。

  • mongosync接続文字列で指定されたユーザーには、ソースクラスターと宛先クラスターで必要な権限が必要です。権限は、環境と逆同期を使用するかどうかによって異なります。

    ユースケースに適したユーザー権限を決定するには、「ユーザー権限 」を参照してください。

  • You may need to increase the file descriptor ulimits on the host that is running mongosync. This applies to any UNIX-like system, but macOS in particular has low defaults. See UNIX ulimit settings.

  • 最初の同期に必要なoplogのサイズを見積もるには、 oplog サイズ設定 を参照してください。