バックアップとデータアーカイブに関しては、IT部門は、より厳しいサービスレベル契約を満たし、より多くのカスタムレポートを提供し、日々のアーカイブとバックアップタスクを管理し続けながら、コンプライアンス要件の拡大に準拠する必要があります。間違いなく、データベースサーバーは企業の最も価値のある情報のいくつかを保存します。事故やハードウェア障害が発生した場合にデータが失われるのを防ぐために、信頼性の高いデータベースバックアップを保証することは、重要なチェックボックスです。
しかし、すべてのデータが単一のデータセンターにある場合、または地理的位置に近いデータセンターにある場合でも、真にDRにする方法はありますか?さらに、24時間年中無休の高負荷サーバーでもトランザクション量の少ない環境でも、運用環境でサーバーのパフォーマンスを低下させることなく、バックアップをシームレスな手順にする必要があります。
このブログでは、クラウドへのMongoDBバックアップを確認します。クラウドはデータバックアップ業界を変えました。手頃な価格であるため、中小企業にはすべてのデータをバックアップするオフサイトソリューションがあります。
mongoサービスを使用して安全なMongoDBバックアップを実行する方法と、データベースのディザスタリカバリオプションを拡張するために使用できるその他の方法を紹介します。
サーバーまたはバックアップ先がパブリッククラウド、ホスティングプロバイダーなどの公開されたインフラストラクチャにある場合、または信頼できないWANネットワークを介して接続されている場合は、バックアップポリシーで追加のアクションを検討する必要があります。 MongoDBのデータベースバックアップを実行する方法はいくつかあり、バックアップの種類に応じて、リカバリ時間、サイズ、およびインフラストラクチャオプションが異なります。クラウドストレージソリューションの多くは、APIフロントエンドが異なる単なるストレージであるため、バックアップソリューションは少しのスクリプトで実行できます。では、プロセスをスムーズかつ安全にするために必要なオプションは何ですか?
MongoDBバックアップ暗号化
セキュリティは、ITチームが行うすべてのアクションの中心にある必要があります。バックアップデータのセキュリティを強化するために、暗号化を適用することは常に良い考えです。暗号化を実装する簡単な使用例は、パブリッククラウドにあるオフサイトのバックアップストレージにバックアップをプッシュする場合です。
暗号化されたバックアップを作成する場合、覚えておくべきことの1つは、通常、回復に時間がかかることです。バックアップは、リカバリアクティビティの前に復号化する必要があります。データセットが大きい場合、RTOに遅延が生じる可能性があります。
一方、暗号化に秘密鍵を使用している場合は、鍵を安全な場所に保管してください。秘密鍵が欠落している場合、バックアップは役に立たず、回復できません。キーが盗まれた場合、同じキーを使用して作成されたすべてのバックアップは、保護されなくなるため、危険にさらされます。人気のあるGnuPGまたはOpenSSLを使用して、秘密鍵または公開鍵を生成できます。
GnuPGを使用してMongoDBdump暗号化を実行するには、秘密鍵を生成し、それに応じてウィザードに従います。
$ gpg --gen-key
通常どおり、プレーンなMongoDBdumpバックアップを作成します。
$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
ダンプファイルを暗号化し、古いプレーンバックアップを削除します。$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz
GnuPGは、暗号化されたファイルに.gpg拡張子を自動的に追加します。復号化するには、--decryptフラグを指定してgpgコマンドを実行するだけです:
$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
OpenSSLを使用して暗号化されたMongoDBdumpを作成するには、秘密鍵と公開鍵を生成する必要があります。OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem
この秘密鍵(dump.priv.pem)は、将来の復号化のために安全な場所に保管する必要があります。 Mongodumpの場合、暗号化されたバックアップは、たとえばコンテンツをopensslにパイプすることで作成できます
mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem
復号化するには、秘密鍵(dump.priv.pem)を-decryptフラグと一緒に使用します。DEM -inkey dump.priv.pem -out db1.tar.gz
MongoDBバックアップ圧縮
データベースクラウドバックアップの世界では、圧縮は親友の1つです。ストレージスペースを節約できるだけでなく、データのダウンロード/アップロードに必要な時間を大幅に短縮できます。
アーカイブに加えて、gzipを使用した圧縮のサポートも追加しました。これは、mongodumpとmongorestoreの両方に新しいコマンドラインオプション「--gzip」が導入されたことで明らかになりました。圧縮は、ディレクトリとアーカイブモードを使用して作成されたバックアップの両方で機能し、ディスクスペースの使用量を削減します。
通常、MongoDBダンプはフラットテキストファイルであるため、最高の圧縮率を実現できます。圧縮ツールと比率に応じて、圧縮されたMongoDBdumpは元のバックアップサイズの最大6分の1になる可能性があります。バックアップを圧縮するには、MongoDBdump出力を圧縮ツールにパイプして、宛先ファイルにリダイレクトします
圧縮バックアップを使用すると、データセットによっては、元のバックアップサイズの最大50%を節約できます。
mongodump --db country --gzip --archive=country.archive
クラウドバックアップの優れたオプションは、バックアップを実行するときにネットワークストリーミング帯域幅(Mb / s)を制限することです。あなたはpvツールでそれを達成することができます。 pvユーティリティには、データ修飾子オプション-L RATE、-rate-limit RATEが付属しており、転送を1秒あたり最大RATEバイトに制限します。以下の例では、2MB/秒に制限されます。
$ pv -q -L 2m
MongoDBバックアップをクラウドに転送する
これで、バックアップが圧縮されて保護(暗号化)されると、転送の準備が整います。
Google Cloud
gsutilコマンドラインツールは、Google Cloud Storageのストレージバケットを管理、監視、使用するために使用されます。 gcloud utilを既にインストールしている場合は、gsutilがすでにインストールされています。それ以外の場合は、ここからLinuxディストリビューションの指示に従ってください。
gcloud CLIをインストールするには、次の手順に従います。
curl https://sdk.cloud.google.com | bash
シェルを再起動します:exec -l $SHELL
gcloud initを実行してgcloud環境を初期化します:gcloud init
gsutilコマンドラインツールをインストールして認証し、現在のプロジェクトにMongoDB-backups-storageという名前の地域ストレージバケットを作成します。gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://MongoDB-backups-storage/
Amazon S3
RDSを使用してデータベースをホストしていない場合は、独自のバックアップを実行している可能性が非常に高くなります。 AmazonのAWSプラットフォームであるS3(Amazon Simple Storage Service)は、データベースのバックアップやその他のビジネスクリティカルなファイルを保存するために使用できるデータストレージサービスです。 Amazon EC2インスタンスまたはオンプレミス環境のいずれかで、サービスを使用してデータを保護できます。
バックアップはWebインターフェイスを介してアップロードできますが、専用のs3コマンドラインインターフェイスを使用して、コマンドラインおよびバックアップ自動化スクリプトを介してバックアップを実行できます。バックアップを非常に長期間保持する必要があり、リカバリ時間が問題にならない場合は、バックアップをAmazon Glacierサービスに転送して、はるかに安価な長期ストレージを提供できます。ファイル(Amazonオブジェクト)は、bucketという名前の巨大なフラットコンテナに論理的に保存されます。 S3は、その内部へのRESTインターフェースを提供します。このAPIを使用して、バケットとオブジェクトでCRUD操作を実行したり、両方の権限と構成を変更したりできます。
Linux、Windows、およびmacOSでのAWS CLIの主な配布方法は、Pythonのパッケージマネージャーであるpipです。手順については、こちらをご覧ください。
aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
デフォルトでは、S3は11個の9sオブジェクトの耐久性を提供します。つまり、1.000.000.000(10億)個のオブジェクトを格納すると、平均して10年ごとに1個のオブジェクトが失われると予想できます。 S3が印象的な数の9を実現する方法は、オブジェクトを複数のアベイラビリティーゾーンに自動的に複製することです。これについては、別の投稿で説明します。アマゾンには、世界中に地域のデータセンターがあります。 MicrosoftAzureストレージ
MicrosoftのパブリッククラウドプラットフォームであるAzureには、制御ラインインターフェイスを備えたストレージオプションがあります。情報はここにあります。オープンソースのクロスプラットフォームのAzureCLIは、Azureプラットフォームを操作するための一連のコマンドを提供します。豊富なデータアクセスなど、Azureポータルに見られる機能の多くを提供します。
AzureCLIのインストールは非常に簡単です。手順についてはこちらをご覧ください。以下に、バックアップをMicrosoftストレージに転送する方法を示します。
az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup
MongoDBバックアップ用のハイブリッドストレージ
パブリックおよびプライベートクラウドストレージ業界の成長に伴い、ハイブリッドストレージと呼ばれる新しいカテゴリがあります。一般的なアプローチは、ローカルディスクドライブにデータを短期間保持し、クラウドバックアップストレージを長期間保持することです。多くの場合、バックアップの保持期間を長くする必要があるのは、さまざまな業界の法的義務(接続メタデータを保存する必要があるテレコムなど)によるものです。このテクノロジーにより、ファイルをローカルに保存し、変更をクラウドのリモートに自動的に同期できます。このようなアプローチは、高速復元(RTOの低下)とビジネス継続性の目標のために、最近のバックアップをローカルに保存する必要があるためです。
リソースを効率的に使用するための重要な側面は、バックアップを個別に保持することです。冗長ディスクドライブにローカルに保存されるデータはより短い期間保持され、クラウドバックアップストレージはより長い時間保持されます。多くの場合、バックアップの保持期間を長くする必要があるのは、さまざまな業界の法的義務(接続メタデータを保存する必要があるテレコムなど)によるものです。
Google Cloud Services、Microsoft Azure、Amazon S3などのクラウドプロバイダーはそれぞれ、実質的に無制限のストレージを提供し、ローカルスペースの必要性を減らします。これにより、ローカルディスクスペースを気にせずに必要な限り、バックアップファイルをより長く保持できます。
ClusterControlバックアップ管理-ハイブリッドストレージ
ClusterControlを使用してバックアップをスケジュールする場合、各バックアップ方法は、バックアップの実行方法に関する一連のオプションを使用して構成できます。ハイブリッドクラウドストレージにとって最も重要なものは次のとおりです。
- ネットワークスロットリング
- 組み込みのキー管理による暗号化
- 圧縮
- ローカルバックアップの保持期間
- クラウドバックアップの保存期間
ClusterControlは、クラウド、並列圧縮、ネットワーク帯域幅制限、暗号化のための高度なバックアップ機能を備えています、など。あなたの会社は、増大するストレージのニーズに対して、クラウドのスケーラビリティと従量制の価格設定を利用できます。バックアップ戦略を設計して、データセンターにローカルコピーを提供し、すぐに復元できるようにすることと、AWS、Google、Azureからのクラウドストレージサービスへのシームレスなゲートウェイを提供することができます。
高度なTLSおよびAES 256 -ビット暗号化および圧縮機能は、クラウドで占めるスペースを大幅に削減する安全なバックアップをサポートします。