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

自己管理型シャーディングされたクラスターを WiredTiger に変更

注意

WiredTiger にアップグレードする必要があります。 MongoDB は バージョン4.2 700} で非推奨の MMAPv 1ストレージ エンジンを削除しました。

このチュートリアルを使用して、シャーディングされたクラスターを更新し、 WiredTiger を使用します。

シャードのホストまたはポートを変更する場合は、シャード構成も更新する必要があります。

WiredTiger で使用可能な "majority"読み取り保証(read concern)はデフォルトで有効になっています。 ただし、プライマリ セカンダリ アービタ(PSA)アーキテクチャを持つ 3 ノードのシャード レプリカセットがある場合は、そのシャード レプリカセットの"majority"読み取り保証を無効にできます。 3 ノードの PSA アーキテクチャで"majority"を無効にすると、キャッシュ負荷が増大する可能性が回避されます。

注意

"majority"読み取り保証(read concern)を無効にしても、変更ストリームの可用性には影響しません。

"majority"読み取り保証(read concern)を無効にすると、インデックスを変更するcollModコマンドがロールバックされなくなります。 このような操作をロールバックする必要がある場合は、影響を受けるノードをプライマリノードと再同期する必要があります。

"majority"読み取り保証を無効にすると、シャーディングされたクラスターでのトランザクションのサポートに影響します。 具体的な説明は以下の通りです。

  • 読み取り保証 ( read"snapshot" concern) "majority" を無効 にしたシャードがトランザクションに含まれている場合、そのトランザクションは読み取り保証 を使用できません。

  • 複数のシャードに書込むトランザクションでは、トランザクションの読み取りまたは書込み操作のいずれかに、読み取り保証(read concern)が無効になっているシャードが含まれている場合、エラーが発生し"majority"

ただし、レプリカセットのトランザクションには影響しません。 レプリカセット上のトランザクションでは、読み取り保証 が無効になっていても、分散トランザクションに読み取り保証"majority" (または"snapshot" または"local" "majority")を指定できます。

PSA アーキテクチャと読み取り保証(read concern) "majority"の詳細については、「プライマリとセカンダリ、アービタ レプリカセット 」を参照してください。

MongoDB バイナリ(mongodmongos)は、デフォルトで localhost にバインドされます。

コンフィギュレーションサーバーは レプリカセット (CSRS) としてデプロイする必要があります。 そのため、コンフィギュレーションサーバーはすでに WiredTiger ストレージ エンジンを使用しています。

WiredTiger storage engine では、データを保持するノードに XFS を使用することが Linux で推奨されます。 詳細については、「カーネルとファイル システム 」を参照してください。

WiredTiger にアップグレードすると、WiredTiger の配置次の MMAPv1 のみの制限の対象となります。

MMAPv1 の制限
簡単な説明
名前空間の数
MMAPv1 の場合、名前空間の数は名前空間ファイルのサイズを 628 で割った値に制限されます。
名前空間ファイルのサイズ
MMAPv1 の場合、名前空間ファイルは 2047 メガバイトを超えることはできません。
データベース サイズ
MMAPv1 ストレージ エンジンにより、各データベースのデータファイル数は 16000 以下に制限されます。
dataSize
MMAPv1 の場合、単一のmongodインスタンスでは、基礎のオペレーティング システムが提供する最大仮想メモリ アドレス領域を超えるデータセットを管理できません。
データベース内のコレクションの数
MMAPv1 storage engine の場合、データベース内のコレクションの最大数は、名前空間ファイルのサイズとデータベース内のコレクションのインデックス数の関数です。

各 レプリカセットシャードで、ストレージ エンジンを WiredTiger に変更するには、次の手順を行います。

セカンダリ ノードを一度に 1 つずつ更新します。

1

mongoshで、セカンダリをシャットダウンします。

use admin
db.shutdownServer()
2

WiredTiger ストレージ エンジンで実行される新しいmongodインスタンス用のデータディレクトリを準備します。 mongodには、このディレクトリに対する読み取りと書込みの権限が必要です。 停止したセカンダリ ノードの現在のデータ ディレクトリの内容を削除するか、新しいディレクトリを完全に作成できます。

mongod では、WiredTiger は、別のストレージ エンジンで作成されたデータ ファイルでは起動しません。

3

MMAPv 1構成オプションをmongodインスタンス構成から削除します。

4

mongod} として を指定し、wiredTiger として--storageEngine WiredTiger 用に準備されたデータ ディレクトリを指定して、--dbpath を起動します。

必要に応じて、 --bind_ipなどの追加オプションを指定します。

警告

非ローカルホスト(例: (一般にアクセス可能な)IP アドレスを使用して、クラスターを不正アクセスから保護していることを確認します。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>

重要

3 メンバーの PSA アーキテクチャを実行している場合は、読み取り保証majorityを無効にするために--enableMajorityReadConcern falseを含めます。 「 PSA 3ノードのアーキテクチャ」を参照してください。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false

--dbpathにデータが存在しないため、 mongod最初の同期を実行します。 最初の同期の長さは、データベースのサイズとレプリカセットのノード間のネットワーク接続によって異なります。

構成ファイルでオプションを指定することもできます。 ストレージ エンジンを指定するには、 storage.engine設定を使用します。

残りのセカンダリ ノードに対して手順を繰り返し、一度に 1 つずつ更新します。

すべてのセカンダリ ノードが WiredTiger にアップグレードされたら、 mongoshをプライマリに接続し、 rs.stepDown()を使用してプライマリを降格し、新しいプライマリ選挙を強制します。

rs.stepDown()

プライマリが降格してセカンダリになったら、セカンダリを更新して、以前のように WiredTiger を使用します。

1

mongoshで、セカンダリをシャットダウンします。

use admin
db.shutdownServer()
2

WiredTiger ストレージ エンジンで実行される新しいmongodインスタンス用のデータディレクトリを準備します。 mongodには、このディレクトリに対する読み取りと書込みの権限が必要です。 停止したセカンダリ ノードの現在のデータ ディレクトリの内容を削除するか、新しいディレクトリを完全に作成できます。

mongod では、WiredTiger は、別のストレージ エンジンで作成されたデータ ファイルでは起動しません。

3

MMAPv 1構成オプションをmongodインスタンス構成から削除します。

4

mongod} として を指定し、wiredTiger として--storageEngine WiredTiger 用に準備されたデータ ディレクトリを指定して、--dbpath を起動します。

必要に応じて、 --bind_ipなどの追加オプションを指定します。

警告

非ローカルホスト(例: (一般にアクセス可能な)IP アドレスを使用して、クラスターを不正アクセスから保護していることを確認します。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>

重要

3 メンバーの PSA アーキテクチャを実行している場合は、読み取り保証majorityを無効にするために--enableMajorityReadConcern falseを含めます。 「 PSA 3ノードのアーキテクチャ」を参照してください。

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false

--dbpathにデータが存在しないため、 mongod最初の同期を実行します。 最初の同期の長さは、データベースのサイズとレプリカセットのノード間のネットワーク接続によって異なります。

構成ファイルでオプションを指定することもできます。 ストレージ エンジンを指定するには、 storage.engine設定を使用します。

他のシャードに対しても同じ手順を繰り返します。

戻る

自己管理型レプリカセットを WiredTiger に変更