自己管理型シャーディングされたクラスターを WiredTiger に変更
注意
WiredTiger にアップグレードする必要があります。 MongoDB は バージョン4.2 700} で非推奨の MMAPv 1ストレージ エンジンを削除しました。
このチュートリアルを使用して、シャーディングされたクラスターを更新し、 WiredTiger を使用します。
Considerations
ダウンタイム
シャードのホストまたはポートを変更する場合は、シャード構成も更新する必要があります。
PSA 3ノードのアーキテクチャ
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"
の詳細については、「プライマリとセカンダリ、アービタ レプリカセット 」を参照してください。
ローカルホストへのデフォルトのバインド
コンフィギュレーションサーバー
コンフィギュレーションサーバーは レプリカセット (CSRS) としてデプロイする必要があります。 そのため、コンフィギュレーションサーバーはすでに WiredTiger ストレージ エンジンを使用しています。
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 に変更するには、次の手順を行います。
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 にアップグレードされたら、 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
設定を使用します。
他のシャードに対しても同じ手順を繰り返します。