mongosync ユーティリティは、 MongoDBクラスター間の接続を作成します。mongosync は次のいずれかのクラスターに接続できます。
MongoDB Atlas のホストされたクラスター
自己管理型クラスターと Atlas ホスト型クラスター
このページでは、 MongoDB Mongosync を使用して、自己管理型クラスターを Atlas クラスターに接続する手順を説明します。
Atlas クラスターへの接続の詳細については、「データベース配置への接続」を参照してください。
注意
最高のパフォーマンスを得るには、移行の前に、 自己管理型クラスター上の を最新の MongoDB Server パッチ リリースにアップグレードしてください。 詳細については、「 MongoDB の最新の自己管理型パッチ リリースへのアップグレード 」を参照してください。
接続文字列
mongosync は、 MongoDB URI 接続文字列を使用して、自己管理型クラスターに接続します。
SRV 接続スキームの形式は次のとおりです。
mongodb+srv://[username:password@][host.domain.TLD][/defaultauthdb][?options]標準の URI 接続スキームの形式は次のとおりです。
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
レプリカセット構成にリストされているのと同じ方法でmongodインスタンスのホスト名を指定します。
シャーディングされたクラスター の場合は、 インスタンスではなく、mongos mongodインスタンスのホスト名を指定します。
注意
mongosync にはreplicaSetオプションは必要ありません。
mongosync は、 MongoDB URI 接続文字列を使用してAtlasクラスターに接続します。
SRV 接続スキームの形式は次のとおりです。
mongodb+srv://[username:password]@[clusterName].[host].mongodb.net/Atlasで SRV 接続文字列を見つける方法について詳しくは、「クラスターへの接続」を参照してください。
標準の URI 接続スキームの形式は次のとおりです。
mongodb://[username:password]@[clusterName].[host].mongodb.net/
mongosync では、ソースクラスターと宛先クラスターに接続するにはprimary読み込み設定(read preference)が必要です。 詳しくは、「読み込み設定(read preference)オプション 」を参照してください。
認証
MongoDB Atlasクラスターに接続するための有効な認証を提供します。 Atlas データベースユーザーがまだいない場合は、ユーザーを作成する必要があります。
ソースクラスターまたは宛先クラスターのいずれかに認証が必要な場合は、 mongosyncを呼び出すときに正しい認証情報を指定する必要があります。
ロール
mongosync接続文字列で指定されたユーザーには、ソースクラスターと宛先クラスターで必要な権限が必要です。権限は、環境と逆同期を使用するかどうかによって異なります。
ソースクラスターの自己管理型権限は次のとおりです。
同期タイプ | 必要なソース権限 |
|---|---|
default | |
二重書込みブロック | |
元に戻す | |
複数の反転 |
サーバー ロールの詳細については、「自己管理型配置でのロールベースのアクセス制御 」を参照してください。
ユーザー権限を更新するには、 grantRolesToUserを参照してください。
宛先クラスターの Atlas 権限は次のとおりです。
同期タイプ | 必要な宛先権限 |
|---|---|
default |
|
二重書込みブロック、元対応、または複数元の逆 |
|
Atlas ロールの詳細については、Atlas ユーザーロール を参照してください。
Atlas user権限を更新するには、「プロジェクトへのアクセス権の管理 」を参照してください。
同期中、mongosync は setUserWriteBlockMode コマンドを使用して、宛先クラスターへの書き込み (write) をブロックします。mongosync が宛先クラスターへの接続に使用するデータベースユーザーは、次の両方のアクションを同時に持っている必要があります。
setUserWriteBlockMode。これにより、mongosyncは書き込み (write)をブロックするコマンドを実行する (run)ことができます。bypassWriteBlockingMode。これにより、書き込み (write)がブロックされている間も、mongosyncは宛先への書き込み (write)を継続できます。
いずれかのアクションが欠落している場合、mongosyncは停止し、欠落している権限を報告します。
atlasAdmin は組み込みロールであり、これら2つのアクションはロールではなく権限アクションです。これらを付与するには、両方のアクションを含むカスタムロールを作成し、そのカスタムロールをデータベースユーザーに割り当てます。
カスタムロールを作成してデータベースユーザーに割り当てるには、次の手順を実行します。
カスタムロールを作成するには、次のコマンドを実行します。
atlas customDbRoles create mongosyncWriteBlocking \ --privilege SET_USER_WRITE_BLOCK,BYPASS_USER_WRITE_BLOCKカスタムロールをデータベースユーザーに割り当てるには、次のコマンドを実行します。--role オプションはユーザーの既存のロールを置き換えるため、ユーザーがすでに持っているロールとカスタムロールを一緒にリストします。例として、atlasAdmin ロールを保持するには、次のようにします。
atlas dbusers update <username> \ --role atlasAdmin,mongosyncWriteBlocking動作
ホスティング
mongosyncユーティリティは、ソースクラスターまたは宛先クラスターのいずれかに近いハードウェアでホストできます。 クラスター内のmongodまたはmongosインスタンスのいずれかと同じサーバーでホストされている必要はありません。 この柔軟性により、宛先クラスターにデータをプッシュまたはプルして、宛先クラスターで実行されているmongodまたはmongosインスタンスへの影響を最小限に抑えることができます。
初期状態
mongosyncが接続すると、 IDLE状態になります。 同期を開始するには、 startコマンドを発行する必要があります。
制限
M10+ Atlas クラスターで mongosync を実行する前に、Require Indexes for All Queries オプションを無効にして、ソースクラスターと宛先クラスターの両方で notablescan を false に設定します。
例
接続情報の収集
ソースクラスターcluster0は、次のサーバーとポートでホストされています。
clusterOne01.fancyCorp.com:20020clusterOne02.fancyCorp.com:20020clusterOne03.fancyCorp.com:20020
宛先 Atlas クラスターであるcluster1は、次のサーバーとポートでホストされています。
cluster2Name-01.abc123.com:27017cluster2Name-02.abc123.com:27017cluster2Name-03.abc123.com:27017
各クラスターには管理ユーザーclusterAdminが設定されており、パスワードsuperSecretが使用されます。
を使用したソースクラスターと宛先クラスターの接続 mongosync
自己管理型クラスターの一般的な接続文字列形式は次のとおりです。
mongodb://<user>:<password>@<ip-address>:<port>,<ip-address>:<port>,<ip-address>:<port>クラスターの一般的な接続文字列 Atlas 形式は次のとおりです。
mongodb://<user>:<password>@<clusterName>.<hostname>.mongodb.net/自己管理型クラスター用に収集した接続情報を使用して、 cluster0の接続文字列を作成します。
cluster0:mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020stringAtlasクラスターの接続 は、Atlas UI から取得できます。詳細については、「データベース配置への接続 」を参照してください。
以下のmongosyncコマンドのレイアウトは表示用に変更されています。 mongosyncを使用してcluster0をcluster1に接続するには、次のコマンドを 1 行で入力します。
mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net"Atlas クラスターには TLS 接続が必要です。 Atlas クラスターでmongosyncを使用するには、 tls=trueオプションを追加します。 たとえば、 cluster0とcluster1上のadminデータベースに接続するには、次の手順に従います。
mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020/admin?tls=true" \ --cluster1 "mongodb://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net/admin?tls=true"mongosyncではmongodb+srv接続文字列を使用することもできます。 tls=truemongodb+srv接続 にstring オプションを追加する必要はありません。例:
mongosync \ --cluster0 "mongodb+srv://clusterAdmin:superSecret@clusterOne01.fancyCorp.com/" \ --cluster1 "mongodb+srv://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net/"mongodb+srv接続文字列の詳細については、 SRV 接続形式 を参照してください。