mongodb的备份与恢复
openkk
12年前
mongodb提供了两个命令来备份(mongodump )和恢复(mongorestore )数据库。
1.备份(mongodump )
用法 :
[root@web3 3]# mongodump --help options: --help produce help message -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) -h [ --host ] arg mongo host to connect to ("left,right" for pairs) -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod data files in the given path, instead of connecting to a mongod instance - 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 -o [ --out ] arg (=dump) output directory
例子:
[root@web3 ~]# mongodump -h 192.168.1.103 -d citys -o /backup/mongobak/3 connected to: 192.168.1.103 DATABASE: citys to /backup/mongobak/3/citys citys.building to /backup/mongobak/3/citys/building.bson 13650 objects citys.system.indexes to /backup/mongobak/3/citys/system.indexes.bson 1 objects
备份出来的数据是二进制的,已经经过压缩。比实际数据库要小很多,我的数据库显示占用了260多M,备份后只有2M。
2.恢复(mongorestore )
用法:
[root@web3 3]# mongorestore --help 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) -h [ --host ] arg mongo host to connect to ("left,right" for pairs) -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod data files in the given path, instead of connecting to a mongod instance - 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 --drop drop each collection before import --objcheck validate object before inserting --drop参数可以在导入之前把collection先删掉。
例子:
[root@web3 3]# mongorestore -h 127.0.0.1 --directoryperdb /backup/mongobak/3/ connected to: 127.0.0.1 /backup/mongobak/3/citys/building.bson going into namespace [citys.building] 13667 objects /backup/mongobak/3/citys/system.indexes.bson going into namespace [citys.system.indexes] 1 objects</pre>
</span></span>
另外mongodb还提供了mongoexport 和 mongoimport 这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。
例:
mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson mongoimport -d mixi_top_city -c building_45 --file mongo_10832545.bson