Ubuntu14.04でMongoDBバックアップを作成して使用する方法
序章
今日の多くの最新のWebアプリケーション開発者は、プロジェクトでNoSQLデータベースを使用することを選択しており、MongoDBが最初の選択肢であることがよくあります。 本番シナリオでMongoDBを使用している場合は、データの損失を防ぐために定期的にバックアップを作成することが重要です。 幸い、MongoDBには、バックアップを作成して使用するためのシンプルなコマンドラインツールが用意されています。 このチュートリアルでは、これらのツールの使用方法について説明します。
既存のデータベースを改ざんすることなくバックアップがどのように機能するかを理解するために、このチュートリアルでは、新しいデータベースを作成し、それに少量のデータを追加する手順から始めます。 次に、データベースのバックアップを作成し、データベースを削除して、バックアップを使用して復元します。
前提条件
フォローするには、次のものが必要です。
-
sudo非rootユーザーを含む1つの64ビットUbuntu14.04ドロップレット
-
サーバーにインストールされたMongoDB3.0.7。これはこのMongoDBインストールガイドに従って実行できます。
ステップ1—サンプルデータベースの作成
空のデータベースのバックアップを作成することはあまり役に立ちません。そのため、このステップでは、サンプルデータベースを作成し、それにデータを追加します。
MongoDBインスタンスと対話する最も簡単な方法は、 mongo
シェル。 でそれを開きます mongo
指図。
- mongo
MongoDBプロンプトが表示されたら、myDatabaseという名前の新しいデータベースを作成します。 use
ヘルパー。
- use myDatabase
switched to db myDatabase
MongoDBデータベース内のすべてのデータは、コレクションに属している必要があります。 ただし、コレクションを明示的に作成する必要はありません。 あなたが使用するとき insert
存在しないコレクションに書き込むメソッドの場合、データが書き込まれる前にコレクションが自動的に作成されます。
次のコードを使用して、myCollectionというコレクションに3つの小さなドキュメントを追加できます。 insert
方法:
- 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" : [ ]
})
ステップ2—データベースのサイズを確認する
データを含むデータベースができたので、そのバックアップを作成できます。 ただし、データベースが大きい場合、バックアップは大きくなります。ストレージスペースが不足し、サーバーの速度が低下したりクラッシュしたりするリスクを回避するために、バックアップを作成する前にデータベースのサイズを確認する必要があります。
あなたは使用することができます stats
メソッドとの値を検査します dataSize
データベースのサイズをバイト単位で知るためのキー。
- db.stats().dataSize;
現在のデータベースの場合、 dataSize
少数になります:
592
の値に注意してください dataSize
これは、バックアップのサイズの概算にすぎません。
ステップ3—バックアップの作成
バックアップを作成するには、次のコマンドラインユーティリティを使用できます。 mongodump
. デフォルトでは、 mongodump
MongoDBインスタンスに存在するすべてのデータベースのバックアップを作成します。 特定のデータベースのバックアップを作成するには、 -d
オプションを選択し、データベースの名前を指定します。 さらに、 mongodump
バックアップを保存する場所を知っている場合は、 -o
オプションを選択し、パスを指定します。
あなたがまだ中にいる場合 mongo
シェル、を押して終了します CTRL+D
.
次のコマンドを入力して、 myDatabase のバックアップを作成し、に保存します。 ~/backups/first_backup
:
- mongodump -d myDatabase -o ~/backups/first_backup
バックアップの作成が成功すると、次のログメッセージが表示されます。
2015-11-24T18:11:58.590-0500 writing myDatabase.myCollection to /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:11:58.591-0500 writing myDatabase.myCollection metadata to /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18: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
ステップ4—データベースを削除する
作成したバックアップをテストするには、別のサーバーで実行されているMongoDBインスタンスを使用するか、現在のサーバーのデータベースを削除します。 このチュートリアルでは、後者を実行します。
を開きます mongo
シェルを作成し、myDatabaseに接続します。
- mongo myDatabase
を使用してデータベースを削除します dropDatabase
方法。
- db.dropDatabase();
削除が成功すると、次のメッセージが表示されます。
{ "dropped" : "myDatabase", "ok" : 1 }
これで、 find
以前に挿入したすべてのデータがなくなっていることを確認するためのコレクションのメソッド。
- db.myCollection.find();
データベースに表示するデータがないため、このコマンドからの出力はありません。
ステップ5—データベースの復元
を使用して作成されたバックアップを使用してデータベースを復元するには mongodump
、と呼ばれる別のコマンドラインユーティリティを使用できます mongorestore
. 使用する前に、 mongo
を押してシェル CTRL+D
.
使用する mongorestore
とてもシンプルです。 必要なのは、バックアップを含むディレクトリのパスだけです。 に保存されているバックアップを使用してデータベースを復元する方法は次のとおりです。 ~/backupts/first_backup
:
- mongorestore ~/backups/first_backup/
復元操作が成功すると、次のログメッセージが表示されます。
2015-11-24T18:27:04.250-0500 building a list of dbs and collections to restore from /home/me/backups/first_backup/ dir
2015-11-24T18:27:04.251-0500 reading metadata file from /home/me/backups/first_backup/myDatabase/myCollection.metadata.json
2015-11-24T18:27:04.252-0500 restoring myDatabase.myCollection from file /home/me/backups/first_backup/myDatabase/myCollection.bson
2015-11-24T18:27:04.309-0500 restoring indexes for collection myDatabase.myCollection from metadata
2015-11-24T18:27:04.310-0500 finished restoring myDatabase.myCollection (3 documents)
2015-11-24T18:27:04.310-0500 done
復元されたデータを調べるには、まず、 mongo
シェルして接続します myDatabase
.
- mongo myDatabase
次に、 find
あなたの方法 collection
.
- db.myCollection.find();
すべてがうまくいけば、以前に挿入したすべてのデータを表示できるはずです。
{ "_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バックアップ戦略の詳細については、MongoDB3.0マニュアルを参照してください。