Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型シャーディングされたクラスターの再起動

項目一覧

  • 始める前に
  • バランサーを無効にする
  • シャーディングされたクラスターの停止
  • シャーディングされたクラスターの起動
  • バランサーを再度有効にする
  • クラスターのアクセス可能性を検証する

チュートリアルは MongoDB 8.0に固有です。 MongoDB の以前のバージョンについては、対応するバージョンの MongoDB マニュアルを参照してください。

この手順では、シャーディングされたクラスターを再起動するためのシャットダウンとスタートアップのシーケンスを示します。 シャーディングされたクラスターのコンポーネントを異なる順序で停止または起動すると、ノード間の通信エラーが発生する可能性があります。 たとえば、使用できるコンフィギュレーション サーバー がない場合、 シャード サーバーがハングすることがあります。

重要

この手順は、計画的なメンテナンス期間中にのみ実行する必要があります。 この期間中、アプリケーションはクラスターへのすべての読み取りと書き込みを停止して、潜在的なデータ損失や古いデータの読み取りを防ぐ必要があります。

MongoDB 8.0 以降では、 directShardOperations ロールを使用して、メンテナンス操作を実行できます。その操作では、シャードに対してコマンドを直接実行する必要があります。

警告

directShardOperationsロールを使用して コマンドを実行すると、クラスターが正しく動作しなくなり、データが破損する可能性があります。 directShardOperationsロールは、メンテナンス目的で、または MongoDB サポートのガイダンスに必ず従う必要があります。 メンテナンス操作を実行したら、 directShardOperationsロールの使用を停止します。

バランサーを無効にしてチャンクの移行を停止し、プロセスが完了するまでメタデータの書込み操作を実行しません。 移行が進行中の場合、バランサーは進行中の移行を完了してから停止します。

バランサーを無効にするには、クラスターのmongosインスタンスの 1 つに接続し、次のコマンドを実行します。 [1]

sh.stopBalancer()

バランサーの状態を確認するには、 sh.getBalancerState()コマンドを発行します。

詳細については、「バランサーを無効にする 」を参照してください。

[1] MongoDB 6.0.3以降、 自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません6.0.3より前のバージョンの MongoDB では、 sh.stopBalancer()は、シャーディングされたクラスターの自動分割も無効にします。
1

db.shutdownServer()adminmongos ルーターで データベースから を実行します。

use admin
db.shutdownServer()
2

シャード レプリカセット mongodノードで db.shutdownServer()データベースから を実行し、 プロセスをシャットダウンします。admin各レプリカセット内のプライマリをシャットダウンする前に、すべてのセカンダリ ノードをシャットダウンします。

3

コンフィギュレーションサーバー mongoddb.shutdownServer()データベースから を実行し、 プロセスをシャットダウンします。adminプライマリをシャットダウンする前に、すべてのセカンダリ メンバーをシャットダウンします。

1

mongodを起動するときに、構成ファイルまたはコマンド ラインのいずれかを使用してmongod設定を指定します。 起動パラメータの詳細については、 mongodリファレンス ページを参照してください。

構成ファイル

構成ファイルを使用する場合は、構成ファイル パスに--configオプションを設定してmongodを起動します。

mongod --config <path-to-config-file>

コマンドライン

コマンドライン オプションを使用する場合は、 --configsvr--replSet--bind_ip 、および配置に応じてその他のオプションを使用してmongodを起動します。 例:

mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

すべてのコンフィギュレーションサーバーを起動したら、プライマリmongodに接続し、 rs.status()を実行して、各 CSRS ノードの正常性と可用性を確認します。

2

mongodを起動するときに、構成ファイルまたはコマンド ラインのいずれかを使用してmongod設定を指定します。

構成ファイル

構成ファイルを使用する場合は、構成ファイル パスに--configオプションを設定してmongodを起動します。

mongod --config <path-to-config-file>

コマンドライン

コマンドライン オプションを使用する場合は、 --replSet--shardsvr--bind_ipオプション、および配置に応じてその他のオプションを使用してmongodを起動します。 例:

mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

各シャードのすべてのメンバーを起動した後、各プライマリmongodに接続し、 rs.status()を実行して各メンバーの正常性と可用性を確認します。

3

構成ファイルまたはコマンドライン パラメータを使用して構成サーバーを指定し、 mongosルーターを起動します。

構成ファイル

構成ファイルを使用する場合は、 --configオプションと構成ファイルへのパスを指定してmongosを起動します。

mongos --config <path-to-config>

構成ファイルの詳細については、構成オプションを参照してください。

コマンドライン

コマンドライン パラメータを使用する場合は、 mongosを起動し、 --configdb--bind_ipなど、配置に応じてその他のオプションを指定します。 例:

警告

インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>

配置に適したその他のオプションを含めます。

チャンクの移行を再開するには、バランサーを再度有効にします。

クラスターのmongosインスタンスの 1 つに接続し、 sh.startBalancer()コマンドを実行します。 [2]

sh.startBalancer()

バランサーの状態を確認するには、 sh.getBalancerState()コマンドを発行します。

詳細については、 「 バランサーを有効にする 」を参照してください。

[2] MongoDB 6.0.3以降、 自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません6.0.3より前のバージョンの MongoDB では、 sh.startBalancer()は、シャーディングされたクラスターの自動分割も有効にします。

mongo shell をクラスターのmongosプロセスの 1 つに接続します。 クラスター全体のステータスを確認するには、 sh.status()を使用します。

すべてのシャードがアクセス可能で通信していることを確認するには、一時的にシャーディングされたコレクションにテスト データを挿入します。 クラスター内の各シャード間でデータが分割され、移行されていることを確認します。 mongo shell を各シャード プライマリに接続し、 db.collection.find()を使用して、データが期待どおりにシャーディングされたことを検証できます。

重要

データ損失の可能性や古いデータの読み取りを防ぐため、クラスターが正常でアクセス可能であることを確認するまで、アプリケーションはクラスターへの読み取りと書込みを開始しないでください。

戻る

自己管理型コンフィギュレーションサーバーを置き換える