自己管理型シャーディングされたクラスターの再起動
チュートリアルは 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() は、シャーディングされたクラスターの自動分割も無効にします。 |
シャーディングされたクラスターの停止
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以降、 自動チャンク分割は実行されません。 これはバランシング ポリシーの改善によるものです。 自動分割コマンドは引き続き存在しますが、操作は実行されません6.0.3より前のバージョンの MongoDB では、 sh.startBalancer() は、シャーディングされたクラスターの自動分割も有効にします。 |
クラスターのアクセス可能性を検証する
mongo
shell をクラスターのmongos
プロセスの 1 つに接続します。 クラスター全体のステータスを確認するには、 sh.status()
を使用します。
すべてのシャードがアクセス可能で通信していることを確認するには、一時的にシャーディングされたコレクションにテスト データを挿入します。 クラスター内の各シャード間でデータが分割され、移行されていることを確認します。 mongo
shell を各シャード プライマリに接続し、 db.collection.find()
を使用して、データが期待どおりにシャーディングされたことを検証できます。
重要
データ損失の可能性や古いデータの読み取りを防ぐため、クラスターが正常でアクセス可能であることを確認するまで、アプリケーションはクラスターへの読み取りと書込みを開始しないでください。