今日の多くの最新のWebアプリケーション開発者は、プロジェクトでNoSQLデータベースを使用することを選択しており、通常、[MongoDB](https://cloud.tencent.com/product/mongodb?from=10680)が最初の選択肢です。実稼働シナリオでMongoDBを使用する場合、データの損失を防ぐために定期的にバックアップを作成することが非常に重要です。幸い、MongoDBには、バックアップを作成して使用するためのシンプルなコマンドラインツールが用意されています。このチュートリアルでは、これらのツールの使用方法を説明します。
このチュートリアルでは、既存のデータベースを改ざんせずにバックアップがどのように機能するかを理解するために、最初に新しいデータベースを作成し、それに少量のデータを追加する方法について説明します。次に、データベースのバックアップを作成し、データベースを削除し、バックアップを使用して復元します。
続行するには、次のものが必要です。
空のデータベースのバックアップを作成することはあまり役に立ちません。そのため、このステップでは、サンプルデータベースを作成し、それにいくつかのデータを追加します。
MongoDBインスタンスを操作する最も簡単な方法は、 mongo
シェルを使用することです。 mongo
コマンドを使用して開きます。
mongo
MongoDBプロンプトを取得したら、ヘルパー use
を使用して、** myDatabase **という名前の新しいデータベースを作成します。
use myDatabase
output
switched to db myDatabase
MongoDBデータベース内のすべてのデータは、コレクションに属している必要があります。ただし、コレクションを明示的に作成する必要はありません。 insert
メソッドを使用して存在しないコレクションを書き込む場合、コレクションはデータを書き込む前に自動的に作成されます。
次のコードを使用して、 insert
メソッドを使用して** MyCollection **という名前のコレクションに3つの小さなドキュメントを追加できます。
db.myCollection.insert([{'name':'Alice','age':30},{'name':'Bill','age':25},{'name':'Bob','age':35}]);
挿入が成功すると、次のメッセージが表示されます。
BulkWriteResult({"writeErrors":[],"writeConcernErrors":[],"nInserted":3,"nUpserted":0,"nMatched":0,"nModified":0,"nRemoved":0,"upserted":[]})
データを含むデータベースができたので、そのバックアップを作成できます。ただし、データベースが大きい場合はバックアップが大きくなり、ストレージ容量が不足してサーバーの速度が低下したりクラッシュしたりするリスクを回避するために、バックアップを作成する前にデータベースのサイズを確認する必要があります。
stats
メソッドを使用し、 dataSize
キーの値をチェックして、データベースのサイズ(バイト単位)を知ることができます。
db.stats().dataSize;
現在のデータベースの場合、 dataSize
の値は小さい数値になります。
output
592
dataSize
の値は、バックアップサイズの概算にすぎないことに注意してください。
バックアップを作成するには、 mongodump
と呼ばれるコマンドラインユーティリティを使用できます。デフォルトでは、 mongodump
はMongoDBインスタンスに存在するすべてのデータベースのバックアップを作成します。特定のデータベースのバックアップを作成するには、 -d
オプションを使用して、データベースの名前を指定する必要があります。さらに、 mongodump
にバックアップの保存場所を知らせるには、 -o
オプションを使用してパスを指定する必要があります。
まだ mongo
シェルにいる場合は、 CTRL + D
を押して終了してください。
次のコマンドを入力して、** myDatabase **のバックアップを作成し、それを 〜/ backups / first_backup
に保存します。
mongodump -d myDatabase -o ~/backups/first_backup
バックアップが正常に作成されると、次のログメッセージが表示されます。
2015- 11- 24 T18:11:58.590-0500 writing myDatabase.myCollection to /home/me/backups/first_backup/myDatabase/myCollection.bson
2015- 11- 24 T18:11:58.591-0500 writing myDatabase.myCollection metadata to /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015- 11- 24 T18:11:58.592-0500 done dumping myDatabase.myCollection(3 documents)2015-11-24T18:11:58.592-0500 writing myDatabase.system.indexes to /home/me/backups/first_backup/myDatabase/system.indexes.bson
バックアップは単一のファイルではなく、実際には次の構造のディレクトリであることに注意してください。
first_backup
└── myDatabase
├── myCollection.bson
├── myCollection.metadata.json
└── system.indexes.bson
作成したバックアップをテストするには、別のサーバーで実行されているMongoDBインスタンスを使用するか、現在のサーバー上のデータベースを削除します。このチュートリアルでは、後者を実行します。
mongo
シェルを開き、** myDatabase **に接続します。
mongo myDatabase
dropDatabase`メソッドを使用してデータベースを削除します。
db.dropDatabase();
削除が成功すると、次のメッセージが表示されます。
{" dropped":"myDatabase","ok":1}
これで、収集メソッド find
を使用して、以前に挿入されたすべてのデータが消えたかどうかを確認できます。
db.myCollection.find();
データベースに表示するデータがないため、このコマンドからの出力はありません。
mongodump
で作成されたバックアップ*を使用してデータベースを復元するには、 mongorestore
と呼ばれる別のコマンドラインユーティリティを使用できます。使用する前に、 CTRL + D
を押して mongo
シェルを終了します。
mongorestore
の使用は非常に簡単です。必要なのは、バックアップを含むディレクトリへのパスだけです。 〜/ backupts / first_backup
の場所に保存されているバックアップを使用してデータベースを復元する方法は次のとおりです。
mongorestore ~/backups/first_backup/
復元操作が成功すると、次のログメッセージが表示されます。
2015- 11- 24 T18:27:04.250-0500 building a list of dbs and collections to restore from/home/me/backups/first_backup/ dir
2015- 11- 24 T18:27:04.251-0500 reading metadata file from/home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015- 11- 24 T18:27:04.252-0500 restoring myDatabase.myCollection from file /home/me/backups/first_backup/myDatabase/myCollection.bson
2015- 11- 24 T18:27:04.309-0500 restoring indexes for collection myDatabase.myCollection from metadata
2015- 11- 24 T18:27:04.310-0500 finished restoring myDatabase.myCollection(3 documents)2015-11-24T18:27:04.310-0500 done
復元されたデータを確認するには、最初に mongo
シェルを開き、 myDatabase
に接続します。
mongo myDatabase
次に、 collection
の find
メソッドを呼び出します。
db.myCollection.find();
すべてがうまくいけば、以前に挿入されたすべてのデータを見ることができるはずです。
output
{"_ id":ObjectId("5654e76f21299039c2ba8720"),"name":"Alice","age":30}{"_id":ObjectId("5654e76f21299039c2ba8721"),"name":"Bill","age":25}{"_id":ObjectId("5654e76f21299039c2ba8722"),"name":"Bob","age":35}
このチュートリアルでは、 mongodump
と mongorestore
を使用してMongoDBデータベースをバックアップおよび復元する方法を学習しました。バックアップの作成はコストのかかる操作であり、MongoDBインスタンスのパフォーマンスを低下させる可能性があることに注意してください。したがって、オフピーク時にのみバックアップを作成することをお勧めします。
MongoDBバックアップ関連のチュートリアルの作成と使用の詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu14.04でMongoDBバックアップを作成および使用する方法」
Recommended Posts