MongoDBのバックアップ/リストア

Node.js からデータを投入
db.collection.initializeOrderedBulkOp()
を使う。
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://user:password@127.0.0.1:27017/sample'; // db名: "sample"
const connectOption = {
useNewUrlParser: true,
useUnifiedTopology: true,
};
MongoClient.connect(url, connectOption, (err, client) => {
if (err) {
return;
}
const db = client.db('sample');
const bulk = db.collection('products').initializeOrderedBulkOp(); // collection名: "products"
bulk.insert({ name: 'pen', price: 120 });
bulk.insert({ name: 'note', price: 120 });
bulk.insert({ name: 'eraser', price: 100 });
bulk.insert({ name: 'paste', price: 180 });
bulk.insert({ name: 'ciseaux', price: 320 });
bulk.insert({ name: 'cellophanetape', price: 80 });
bulk.execute((err, result) => {
client.close();
});
});
登録されたか確認する
$ mongo
...
> use sample
...
> db.auth({ user: "user", pwd: "password" })
...
> db.products.find()
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad569"), "name" : "pen", "price" : 120 }
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad56a"), "name" : "note", "price" : 120 }
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad56b"), "name" : "eraser", "price" : 100 }
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad56c"), "name" : "paste", "price" : 180 }
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad56d"), "name" : "ciseaux", "price" : 320 }
{ "_id" : ObjectId("5ebb8d1e24bd920f0a3ad56e"), "name" : "cellopharentape", "price" : 80 }
bson 形式でバックアップ
バックアップ
$ mongodump -u user -p password -d sample -o /home/vagrant/workspace/mongo01/backup
2020-05-13T15:24:24.439+0900 writing sample.products to
2020-05-13T15:24:24.458+0900 done dumping sample.products (6 documents)
リストア
$ mongorestore -u user1 --authenticationDatabase sample --nsInclude sample.* /home/vagrant/workspace/mongo01/backup
Enter password:
2020-05-13T15:26:39.243+0900 preparing collections to restore from
2020-05-13T15:26:39.250+0900 reading metadata for sample.products from /home/vagrant/workspace/mongo01/backup/sample/products.metadata.json
2020-05-13T15:26:39.290+0900 restoring sample.products from /home/vagrant/workspace/mongo01/backup/sample/products.bson
2020-05-13T15:26:39.293+0900 no indexes to restore
2020-05-13T15:26:39.294+0900 finished restoring sample.products (6 documents, 0 failures)
2020-05-13T15:26:39.295+0900 6 document(s) restored successfully. 0 document(s) failed to restore.
アーカイブ形式でバックアップ
バックアップ
$ mongodump -u user1 -p password -d sample --gzip --archive=/home/vagrant/workspace/mongo01/backup/archive.dump
2020-05-13T15:37:17.867+0900 writing sample.products to archive '/home/vagrant/workspace/mongo01/backup/archive.dump'
2020-05-13T15:37:17.873+0900 done dumping sample.products (6 documents)
リストア
$ mongorestore -u user1 --authenticationDatabase sample --drop --gzip --archive=/home/vagrant/workspace/mongo01/backup/archive.dump
Enter password:
2020-05-13T15:39:20.584+0900 preparing collections to restore from
2020-05-13T15:39:20.595+0900 reading metadata for sample.products from archive '/home/vagrant/workspace/mongo01/backup/archive.dump'
2020-05-13T15:39:20.635+0900 restoring sample.products from archive '/home/vagrant/workspace/mongo01/backup/archive.dump'
2020-05-13T15:39:20.638+0900 no indexes to restore
2020-05-13T15:39:20.638+0900 finished restoring sample.products (6 documents, 0 failures)
2020-05-13T15:39:20.638+0900 6 document(s) restored successfully. 0 document(s) failed to restore.