# /usr/bin/mongod --journal --port 27017 --logappend --logpath /data/mongo1/logs/mongod.log --pidfilepath /data/mongo1/logs/mongod.pid --dbpath /data/mongo1/db --fork # /usr/bin/mongod --journal --port 27018 --logappend --logpath /data/mongo2/logs/mongod.log --pidfilepath /data/mongo2/logs/mongod.pid --dbpath /data/mongo2/db --fork
# mongo --port 27017 MongoDB shell version: 2.2.2 connecting to: 127.0.0.1:27017/test > show dbs local (empty) testdb (empty)
> use testdb switched to db testdb > for(var i=1;i<=150;i++) db.testdata.save({entryId:i, createdDatetime:new Date(), name:"test0"+i}); > db.testdata.findOne() { "_id" : ObjectId("5109be7579ee8df58e8feca6"), "entryId" : 1, "createdDatetime" : ISODate("2013-01-31T00:44:37.080Z"), "name" : "test01" } > db.testdata.count() 150 > use test002 switched to db test002 > for(var i=1;i<=150;i++) db.t002data.save({entryId:i, createdDatetime:new Date(), name:"test0"+i}); > db.t002data.findOne() { "_id" : ObjectId("5109c85279ee8df58e8fed3c"), "entryId" : 1, "createdDatetime" : ISODate("2013-01-31T01:26:42.006Z"), "name" : "test01" } > db.t002data.count() 150
# mongodump --help Export MongoDB data to BSON files. options: --help produce help message -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) --version print the program's version and exit -h [ --host ] arg mongo host to connect to ( <set name>/s1,s2 for sets) --port arg server port. Can also use --host hostname:port --ipv6 enable IPv6 support (disabled by default) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod database files in the given path, instead of connecting to a mongod server - needs to lock the data directory, so cannot be used if a mongod is currently accessing the same path --directoryperdb if dbpath specified, each db is in a separate directory --journal enable journaling -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -o [ --out ] arg (=dump) output directory or "-" for stdout -q [ --query ] arg json query --oplog Use oplog for point-in-time snapshotting --repair try to recover a crashed database --forceTableScan force a table scan (do not use $snapshot)
実行時のカレントディレクトリに dumpディレクトリを作成し、その下にバックアップファイル作成
# cd /data/mongo1/ # mongodump -h localhost:27017 connected to: localhost:27017 all dbs DATABASE: test002 to dump/test002 test002.t002data to dump/test002/t002data.bson 150 objects Metadata for test002.t002data to dump/test002/t002data.metadata.json DATABASE: testdb to dump/testdb testdb.testcol to dump/testdb/testcol.bson 2 objects Metadata for testdb.testcol to dump/testdb/testcol.metadata.json testdb.testdata to dump/testdb/testdata.bson 150 objects Metadata for testdb.testdata to dump/testdb/testdata.metadata.json You have new mail in /var/spool/mail/root
# mongorestore --help Import BSON files into MongoDB. usage: mongorestore [options] [directory or filename to restore from] options: --help produce help message -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) --version print the program's version and exit -h [ --host ] arg mongo host to connect to ( <set name>/s1,s2 for sets) --port arg server port. Can also use --host hostname:port --ipv6 enable IPv6 support (disabled by default) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod database files in the given path, instead of connecting to a mongod server - needs to lock the data directory, so cannot be used if a mongod is currently accessing the same path --directoryperdb if dbpath specified, each db is in a separate directory --journal enable journaling -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) --objcheck validate object before inserting --filter arg filter to apply before inserting --drop drop each collection before import --oplogReplay replay oplog for point-in-time restore --oplogLimit arg exclude oplog entries newer than provided timestamp (epoch[:ordinal]) --keepIndexVersion don't upgrade indexes to newest version --noOptionsRestore don't restore collection options --noIndexRestore don't restore indexes --w arg (=1) minimum number of replicas per write
# mongorestore -h localhost:27018 --drop --dbpath /data/mongo1/dump [tools] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/data/mongo1/dump/journal" [tools] ERROR: don't know what to do with file [dump]
# mongorestore -h localhost:27018 --drop /data/mongo1/dump connected to: localhost:27018 /data/mongo1/dump/testdb/testdata.bson going into namespace [testdb.testdata] dropping 150 objects found Creating index: { key: { _id: 1 }, ns: "testdb.testdata", name: "_id_" } /data/mongo1/dump/testdb/testcol.bson going into namespace [testdb.testcol] dropping 2 objects found Creating index: { key: { _id: 1 }, ns: "testdb.testcol", name: "_id_" } /data/mongo1/dump/test002/t002data.bson going into namespace [test002.t002data] dropping 150 objects found Creating index: { key: { _id: 1 }, ns: "test002.t002data", name: "_id_" }
# mongo --port 27018 MongoDB shell version: 2.2.2 connecting to: 127.0.0.1:27018/test > show dbs local (empty) test002 0.203125GB testdb (empty) > use testdb switched to db testdb > show collections system.indexes testcol testdata > db.testdata.count() 150 > db.testdata.findOne() { "_id" : ObjectId("5109be7579ee8df58e8feca6"), "entryId" : 1, "createdDatetime" : ISODate("2013-01-31T00:44:37.080Z"), "name" : "test01" }
# mongodump -h localhost:27017 -d testdb -o /data/mongo1/dump2/ # mongorestore -h localhost:27018 -d testdb --drop /data/mongo1/dump2/testdb
# mongodump -h localhost:27017 -d test002 -c t002data -o /data/mongo1/dump3/ # mongorestore -h localhost:27018 -d test002 -c t002data --drop /data/mongo1/dump3/test002/t002data.bson