チュートリアルは MongoDB 6.0に固有です。 MongoDB の以前のバージョンについては、対応するバージョンの MongoDB マニュアルを参照してください。
この手順では、シャーディングされたクラスターを再起動するためのシャットダウンとスタートアップのシーケンスを示します。 シャーディングされたクラスターのコンポーネントを異なる順序で停止または起動すると、ノード間の通信エラーが発生する可能性があります。 たとえば、使用できるコンフィギュレーション サーバー がない場合、 シャード サーバーがハングすることがあります。
重要
この手順は、計画的なメンテナンス期間中にのみ実行する必要があります。 この期間中、アプリケーションはクラスターへのすべての読み取りと書き込みを停止して、潜在的なデータ損失や古いデータの読み取りを防ぐ必要があります。
バランサーを無効にする
バランサーを無効にしてチャンクの移行を停止し、プロセスが完了するまでメタデータの書込み操作を実行しません。 移行が進行中の場合、バランサーは進行中の移行を完了してから停止します。
バランサーを無効にするには、クラスターの mongosインスタンスのいずれかに接続し、次のコマンドを実行します。 [1]
sh.stopBalancer()
バランサーの状態を確認するには、 sh.getBalancerState()コマンドを発行します。
詳細については、「バランサーを無効にする 」を参照してください。
| [1] | MongoDB 6.0.3 以降では、自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません。 詳細については、「バランシング ポリシーの変更 」を参照してください。 MongoDB バージョン 6.0.3 より前では、 sh.stopBalancer()はシャーディングされたクラスターの自動分割も無効にします。 |
シャーディングされたクラスターの停止
mongosルーターを停止します。
db.shutdownServer()admin各mongos ルーターで データベースから を実行します。
use admin db.shutdownServer()
各シャード レプリカセットを停止します。
各 シャード レプリカセット mongodノードで db.shutdownServer()データベースから を実行し、 プロセスをシャットダウンします。admin各レプリカセット内のプライマリをシャットダウンする前に、すべてのセカンダリ ノードをシャットダウンします。
コンフィギュレーションサーバーを停止します。
各 コンフィギュレーションサーバー mongodで db.shutdownServer()データベースから を実行し、 プロセスをシャットダウンします。adminプライマリをシャットダウンする前に、すべてのセカンダリ メンバーをシャットダウンします。
シャーディングされたクラスターの起動
コンフィギュレーションサーバー を起動します。
各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 ノードの正常性と可用性を確認します。
各シャード レプリカセットを開始します。
各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()を実行して各メンバーの正常性と可用性を確認します。
mongosルーターを起動します。
構成ファイルまたはコマンドライン パラメータを使用して構成サーバーを指定し、 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 以降では、自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません。 詳細については、「バランシング ポリシーの変更 」を参照してください。 MongoDB バージョン 6.0.3 より前では、 sh.startBalancer()によってシャーディングされたクラスターの自動分割も有効になります。 |
クラスターのアクセス可能性を検証する
mongo shell をクラスターのmongosプロセスの 1 つに接続します。 クラスター全体のステータスを確認するには、 sh.status()を使用します。
すべてのシャードがアクセス可能で通信していることを確認するには、一時的にシャーディングされたコレクションにテスト データを挿入します。 クラスター内の各シャード間でデータが分割され、移行されていることを確認します。 mongo shell を各シャード プライマリに接続し、 db.collection.find()を使用して、データが期待どおりにシャーディングされたことを検証できます。
重要
データ損失の可能性や古いデータの読み取りを防ぐため、クラスターが正常でアクセス可能であることを確認するまで、アプリケーションはクラスターへの読み取りと書込みを開始しないでください。