自己管理型セカンダリのアービタへの変換
レプリカセット に セカンダリ があり、データを保持する必要がなくなり、セットが プライマリ を選択 できるようにするにはセット内に残っている必要がある場合は、次のいずれかの手順を使用してセカンダリを アービタ に変換できます。チュートリアル。どちらの手順も操作上では同等です。
アービタは、以前のセカンダリと同じポートで動作できます。 この手順では、セカンダリをシャットダウンしてそのデータを削除してから、セカンダリを再起動してアービタとして再構成する必要があります。
この手順については、「 セカンダリをアービタに変換し、ポート番号を再利用する 」を参照してください。
新しいポートでアービタを実行します。 この手順では、セカンダリとして実行中の インスタンスをシャットダウンする前に、サーバーをアービタとして再構成することができます。
この手順については、「新しいポート番号で実行されているセカンダリをアービタに変換 」を参照してください。
セカンダリをアービタに変換し、ポート番号を再利用する
アプリケーションがセカンダリに直接接続している場合は、アプリケーションを変更して、MongoDB クエリがセカンダリに到達しないようにします。
セカンダリをシャットダウンします。
メソッドを呼び出して、 レプリカセット から
rs.remove()
セカンダリ を削除します。の現在の プライマリmongosh
に接続している間にこの操作を実行します。rs.remove("<hostname><:port>") mongosh
でrs.conf()
メソッドを呼び出して、レプリカセットにセカンダリが含まれなくなったことを確認します。rs.conf() セカンダリのデータ ディレクトリをアーカイブ フォルダーに移動します。 例:
mv /data/db /data/db-old 注意
任意
代わりにデータを削除できます。
mongod
インスタンスの再起動時にポイントする新しい空のデータディレクトリを作成します。 以前の名前を再利用できます。 例:mkdir /data/db ポート番号、空のデータディレクトリ、レプリカセットを指定して、セカンダリの
mongod
インスタンスを再起動します。 以前に使用していたポート番号を使用できます。 次のようなコマンドを発行します。警告
インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。
mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> mongosh
で、rs.addArb()
メソッドを使用してセカンダリをアービタに変換します。rs.addArb("<hostname><:port>") rs.conf()
mongosh
で メソッドを呼び出して、アービタがレプリカセットに属していることを確認します。rs.conf() アービタ ノードには以下を含める必要があります。
"arbiterOnly" : true
新しいポート番号で実行中のセカンダリをアービタに変換
アプリケーションがセカンダリに直接接続している場合、またはセカンダリを参照する接続stringがある場合は、アプリケーションを変更して、 MongoDBクエリがセカンダリに到達しないようにします。
新しいポート番号で使用する新しい空のデータディレクトリを作成します。 例:
mkdir /data/db-temp 新しいデータディレクトリと既存のレプリカセットを指定して、新しいポート番号で新しい
mongod
インスタンスを起動します。 次のようなコマンドを発行します。警告
インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。
mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> mongosh
現在のプライマリに接続されている で、 メソッドを使用して新しいmongod
インスタンスをアービタに変換します。rs.addArb()
rs.addArb("<hostname><:port>") rs.conf()
mongosh
で メソッドを呼び出して、アービタがレプリカセットに追加されていることを確認します。rs.conf() アービタ ノードには以下を含める必要があります。
"arbiterOnly" : true セカンダリをシャットダウンします。
レプリカセット から セカンダリ を削除するには、 で メソッドを呼び出します。
rs.remove()
mongosh
rs.remove("<hostname><:port>") レプリカセットに古いセカンダリが含まれなくなったことを確認するには、
rs.conf()
mongosh
で メソッドを呼び出します。rs.conf() セカンダリのデータ ディレクトリをアーカイブ フォルダーに移動します。 例:
mv /data/db /data/db-old 注意
任意
代わりにデータを削除できます。