sql >> データベース >  >> NoSQL >> MongoDB

シャードクラスターのMongoDBバックアップ管理のヒント

    データベースの適切なバックアップを作成することは重要なタスクです。データベースサービス用にMongoDBの高可用性アーキテクチャを設定するだけでなく、災害時にデータの可用性を確保するためにデータベースのバックアップを作成する必要もあります。たとえば、本番データベースから誤って一部のデータを削除した場合、データベースの観点からデータを復元する唯一の方法は、バックアップから復元することです。

    最近、ClusterControlは、Perconaによって開発されたPercona BackupforMongoDBと呼ばれる新しいバックアップ方法のサポートを開始しました。 MongoDBレプリカセットとシャードクラスターの一貫したバックアップを実行できます。

    このブログでは、MongoDBレプリカセットとシャードクラスターのバックアップ管理について説明します。

    高可用性アーキテクチャでのMongoDBバックアップ

    ClusterControlは、mongodump、mongodb整合性、およびMongodbのPerconaバックアップの3つのバックアップ方法をサポートしています。 mongodb整合バックアップは、バックアップ方法としてmongodumpユーティリティを使用しており、バックアップはmongorestoreを使用して復元できます。

    最新のサポートされているバックアップ方法は、レプリカセットとシャードクラスターの一貫したポイントインタイムバックアップのためのMongodbのPercona Backupです。これには、すべてのノードまたはレプリカセットまたはシャードノードと管理ノードで実行するエージェントが必要です。ここで説明されているシャードクラスターの場合。

    ClusterControlでMongodbのPerconaBackupを使用して、一貫性のあるバックアップを構成およびスケジュールするのは非常に簡単です。 [バックアップ]ページに移動し、MongodbのPerconaバックアップを構成します。前提条件は、各ノードでPercona Backup for MongoDBを実行することです。これは、ClusterControlからインストールすることもできます。

    以下のようにバックアップをスケジュールする前に、まずMongoDBエージェント用のPerconaバックアップをインストールする必要があります。

    次に、バックアップディレクトリを構成します。バックアップディレクトリは、以下とまったく同じマウントパスですべてのノードにマウントされた共有ディスクである必要があることに注意してください。

    システムに共有ディスクの種類がない場合は、 NFSを使用してこれを実現できます。 NFSサーバーを構成するには、バックアップを保存するのに十分な空き領域がある専用サーバー/仮想マシンが必要です。以下のように、サーバーにnfs-utilsおよびnfs-utils-libライブラリをインストールします(CentOSベースを使用していると仮定します):

    [[email protected] ~]# yum install nfs-utils nfs-utils-lib
    
    [[email protected] ~]# yum install portmap
    そしてポートマップとnfsサービスを開始します。

    [[email protected] ~]# /etc/init.d/portmap start
    
    [[email protected] ~]# /etc/init.d/nfs start

    その後、以下に示すように/ etc/exportsに新しいエントリを追加します。

    [[email protected] ~]# vi /etc/exports
    
    /backup 10.10.10.11(rw,sync,no_root_squash)

    データベースノードでは、ストレージディスクを共有ストレージとしてマウントする必要があります。

    最後に、インストールボタンをクリックするだけで、新しいジョブがトリガーされ、各ノードでエージェントが構成されます。

    すべてのPBMggentがインストールされたら、バックアップ方法を構成できます。以下のようにクラスター化します:

    物理バックアップと論理バックアップ

    MongoDBバックアップは、論理バックアップと物理バックアップをサポートしています。 mongodbパッケージをインストールすると、mongodumpユーティリティを使用した論理バックアップの方法が含まれます。 Mongodumpにはmongodbデータベースへのアクセスが必要であるため、バックアップロール権限を持つmongodumpの資格情報アクセスが必要であり、データベースをバックアップするための付与検索アクションが必要です。

    BSONデータダンプ形式で機能します。mongodumpは、提供された資格情報を使用してデータベースに接続し、データベース内のデータ全体を読み取り、データをファイルにダンプします。シングルスレッドプロセスであるため、特にデータベースのサイズが大きい場合は、バックアップに時間がかかります。 Mongodumpは、シャード全体のトランザクションのアトミック性を維持しません。そのため、シャードクラスターでmongodbバージョン4.2以降のバックアップ戦略として使用することはできません。 Percona Backup for MongoDBは論理バックアップですが、クラスターの一貫したバックアップをサポートしています。

    MongoDBの物理バックアップは、mongodbファイルシステムのスナップショットを介して機能します。これは、基盤となるmongodbファイルをmongodbデータベースのベースバックアップとして別の場所にコピーします。ディスクレイアウトとデバイスを管理するためのソフトウェアとしてLVM(Logical Volume Manager)を使用する場合、またはソフトウェアアプライアンスを使用する場合、ファイルシステムスナップショットはオペレーティングシステムです。ベリタス、またはネットアップバックアップ。バックアップの一貫性を保つために、ファイルシステムスナップショットを実行する前に、mongodbの変更アクティビティログであるジャーナリングを有効にする必要があります。

    ファイルシステムのスナップショットのほかに、cpまたはrsyncコマンドを使用してMongoDBデータファイルをコピーすることもできますが、データファイルのコピープロセスは不可分操作ではないため、mongodbへの書き込みプロセスを停止する必要があります。バックアップは、レプリカセットまたはシャードクラスターアーキテクチャのポイントインタイムリカバリには使用できません。

    Percona Backup for MongoDBは、各ノードにインストールする必要のあるpbm-agentと、バックアップを相互作用して実行するためのコマンドラインインターフェイスとしてのpbmの2つのコンポーネントで構成されています。データベースノードとバックアップおよび復元プロセスの実行。 pbm-agentは、バックアップを取るのに最適なノードを決定します。

    PITRバックアップ

    多くのデータベースシステムでは、チェックポイントを使用してデータをディスクにフラッシュするのが一般的です。 MongoDBは、WiredTigerストレージエンジンをデフォルトのストレージエンジンとして使用し、チェックポイントを使用してデータの一貫したビューを提供します。それだけでなく、MongoDBのチェックポイントを使用して、最後のチェックポイントから回復することができます。ジャーナリングは各チェックポイント間で機能します。ジャーナリングは、チェックポイント間でいつでも発生する予期しない停止から回復するために必要です。ジャーナル処理により、書き込み操作がディスクに記録されることが保証されます。MongoDBは、変更されたバイトやディスクの場所など、変更ごとにジャーナルエントリを作成します。

    Mongodumpとmongorestoreは、ポイントインタイムリカバリバックアップに使用できます。oplogを活用するオプションがあります。 oplogは、MongoDBの上限付きコレクションであり、すべての書き込みトランザクション(挿入、更新、削除など)のコレクション内のすべての変更を追跡します。したがって、ポイントインタイムリカバリを実行する場合は、最後の完全バックアップから復元し、oplogファイルを使用して、リカバリする正確な時間に変更を適用する必要があります。使用できるもう1つのツールは、MongoDB用のPerconaバックアップです。プロセスはmongodumpと似ています。バックアップから復元してから、oplogを適用する必要があります。

    結論

    特にクラスター化されたMongoDBセットアップ(レプリカセットまたはシャードクラスター)では、一貫性のあるバックアップを取ることが重要です。 ClusterControlは、クラスター内でMongoDBのPerconaバックアップを構成し、バックアップをスケジュールする簡単な方法を提供します。


    1. MongoDBの集計フレームワークで移動平均?

    2. 最もよく知られているNoSQLシステム間の主な違い/機能

    3. データの複数のバージョンをRedisキャッシュに保存する

    4. MongoDB:locale ::facet ::_S_create_c_locale名が無効です