Docs Menu
Docs Home
/
MongoDB Cluster-to-Cluster Sync

Cluster-to-Cluster Sync クイックスタート

項目一覧

  • Overview
  • セットアップ
  • ソースクラスターと宛先クラスターの定義
  • 管理ユーザーを定義する
  • ダウンロードとインストール mongosync
  • クラスターの接続
  • 接続文字列の形式を設定する
  • mongosync を初期化
  • 初期化ノート
  • クラスター間でのデータの同期
  • カットオーバー プロセスの終了
  • ワンタイム同期
  • データ検証
  • 同期ノート

MongoDB Cluster-to-Cluster Sync は、MongoDB クラスターを接続し、それら間でデータを同期する方法を提供します。 接続を行うツールは mongosyncです。 詳細については、「 Cluster-to-Cluster Sync 」ドキュメントの残りの部分を参照してください。

mongosync は 2 つのクラスター間でデータを同期します。

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

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

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

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

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

1

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

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

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

Tip

以下も参照してください。

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

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

重要

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

重要

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

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

  • oplogSizeMB宛先クラスターのoplogサイズを小さくするには、 設定を使用します。

  • oplogMinRetentionHoursを使用して 設定を解除し、宛先クラスターの最小oplog保持期間を短縮または削除します。

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

クラスターの作成は、このガイドの範囲外です。 サポートが必要な場合は、ドキュメントを参照してAtlas クラスターを作成するか、自己管理型クラスターを作成 してください。

2

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

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

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

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

宛先クラスターが Atlas でホストされている場合、ユーザーにはAtlas 管理者ロールが必要です。

3

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

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

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

  2. GoMongoDBダウンロード センター に します。

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

  4. 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 }を返し、ソースクラスター上の既存のデータと宛先クラスターの同期を開始します。 この時点で、 mongosyncRUNNING状態になり、後続のソースクラスターの書込みを宛先クラスターに適用します。

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

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

progress応答にフィールドcanCommit: trueが含まれている場合、クラスターは同期され、宛先クラスターはソースクラスターからデータを継続的に複製します。

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

エンドポイント
説明

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

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

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

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

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

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

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

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

データ同期を初期化した後、同期プロセスのステータスを確認するには、進行状況エンドポイントを呼び出します。

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

1 回限りの同期の場合は、 progress応答に次のフィールド値が含まれていることを確認します。

  • state: "RUNNING"

  • canCommit: true

  • lagTimeSeconds0に近いです(推奨されていますが、必須ではありません

次に、コミットエンドポイントを呼び出して、同期操作を宛先クラスターにコミットし、継続的なレプリケーションを停止します。

curl localhost:27182/api/v1/commit -XPOST --data '{ }'

commitリクエストが成功した場合、 mongosync{ "success": true }を返し、 COMMITTING状態になります。 同期が完了すると、 mongosyncCOMMITTED状態になり、クラスターの継続的な同期は行われなくなります。

アプリケーションの負荷をソースクラスターから宛先に転送する前に、データをチェックして、同期が成功していることを確認してください。

注意

mongosyncコミット中に canWrite: trueが停止した場合、/progress エンドポイントが を報告する前に、移行全体を再開して、確実に検証されるようにする必要があります。

詳細については、「データ転送を確認する 」を参照してください。

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

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

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

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

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

  • mongosyncを実行しているホストでファイル記述子ulimitsを増やす必要がある場合があります。 これはすべての UNIX のようなシステムに適用されますが、macOS のデフォルト値は特に低くなります。 UNIX ulimit 設定を参照してください。

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

戻る

Cluster-to-Cluster Sync