アプリケーションデータベースは、MongoDB Ops Managerの設定、操作履歴、バックアップメタデータを保存します。アプリケーションデータベースを外部アプリケーションデータベースとして配置すると、Kubernetes 演算子はそれを標準のMongoDBカスタムリソースとしてマネージドします。つまり、MongoDB Ops Managerは、Kubernetes 演算子がマネージドする他のMongoDB配置と同様に、それをバックアップおよび復元できます。
外部アプリケーションデータベースを配置するには、次の手順を参照してください。
アプリケーションデータベースをバックアップする理由
内部でマネージドされたアプリケーションデータベースを持つMongoDB Ops Managerの配置は、アプリケーションデータベースをMongoDB Ops Managerのカスタムリソース内に保存します。そこには標準のバックアップツールではアクセスできません。MongoDB Ops Manager自体が失敗すると、それがマネージドする配置の制御を失う可能性があります。
外部のアプリケーションデータベースをバックアップすることで、以下のニーズに対応できます。
障害復旧データ損失、データの破損、または構成変更の失敗が発生した後に、アプリケーションデータベースを復元します。
運用上のセーフティネット。エラーのある一括書き込み (write)を、発生前の状態に戻します。
リカバリ目的の低下。継続的なoplogキャプチャにより、スナップショット間で変更が保持されるため、リカバリ点目的を低下させることができます。
アプリケーションデータベースのバックアップで提供されるもの
MongoDB Ops Manager は、アプリケーションデータベースのデータと oplog エントリの連続ストリームをコピーして保持します。これにより、次のことが可能になります。
アプリケーションデータベースの完全なスナップショットを、新規または既存の配置に復元します。
スナップショット間の任意の時点へアプリケーションデータベースを復元するには、oplog を選択したタイムスタンプへリプレイします。
バックアップ スナップショットを復元することなくクエリする。詳細については、MongoDB Ops Manager リソースのクエリ可能なバックアップを構成するを参照してください。
保持要件とコンプライアンス要件を満たします(オプションでイミュータブルスナップショットを使用)。
アーキテクチャ
外部アプリケーションデータベース配置では、以下のリソースを使用します。
Resource | 説明 |
|---|---|
マネジメント MongoDB Ops Manager | 独自の内部マネージドアプリケーションデータベースを持つ MongoDB Ops Manager リソース。マネジメント MongoDB Ops Manager インスタンスは、あなたのデータベースを管理しません。外部アプリケーションデータベースを含むプロジェクトを管理し、プライマリ MongoDB Ops Manager インスタンスを失った場合はリカバリエンジンとして機能します。別の障害ドメインに配置します。たとえば、別のアベイラビリティーゾーンに配置するなどです。 |
外部アプリケーションデータベース | が に設定されているMongoDBまたは MongoDB MultiClusterリソース。詳細については、 |
プライマリ MongoDB Ops Manager | データベースを管理するMongoDB Ops Managerリソース。 |
新しい MongoDB Ops Manager インスタンスはアプリケーションデータベースなしでは起動できず、spec.role が AppDB に設定された MongoDB リソースは利用可能な MongoDB Ops Manager インスタンスなしでは調整できないため、マネジメント MongoDB Ops Manager インスタンスは外部アプリケーションデータベースの前提条件となります。外部アプリケーションデータベースを配置する前に、それを配置してください。
プライマリ MongoDB Ops Manager インスタンスを失った場合は、マネジメント MongoDB Ops Manager インスタンスを使用して外部アプリケーションデータベースを復元し、次に、復元されたアプリケーションデータベースに対してプライマリ MongoDB Ops Manager インスタンスを再作成し、その後、MongoDB ワークロードを復元します。
マルチクラスター外部アプリケーション データベース
外部のアプリケーション データベースを MongoDB MultiClusterリソースとして配置して、アプリケーション データベース ノードを複数のKubernetesクラスターに分散できます。 Kubernetes Operator は、 という名前のメンバークラスターごとに 1 つのアプリケーション データベース <primary-om-name>-db-<cluster-index>ステートメントを作成し、プライマリ Ops Managerリソースは、spec.externalApplicationDatabaseRef を種類MongoDBMultiCluster に設定してそれを参照します。
マルチクラスターの外部アプリケーションデータベースでは、ノードクラスター間の TLS暗号化とクロスクラスターネットワークが必要です。このネットワークは、 Istio などのサービス キャッシュを使用して提供することも、サービス キャッシュなしで提供することもできます。サービス メッシュのない配置については、「 サービス メッシュを使用しないマルチクラスター Ops Manager 」を参照してください。詳細については、「 マルチクラスターの外部アプリケーション データベースの配置 」を参照してください。
バックアップと外部アプリケーションデータベース
MongoDB Ops Managerは、バックアップのメタデータをアプリケーションデータベースに保存します。MongoDB Ops Managerアプリケーションとバックアップデーモンはどちらも、アプリケーションデータベースに接続します。spec.externalApplicationDatabaseRefを使用して外部アプリケーションデータベースを参照する場合、Kubernetes演算子がこの接続を取り扱います。
Kubernetes Operator は、参照先のMongoDBリソースの TLS 構成と CA を解決し、それを Ops Managerステートメントとバックアップデーモンのステートメントの両方に適用します。バックアップデーモンは、 TLS 対応の外部アプリケーション データベースを、内部で管理されているアプリケーション データベースと同様に信頼します。
バックアップデーモンは、Kubernetes Operator が Ops Manager アプリケーション用に計算するのと同じ接続文字列を使用して接続します。
バックアップの有効化は変わりません。プライマリ MongoDB Ops Manager リソースで spec.backup.enabled を設定します。これは、内部でマネージドされているアプリケーションデータベースの場合と同様です。唯一の違いは、アプリケーションデータベースが実行される場所です。
外部アプリケーションデータベース自体をバックアップするには、マネジメント MongoDB Ops Manager インスタンスがマネージドするプロジェクト内の、それを表す MongoDB リソースでバックアップを有効にします。詳細は、MongoDB データベース バックアップの設定を参照してください。
移行注釈
内部でマネージドされているアプリケーションデータベースと外部のアプリケーションデータベースの間の移行中、Kubernetes 演算子は、アプリケーションデータベース StatefulSet に annotation を設定し、StatefulSet がオーナーを変更する準備ができていることをレコードします。Kubernetes 演算子は、これらのアノテーションを設定し、読み取ります。自分で設定しないでください。
マルチクラスター配置では、 Kubernetes Operator は各ノードクラスターのアプリケーションデータベースステートメントセットにこれらの注釈を適用します。 Kubernetes Operator は、所有者参照ではなく、 ラベルを使用して、各ノードクラスターの StateftSetmongodbmulticluster の所有権を追跡します。ノード クラスター内のステートメント セットは、中央クラスター内のリソースへの所有者参照を保持できません。
注釈 | 説明 |
|---|---|
| MongoDBリソースが所有権を取得できるように、MongoDB Ops ManagerリソースがStatefulSetを解放しました。内部でマネージドされているアプリケーションデータベースから外部のアプリケーションデータベースに移行する場合、Kubernetes演算子はこのアノテーションを設定します。詳細については、「アプリケーションデータベースの外部配置への移行」を参照してください。 |
| MongoDBリソースはStatefulSetを解放し、MongoDB Ops Managerリソースがそれを再利用できるようにしました。外部アプリケーションデータベースを内部マネジメントに戻すと、Kubernetes演算子がこのアノテーションを設定します。詳細については、「外部アプリケーションデータベースをMongoDB Ops Managerに戻す」を参照してください。 |
要件
外部アプリケーションデータベースをバックアップする前に、次のタスクを実行してください。
プライマリ MongoDB Ops Manager リソース用に外部アプリケーションデータベースを構成します。詳細を学ぶには、「外部アプリケーションデータベースを使用して MongoDB Ops Manager を配置する」または「アプリケーションデータベースを外部配置に移行する」を参照してください。
MongoDB Ops Manager リソース用に Kubernetes 演算子が作成する暗号化のキーのシークレットをバックアップします。Kubernetes 演算子はこのシークレットに
<om-resource-name>-gen-keyと名付けます。そして、MongoDB Ops Manager はこれがないとアプリケーションデータベースを読み取ることができません。詳細を学ぶには、暗号化のキーを参照してください。マネジメント MongoDB Ops Manager インスタンス用のスナップショット ストレージを設定します。詳細を学ぶには、ファイル システム バックアップ 保存 (する)を Kubernetes 演算子を使用して構成する。を参照してください。
制限
外部アプリケーションデータベースのバックアップには、次の制限があります。
この機能は、アプリケーションデータベース以外のMongoDB Ops Managerの状態をバックアップまたは復元しません。
この機能では、Ops Manager を使用して管理する MongoDB 配置のバックアップまたは復元する方法に変更はありません。
Kubernetes 演算子は、外部アプリケーションデータベースに対する
automationConfigの上書きをサポートしていません。MongoDB リソースには同等の設定がないためです。Kubernetes Operator は、外部アプリケーションデータベースへの移行中に
spec.applicationDatabase.passwordSecretKeyRefをサポートしません。Kubernetes 演算子は新しいパスワードを生成し、提供したパスワードをローテーションします。既存のMongoDB配置を外部アプリケーションデータベースとして参照する場合、その配置の日常のマネジメントについて責任を負うことになります。Kubernetes 演算子は、MongoDB リソース構成と内部でマネージドされているアプリケーションデータベース構成を調整するツールを提供していません。その設定はあなた自身で指定する必要があります。