この手順では、LVM (Logical Volume Manager) スナップショットなどの既存のバックアップスナップショットからシャーディングされたクラスターを復元します。ソースとターゲットのシャーディングされたクラスターのシャードの数は同じである必要があります。シャーディングされたクラスターのすべてのコンポーネントの LVM スナップショットの作成については、 「ファイル システム スナップショットを使用したシャーディングされたクラスターのバックアップ」を参照してください。
注意
mongodumpとmongorestoreをシャーディングされたクラスターのバックアップ戦略として使用するには、「データベース ダンプを使用した自己管理型シャーディングされたクラスターのバックアップ 」を参照してください。
シャーディングされたクラスターではバックアップと復元に次のいずれかの連携的なプロセスも利用できます。これによりシャード間のトランザクションはアトミック性が継続的に保証されます。
Considerations
AES256-GCM暗号化モードを使用する暗号化ストレージ エンジンの場合、 AES256-GCMはすべてのプロセスについて、キーと一意のカウンター ブロック値を使用することを求めます。
AES256-GCM 暗号で構成されたストレージ エンジンの場合:
- ホット バックアップからの復元
mongodが を実行中いる間に「ホット」バックアップで取得したファイルから復元すると、 MongoDB はスタートアップ時に「汚染された」キーを検出し、データベースキーを自動的にロールオーバーして、IV(Initialization Vector: 初期化ベクトル)の再利用を回避します。
- コールド バックアップからの復元
ただし、
mongodがを実行中いないときに「コールド」バックアップで取得したファイルから復元すると、 MongoDB はスタートアップ時に「汚染された」キーを検出せず、 IV の再利用によって機密性と整合性の保証が無効になります。コールド ファイルシステム スナップショットから復元した後にキーが再利用されるのを回避するため、 MongoDB に新しいコマンドライン オプション
--eseDatabaseKeyRolloverが追加されました。--eseDatabaseKeyRolloverオプションを使用して起動すると、mongodインスタンスはAES256-GCM暗号で構成されたデータベースキーをロールオーバーして終了します。
A.(任意)レプリカセットの構成確認
この手順では、デフォルト構成を使用して、コンフィギュレーションサーバー レプリカセット(CSRS)と各シャード レプリカセットの新しいレプリカセットを開始します。 復元された CSRS とシャードに対して別のレプリカセット構成を使用するには、レプリカセットを再構成する必要があります。
mongoshellソースクラスターが正常に実行中され、アクセス可能な場合は、各レプリカセット内のプライマリレプリカセットメンバーに シェルを接続します。次に、rs.conf() を実行してレプリカ構成ドキュメントを表示します。
ソース シャーディングされたクラスターの 1 つ以上のコンポーネントにアクセスできない場合は、既存の内部ドキュメントを参照して、各シャード レプリカセットとコンフィギュレーションサーバー レプリカセットの構成要件を再構築してください。
B. 復元用のターゲット ホストの準備
- ストレージ領域の要件
- ターゲット ホスト ハードウェアに、復元されたデータ用の十分なオープン ストレージ領域があることを確認します。 ターゲット ホストに保持する既存のシャーディングされたクラスター データが含まれている場合は、既存データと復元されたデータの両方に十分なストレージ領域があることを確認してください。
- LVM の要件
- LVMスナップショットの場合は、少なくとも 1 つのLVM管理ボリュームグループと、抽出されたスナップショットデータ用に十分な空き領域がある論理ボリュームが必要です。
- MongoDB のバージョン要件
ターゲット ホストとソース ホストが同じ MongoDB Server バージョンを持っていることを確認します。 ホストマシンで使用可能な MongoDB のバージョンを確認するには、ターミナルまたは shell から
mongod --versionを実行します。インストールに関する詳細なドキュメントについては、「 MongoDB のインストール 」を参照してください。
- 実行中の MongoDB プロセスのシャットダウン
既存のクラスターに復元する場合は、ターゲット ホストで
mongodまたはmongosプロセスをシャットダウンします。mongosを実行しているホストの場合は、mongoshell をmongosに接続し、adminデータベースからdb.shutdownServer()を実行します。use admindb.shutdownServer()mongodを実行しているホストの場合は、mongoshell をmongodに接続し、db.hello()を実行します。isWritablePrimaryが false の場合、mongodはレプリカセットのセカンダリメンバーです。 シャットダウンするには、adminデータベースからdb.shutdownServer()を実行します。isWritablePrimaryが true の場合、mongodはレプリカセットのプライマリメンバーです。 最初に 、レプリカセットの セカンダリ ノードを シャットダウンします 。 レプリカセットの他のノードを識別するには、rs.status()を使用します。プライマリは、大多数のノードがオフラインであることを検出すると、自動的に降格します。 ステップダウン後(
db.hello()がisWritablePrimary: falseを返します)、mongodを安全にシャットダウンできます。
- データディレクトリの準備
復元されたデータベース ファイルのターゲット ホスト上にディレクトリを作成します。
mongodを実行するユーザーが、そのディレクトリ内のすべてのファイルとサブフォルダに対する読み取り、書込み (write)、実行権限があることを確認します。sudo mkdir /path/to/mongodbsudo chown -R mongodb:mongodb /path/to/mongodbsudo chmod -R 770 /path/to/mongodb/path/to/mongodbを、作成したデータディレクトリのパスに置き換えます。RHEL / CentOS、Amazon Linux、SUSE では、デフォルトのユーザー名はmongodです。- ログ ディレクトリの準備
ターゲット ホストに
mongodログ ファイルのディレクトリを作成します。mongodを実行するユーザーが、そのディレクトリ内のすべてのファイルとサブフォルダに対する読み取り、書込み (write)、実行権限があることを確認します。sudo mkdir /path/to/mongodb/logssudo chown -R mongodb:mongodb /path/to/mongodb/logssudo chmod -R 770 /path/to/mongodb/logs/path/to/mongodb/logsを、作成したログ ディレクトリへのパスに置き換えます。RHEL / CentOS、Amazon Linux、SUSE では、デフォルトのユーザー名はmongodです。- 構成ファイルを作成
この手順では、
mongod構成ファイル を使用して を起動することを前提としています。構成ファイルを希望の場所に作成します。
mongodを実行するユーザーに、構成ファイルに対する読み取りおよび書込み権限があるようにします。sudo touch /path/to/mongod.confsudo chown mongodb:mongodb /path/to/mongodb/mongod.confsudo chmod 644 /path/to/mongodb/mongod.confRHEL / CentOS、Amazon Linux、SUSE では、デフォルトのユーザー名は
mongodです。お好みのテキストエディタで構成ファイルを開き、配置に応じて を変更します。 または、
mongodの元の構成ファイルにアクセスできる場合は、それをターゲット ホスト上の希望する場所にコピーします。重要
構成ファイルに次の設定が含まれていることを検証します。
storage.dbPathには、目的のデータ ディレクトリへのパスを設定する必要があります。systemLog.pathは、使用するログ ディレクトリへのパスに設定する必要がありますnet.bindIpには、ホスト マシンの IP アドレスを含める必要があります。replication.replSetNameには、特定のレプリカセット内の各ノードにわたって同じ 値があります。sharding.clusterRoleには、特定のレプリカセット内の各ノードにわたって同じ 値があります。また、スナップショットで指定されたのと同じ起動オプションを新しい配置で指定する必要があります。
C. コンフィギュレーションサーバーのレプリカセットを復元する
CSRS プライマリ mongod データファイルを復元します。
ご希望のバックアップ メソッドに対応するタブを選択します。
LVMスナップショットをターゲット ホスト マシンにマウントします。 LVM スナップショットをマウントするための具体的な手順は、LVM 構成によって異なります。
次の例では、「 ファイルシステム スナップショットを使用した自己管理型配置のバックアップ 」手順の「 スナップショットの作成 」ステップを使用して作成されたLVMスナップショットを前提としています。
lvcreate --size 250GB --name mongod-datafiles-snapshot vg0gzip -d -c mongod-datafiles-snapshot.gz | dd o/dev/vg0/mongod-datafiles-snapshotmount /dev/vg0/mongod-datafiles-snapshot /snap/mongodbこの例は、可能なすべての LVM 構成に適用されるわけではありません。 LVM 復元に関する詳細なガイダンスについては、システムの LVM ドキュメントを参照してください。
スナップショット マウントから
mongodデータファイルをB. Prepare the Target Host for Restorationで作成されたデータ ディレクトリにコピーします。cp -a /snap/mongodb/path/to/mongodb /path/to/mongodb-aオプションは、フォルダーとファイルの権限を保持しながら、ソース パスの内容を宛先パスに再帰的にコピーします。次の構成ファイル設定をコメントアウトするか省略します。
#replication# replSetName: myCSRSName#sharding# clusterRole: configsvr構成ファイルを使用して
mongodを起動するには、構成ファイルへの完全パスを指定して、コマンドラインで--configオプションを指定します。mongod --config /path/to/mongodb/mongod.conf名前空間でフィルタリングされたスナップショットから復元する場合は、
--restoreオプションを指定します。mongod --config /path/to/mongod/mongod.conf --restoremongodがシステム サービスとして実行するように構成されている場合は、システム サービス マネージャーに推奨されるプロセスを使用して起動します。
ホスト上で選択したバックアップに保存されているデータファイルにアクセスできるようにします。 これには、バックアップ ボリュームをマウントする、ソフトウェア ユーティリティでバックアップを開く、または別のツールを使用してデータをディスクに抽出する必要がある場合があります。 バックアップに含まれるデータにアクセスする手順については、ご希望のバックアップ ツールのドキュメントを参照してください。
バックアップ データのロケーションから
mongodデータファイルをB. Prepare the Target Host for Restorationで作成されたデータ ディレクトリにコピーします。cp -a /backup/mongodb/path/to/mongodb /path/to/mongodb-aオプションは、フォルダーとファイルの権限を保持しながら、ソース パスの内容を宛先パスに再帰的にコピーします。次の構成ファイル設定をコメントアウトするか省略します。
#replication# replSetName: myCSRSName#sharding# clusterRole: configsvr構成ファイルを使用して
mongodを起動するには、構成ファイルへの完全パスを指定して、コマンドラインで--configオプションを指定します。mongod --config /path/to/mongodb/mongod.conf名前空間でフィルタリングされたスナップショットから復元する場合は、
--restoreオプションも指定します。mongod --config /path/to/mongod/mongod.conf --restore注意
Cloud ManagerまたはMongoDB Ops Managerのみ
Cloud ManagerまたはMongoDB Ops Managerバックアップの手動復元を実行する場合は、起動前に
disableLogicalSessionCacheRefreshサーバー パラメータを指定する必要があります。mongod --config /path/to/mongodb/mongod.conf \ --setParameter disableLogicalSessionCacheRefresh=truemongodがシステム サービスとして実行するように構成されている場合は、システム サービス マネージャーに推奨されるプロセスを使用して起動します。
local データベースを削除します。
db.dropDatabase()を使用してlocalデータベースを削除します。
use localdb.dropDatabase()フィルタリングされたファイルリストをローカルデータベースに挿入します。
この手順は、名前空間でフィルタリングされたスナップショットから復元する場合にのみ必要です。
各シャードについて、次の名前形式のフィルタリングされたファイル リストを見つけます: <shardRsID>-filteredFileList.txt 。 このファイルには、次の形式の JSON オブジェクトのリストが含まれています。
{ "filename":"file1", "ns":"sampleDb1.sampleCollection1", "uuid": "3b241101-e2bb-4255-8caf-4136c566a962"}各シャード ファイルの各 JSON オブジェクトを、 localデータベース内の新しいdb.systems.collections_to_restoreコレクションに追加します。 空のnsまたはuuidフィールドを持つエントリは無視できます。 エントリを挿入するときは、 uuidフィールドを タイプUUID()として挿入する必要があります。
計画的または完了したシャードホスト名またはレプリカセット名の変更については、config.shards のメタデータを更新します。
次のすべてが当てはまる場合は、この手順をスキップできます。
この手順中に、シャード ノード ホスト マシンのホスト名が または 変更されることはありません。
この手順中にシャード レプリカセット名が または 変更されることはありません。
find()構成データベース のshards コレクションに対して次の メソッドを発行します。<shardName>をシャード名に置き換えます。 デフォルトでは、シャード名はそのレプリカセット名です。 addShardコマンドを使用してシャードを追加し、カスタムnameを指定した場合は、そのnameに<shardName>を指定する必要があります。
use configdb.shards.find( { "_id" : "<shardName>" } )この操作は、次のようなドキュメントを返します。
{ "_id" : "shard1", "host" : "myShardName/alpha.example.net:27018,beta.example.net:27018,charlie.example.net:27018", "state" : 1}重要
_id値は、対応するシャード上の_id : "shardIdentity"ドキュメント内のshardName値と一致する必要があります。 この手順の後半でシャードを復元するときに、 shardsの_idフィールドがシャードのshardName値と一致していることを検証します。
updateOne()メソッドを使用してhosts string を更新し、シャードの予定されたレプリカセット名とホスト名リストを反映します。 たとえば、次の操作は、"_id" : "shard1" を使用してシャードの host 接続stringを更新します。
db.shards.updateOne( { "_id" : "shard1" }, { $set : { "host" : "myNewShardName/repl1.example.net:27018,repl2.example.net:27018,repl3.example.net:27018" } })すべてのシャード メタデータが、クラスター内の各シャードに計画されているレプリカセット名とホスト名リストを正確に反映するまで、このプロセスを繰り返します。
mongod を新しい単一ノードレプリカセットとして再起動します。
をシャットダウンし mongodます。以下の構成ファイルオプションのコメントを解除するか、または追加します。
replication replSetName: myNewCSRSNamesharding clusterRole: configsvrレプリカセット名を変更する場合は、続行する前に、 replSetNameフィールドを新しい名前で更新する必要があります。
更新された構成ファイルを使用してmongodを起動します。
mongod --config /path/to/mongodb/mongod.confmongodがシステム サービスとして実行するように構成されている場合は、システム サービス マネージャーに推奨されるプロセスを使用して起動します。
新しいレプリカセットを開始します。
デフォルト設定でrs.initiate()を使用してレプリカセットを開始します。
rs.initiate()操作が完了したら、rs.status() を使用してノードがプライマリになったことを確認します。
レプリカセット ノードを追加します。
CSRS 内の各レプリカセット ノードごとに、ホストマシン上でmongodを起動します。 クラスターの残りのすべてのノードを正常に起動したら、 mongo shell をプライマリ レプリカセット ノードに接続します。 プライマリから、 rs.add()メソッドを使用してレプリカセットの各ノードを追加します。 プレフィックスとしてレプリカセット名を含め、その後にノードのmongodプロセスのホスト名とポートを含めます。
rs.add("config2.example.net:27019")rs.add("config3.example.net:27019")特定のレプリカmember 構成設定を持つノードを追加する場合は、ノードのホスト名と配置に必要な 設定を定義するドキュメントをrs.add() membersに渡すことができます。
rs.add( { "host" : "config2.example.net:27019", priority: <int>, votes: <int>, tags: <int> })新しい各メンバーは、プライマリに追いつくために最初の同期を実行します。 同期するデータ量、ネットワークのトポロジーと健全性、各ホスト マシンの電源などの要因によっては、最初の同期が完了するまでに長時間かかる場合があります。
ノードを追加するときに、レプリカセットによって新しいプライマリが選択される場合があります。 どのノードが現在のプライマリであるかを識別するには、 rs.status()を使用します。 rs.add()はプライマリからのみ実行できます。
追加で必要なレプリケーション設定が必要な場合は、構成します。
rs.reconfig()メソッドは、パラメータとして渡された構成ドキュメントに基づいてレプリカセット構成を更新します。 レプリカセットのプライマリ ノードに対してreconfig()を実行する必要があります。
ステップA. Review Replica Set Configurationsで識別されたレプリカセットの元の構成ファイル出力を参照し、必要に応じて設定を適用します。
D. 各シャード レプリカセットを復元する
シャード プライマリ mongod データファイルを復元します。
ご希望のバックアップ メソッドに対応するタブを選択します。
LVMスナップショットをターゲット ホスト マシンにマウントします。 LVM スナップショットをマウントするための具体的な手順は、LVM 構成によって異なります。
次の例では、「 ファイルシステム スナップショットを使用した自己管理型配置のバックアップ 」手順の「 スナップショットの作成 」ステップを使用して作成されたLVMスナップショットを前提としています。
lvcreate --size 250GB --name mongod-datafiles-snapshot vg0gzip -d -c mongod-datafiles-snapshot.gz | dd o/dev/vg0/mongod-datafiles-snapshotmount /dev/vg0/mongod-datafiles-snapshot /snap/mongodbこの例は、可能なすべての LVM 構成に適用されるわけではありません。 LVM 復元に関する詳細なガイダンスについては、システムの LVM ドキュメントを参照してください。
スナップショット マウントから
mongodデータファイルをB. Prepare the Target Host for Restorationで作成されたデータ ディレクトリにコピーします。cp -a /snap/mongodb/path/to/mongodb /path/to/mongodb-aオプションは、フォルダーとファイルの権限を保持しながら、ソース パスの内容を宛先パスに再帰的にコピーします。
ホスト上で選択したバックアップに保存されているデータファイルにアクセスできるようにします。 これには、バックアップ ボリュームをマウントする、ソフトウェア ユーティリティでバックアップを開く、または別のツールを使用してデータをディスクに抽出する必要がある場合があります。 バックアップに含まれるデータにアクセスする手順については、ご希望のバックアップ ツールのドキュメントを参照してください。
バックアップ データのロケーションから
mongodデータファイルをB. Prepare the Target Host for Restorationで作成されたデータ ディレクトリにコピーします。cp -a /backup/mongodb/path/to/mongodb /path/to/mongodb-aオプションは、フォルダーとファイルの権限を保持しながら、ソース パスの内容を宛先パスに再帰的にコピーします。次の構成ファイル設定をコメントアウトするか省略します。
#replication# replSetName: myShardName#sharding# clusterRole: shardsvr構成ファイルを使用して
mongodを起動するには、構成ファイルへの完全パスを指定して、コマンドラインで--configオプションを指定します。mongod --config /path/to/mongodb/mongod.conf注意
Cloud ManagerまたはMongoDB Ops Managerのみ
Cloud ManagerまたはMongoDB Ops Managerバックアップの手動復元を実行する場合は、起動前に
disableLogicalSessionCacheRefreshサーバー パラメータを指定する必要があります。mongod --config /path/to/mongodb/mongod.conf \ --setParameter disableLogicalSessionCacheRefresh=truemongodがシステム サービスとして実行するように構成されている場合は、システム サービス マネージャーに推奨されるプロセスを使用して起動します。
__system ロールを持つ一時ユーザーを作成します。
この手順では、 admin.system.versionコレクション内のドキュメントを変更します。 認証を強制するクラスターの場合、このコレクションを変更する権限は__systemロールのみに付与されます。 クラスターが認証を強制しない場合は、この手順をスキップできます。
警告
__systemロールの所有者は、データベース内の任意のオブジェクトに対して任意のアクションを実行することができます。 この手順には、このステップで作成された ユーザーを削除するための手順が含まれています。 この手順の範囲外で、このユーザーをアクティブのままにしないでください。
指定されたホストのみが特権ユーザーとして認証できるように、 clientSource認証制限を構成してこのユーザーを作成することを検討してください。
adminデータベースでのuserAdminロール、またはuserAdminAnyDatabaseロールを持つユーザーとして認証します。use admindb.auth("myUserAdmin","mySecurePassword")__systemロールを持つユーザーを作成します。db.createUser( { user: "mySystemUser", pwd: "<replaceMeWithAStrongPassword>", roles: [ "__system" ] })パスワードは、システムのセキュリティを確保し、悪意のあるアクセスを防止または遅延させるために、ランダムで長く、複雑なものにする必要があります。
特権ユーザーとして認証します。
db.auth("mySystemUser","<replaceMeWithAStrongPassword>")
local データベースを削除します。
db.dropDatabase()を使用してlocalデータベースを削除します。
use localdb.dropDatabase()minOpTimeRecoveryドキュメントをadmin.system.versions コレクションから削除します。
シャーディング内部を更新するには、deleteOne() データベースのsystem.version コレクションに対して次のadmin メソッドを発行します。
use admindb.system.version.deleteOne( { _id: "minOpTimeRecovery" } )注意
system.versionコレクションは内部のシステム コレクションです。 このような特定の指示が与えられた場合にのみ、 を変更する必要があります。
オプション: CSRS ホスト名またはレプリカセット名が変更された場合は、各シャードの ID ドキュメントでシャード メタデータを更新します。
次のすべてが当てはまる場合は、この手順をスキップできます。
この手順では、CSRS ホストのホスト名は変更されませんでした。
この手順では、CSRS レプリカセット名は変更されませんでした。
admin データベースのsystem.versionコレクションには、 CSRS 接続stringなど、シャードに関連するメタデータが含まれています。 CSRS の復元中に CSRS 名またはノードのホスト名が変更された場合は、このメタデータを更新する必要があります。
次のfind()メソッドをadminデータベース内のsystem.versionコレクションに対して発行します。
use admindb.system.version.find( {"_id" : "shardIdentity" } )find()メソッドは、次のようなドキュメントを返します。
{ "_id" : "shardIdentity", "clusterId" : ObjectId("2bba123c6eeedcd192b19024"), "shardName" : "shard1", "configsvrConnectionString" : "myCSRSName/alpha.example.net:27019,beta.example.net:27019,charlie.example.net:27019" }次のupdateOne()メソッドは、host stringが最新の CSRS 接続stringを表すようにドキュメントを更新します。
db.system.version.updateOne( { "_id" : "shardIdentity" }, { $set : { "configsvrConnectionString" : "myNewCSRSName/config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"} })重要
shardName値は、CSRS のshardsコレクション内の_id値と一致する必要があります。 CSRS のメタデータがシャードのメタデータと一致することを検証します。 CSRS メタデータを表示する手順については、この手順のC. Restore Config Server Replica Set部分のサブステップ3を参照してください。
mongod を新しい単一ノードレプリカセットとして再起動します。
をシャットダウンし mongodます。以下の構成ファイルオプションのコメントを解除するか、または追加します。
replication replSetName: myNewShardNamesharding clusterRole: shardsvrレプリカセット名を変更する場合は、続行する前に、 replSetNameフィールドを新しい名前で更新する必要があります。
更新された構成ファイルを使用してmongodを起動します。
mongod --config /path/to/mongodb/mongod.confmongodがシステム サービスとして実行するように構成されている場合は、システム サービス マネージャーに推奨されるプロセスを使用して起動します。
新しいレプリカセットを開始します。
デフォルト設定でrs.initiate()を使用してレプリカセットを開始します。
rs.initiate()操作が完了したら、rs.status() を使用してノードがプライマリになったことを確認します。
レプリカセット ノードを追加します。
シャード レプリカセット内の各レプリカセット ノードについて、そのホストマシン上でmongodを起動します。 クラスターの残りのすべてのノードを正常に起動したら、 mongo shell をプライマリ レプリカセット ノードに接続します。 プライマリから、 rs.add()メソッドを使用してレプリカセットの各ノードを追加します。 プレフィックスとしてレプリカセット名を含め、その後にノードのmongodプロセスのホスト名とポートを含めます。
rs.add("repl2.example.net:27018")rs.add("repl3.example.net:27018")特定のレプリカmember 構成設定を持つノードを追加する場合は、ノードのホスト名と配置に必要な 設定を定義するドキュメントをrs.add() membersに渡すことができます。
rs.add( { "host" : "repl2.example.net:27018", priority: <int>, votes: <int>, tags: <int> })新しい各メンバーは、プライマリに追いつくために最初の同期を実行します。 同期するデータ量、ネットワークのトポロジーと健全性、各ホスト マシンの電源などの要因によっては、最初の同期が完了するまでに長時間かかる場合があります。
ノードを追加するときに、レプリカセットによって新しいプライマリが選択される場合があります。 どのノードが現在のプライマリであるかを識別するには、 rs.status()を使用します。 rs.add()はプライマリからのみ実行できます。
追加で必要なレプリケーション設定が必要な場合は、構成します。
rs.reconfig()メソッドは、パラメータとして渡された構成ドキュメントに基づいてレプリカセット構成を更新します。 レプリカセットのプライマリ ノードに対してreconfig()を実行する必要があります。
ステップA. Review Replica Set Configurationsで識別されたレプリカセットの元の構成ファイル出力を参照し、必要に応じて設定を適用します。
一時特権ユーザーを削除します。
認証が強制されるクラスターの場合は、この手順の前半で作成した特権ユーザーを削除します。
adminデータベースでのuserAdminロール、またはuserAdminAnyDatabaseロールを持つユーザーとして認証します。use admindb.auth("myUserAdmin","mySecurePassword")特権ユーザーを削除します。
db.removeUser("mySystemUser")
E. 各 の再起動 mongos
クラスター内の各mongosを再起動します。
mongos --config /path/to/config/mongos.conf配置に必要な他のすべてのコマンドライン オプションを含めます。
CSRS レプリカセット名またはノードのホスト名が変更された場合は、更新された構成サーバー接続mongos を使用してsharding.configDB 構成ファイルの設定string を更新します。
sharding: configDB: "myNewCSRSName/config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"F. クラスターのアクセス可能性を検証する
Connect a mongo shell to one of the mongos processes for the cluster. Use sh.status() to check the overall cluster status. If sh.status() indicates that the balancer is not running, use sh.startBalancer() to restart the balancer. [1]
すべてのシャードがアクセス可能で通信していることを確認するには、一時的にシャーディングされたコレクションにテスト データを挿入します。 クラスター内の各シャード間でデータが分割され、移行されていることを確認します。 mongo shell を各シャード プライマリに接続し、 db.collection.find()を使用して、データが期待どおりにシャーディングされたことを検証できます。
| [1] | MongoDB 6.0.3以降、 自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません。 MongoDB バージョン 6.0.3 より前では、 |