自己管理型レプリカセットを WiredTiger に変更
注意
collMod
コマンドのnoPadding
とusePowerOf2Sizes
MMAPv 1オプションが削除されます。WiredTiger にアップグレードする必要があります。 MongoDB は バージョン4.2 700} で非推奨の MMAPv 1ストレージ エンジンを削除しました。
このチュートリアルを使用して、 WiredTigerを使用するようにレプリカセットを更新します。 この手順では、ダウンタイムを回避するために、レプリカセットを順次更新します。
Considerations
レプリカセットには、異なるストレージエンジンを持つノードを含めることができます。 そのため、WiredTiger ストレージ エンジンを使用するようにメンバーをローリング方式で更新できます。
PSA 3ノードのアーキテクチャ
The "majority"
read concern, available for WiredTiger, is enabled by default. ただし、プライマリ セカンダリ アービタ(PSA)アーキテクチャを持つ 3 ノードのレプリカセットでは、 "majority"
読み取り保証(read concern)を無効にできます。 3 ノードの PSA アーキテクチャで"majority"
読み取り保証(read concern)を無効にすると、キャッシュ負荷が増大する可能性が回避されます。
以下の 手順--enableMajorityReadConcern false
では、 "majority"
を含めることで PSA アーキテクチャの 読み取り保証を無効にします。
注意
"majority"
読み取り保証(read concern)を無効にしても、変更ストリームの可用性には影響しません。
PSA アーキテクチャと読み取り保証(read concern) "majority"
の詳細については、「プライマリとセカンダリ、アービタ レプリカセット 」を参照してください。
ローカルホストへのデフォルトのバインド
XFS と WiredTiger
WiredTiger storage engine では、データを保持するノードに XFS を使用することが Linux で推奨されます。 詳細については、「カーネルとファイル システム 」を参照してください。
MMAPv1 のみの制限
WiredTiger にアップグレードすると、WiredTiger の配置は次の MMAPv1 のみの制限の対象となります。
MMAPv1 の制限 | 簡単な説明 |
---|---|
名前空間の数 | MMAPv1 の場合、名前空間の数は名前空間ファイルのサイズを 628 で割った値に制限されます。 |
名前空間ファイルのサイズ | MMAPv1 の場合、名前空間ファイルは 2047 メガバイトを超えることはできません。 |
データベース サイズ | MMAPv1 ストレージ エンジンにより、各データベースのデータファイル数は 16000 以下に制限されます。 |
dataSize | MMAPv1 の場合、単一の mongod インスタンスでは、基礎のオペレーティング システムが提供する最大仮想メモリ アドレス領域を超えるデータセットを管理できません。 |
データベース内のコレクションの数 | MMAPv1 storage engine の場合、データベース内のコレクションの最大数は、名前空間ファイルのサイズとデータベース内のコレクションのインデックス数の関数です。 |
手順
次の手順では、レプリカセットをローリング方式で更新します。 この手順では、最初にセカンダリメンバーを更新し、次にプライマリを降格させ、降格させたメンバーを更新します。
メンバーを WiredTiger に更新するには、手順によってメンバーのデータが削除され、WiredTiger でmongod
が開始され、最初の同期 が実行されます。
A. セカンダリ ノードを WiredTiger に更新します。
セカンダリ ノードを一度に 1 つずつ更新します。
セカンダリ ノードをシャットダウンします。
mongosh
で、セカンダリをシャットダウンします。
use admin db.shutdownServer()
mongod
WiredTigerで実行中される新しい 用のデータディレクトリを準備します。
WiredTiger ストレージ エンジンで実行される新しいmongod
インスタンス用のデータディレクトリを準備します。 mongod
には、このディレクトリに対する読み取りと書込みの権限が必要です。 停止したセカンダリ ノードの現在のデータ ディレクトリの内容を削除するか、新しいディレクトリを完全に作成できます。
mongod
では、WiredTiger は、別のストレージ エンジンで作成されたデータ ファイルでは起動しません。
WiredTiger の更新構成。
MMAPv 1構成オプションをmongod
インスタンス構成から削除します。
mongod
WiredTigerで を開始します。
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 つずつ更新します。
B. プライマリを降格します。
重要
WiredTiger を使用するようにレプリカセットのすべてのノードを更新する場合は、プライマリを更新する前に、まずすべてのセカンダリ メンバーが更新されていることを確認してください。
すべてのセカンダリ ノードが WiredTiger にアップグレードされたら、 mongosh
をプライマリに接続し、 rs.stepDown()
を使用してプライマリを降格し、新しいプライマリ選挙を強制します。
rs.stepDown()
C. 降格したプライマリを更新します。
プライマリが降格してセカンダリになったら、セカンダリを更新して、以前のように WiredTiger を使用します。
セカンダリ ノードをシャットダウンします。
mongosh
で、セカンダリをシャットダウンします。
use admin db.shutdownServer()
mongod
WiredTigerで実行中される新しい 用のデータディレクトリを準備します。
WiredTiger ストレージ エンジンで実行される新しいmongod
インスタンス用のデータディレクトリを準備します。 mongod
には、このディレクトリに対する読み取りと書込みの権限が必要です。 停止したセカンダリ ノードの現在のデータ ディレクトリの内容を削除するか、新しいディレクトリを完全に作成できます。
mongod
では、WiredTiger は、別のストレージ エンジンで作成されたデータ ファイルでは起動しません。
WiredTiger の更新構成。
MMAPv 1構成オプションをmongod
インスタンス構成から削除します。
mongod
WiredTigerで を開始します。
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
設定を使用します。