mongodb备份与恢复
mongodb是目前最流行的nosql数据库,其自身也提供了备份与恢复命令 。具体程序为mongodump和mongorestore 。
一、mongodump备份
mongodump的具体用法可以查看帮助:
1[root@web20 ~]# /App/mongodb/bin/mongodump -h
2ERROR: required parameter is missing in 'host'
3Export MongoDB data to BSON files.
4options:
5 --help produce help message
6 -v [ --verbose ] be more verbose (include multiple times for more
7 verbosity e.g. -vvvvv)
8 --version print the program's version and exit
9 -h [ --host ] arg mongo host to connect to ( <set name="">/s1,s2 for
10 sets)
11 --port arg server port. Can also use --host hostname:port
12 --ipv6 enable IPv6 support (disabled by default)
13 -u [ --username ] arg username
14 -p [ --password ] arg password
15 --dbpath arg directly access mongod database files in the given
16 path, instead of connecting to a mongod server -
17 needs to lock the data directory, so cannot be used
18 if a mongod is currently accessing the same path
19 --directoryperdb if dbpath specified, each db is in a separate
20 directory
21 --journal enable journaling
22 -d [ --db ] arg database to use
23 -c [ --collection ] arg collection to use (some commands)
24 -o [ --out ] arg (=dump) output directory or "-" for stdout
25 -q [ --query ] arg json query
26 --oplog Use oplog for point-in-time snapshotting
27 --repair try to recover a crashed database
28 --forceTableScan force a table scan (do not use $snapshot)</set>
帮助信息上已经写的很明了了 ,具体导出备份命令为:
1mongodump -h dbhost -d dbname -o dbdirectory
- -h 表示mongodb server地址,
- -d 表示需要备份的数据名
- -o 为备份数据存放的路径
如果设置了用户名密码还要使用-u和-p参数 ,如果想要导出单独库下的一个表,再增加-c参数 。具体用法同mysqldump有类似之处 。
注:如现在导出的库名为361way ,导出的路径为/opt ,则导出后会在/opt目录下有一个361way命名的目录 ,里面是由表名命名的json和bson文件 ,具体组成类似于表结构和表数据 。而导出的内容和mysql 略有不同,mysqldump导出的是一个sql文件而不是目录 。
二、mongorestore恢复
mongorestore具体用法类以于mongodump,不过参数上略有差异,具体用法为:
1usage: ./mongorestore [options] [directory or filename to restore from]
2options:
3 --help produce help message
4 -v [ --verbose ] be more verbose (include multiple times for more
5 verbosity e.g. -vvvvv)
6 --version print the program's version and exit
7 -h [ --host ] arg mongo host to connect to ( <set name="">/s1,s2 for sets)
8 --port arg server port. Can also use --host hostname:port
9 --ipv6 enable IPv6 support (disabled by default)
10 -u [ --username ] arg username
11 -p [ --password ] arg password
12 --dbpath arg directly access mongod database files in the given
13 path, instead of connecting to a mongod server -
14 needs to lock the data directory, so cannot be used
15 if a mongod is currently accessing the same path
16 --directoryperdb if dbpath specified, each db is in a separate
17 directory
18 --journal enable journaling
19 -d [ --db ] arg database to use
20 -c [ --collection ] arg collection to use (some commands)
21 --objcheck validate object before inserting
22 --filter arg filter to apply before inserting
23 --drop drop each collection before import
24 --oplogReplay replay oplog for point-in-time restore
25 --oplogLimit arg exclude oplog entries newer than provided timestamp
26 (epoch[:ordinal])
27 --keepIndexVersion don't upgrade indexes to newest version
28 --noOptionsRestore don't restore collection options
29 --noIndexRestore don't restore indexes
30 --w arg (=1) minimum number of replicas per write</set>
一般用法为:
1mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
- –directoryperdb:备份数据所在位置 ,例如上例中,我们将361way库备份到了 /opt 下,这里恢复的时候使用的就是/opt/361way ,此处是和备份略有区别的 。
- –drop:恢复的时候,先删除当前数据,然后恢复备份的数据
三、与其他备份恢复工具的对比
mongodb自带的备份工具还有bsondump、mongoexport,恢复工具还有mongoimport ,几者之间的具体区别是:
bsondump、mongoexport、mongodump备份工具的对比:
- bsondump可以指定备份的格式为json和debug模式,这个命令虽然附带,但很少用到 ;
- mongoexport 可以导出json或csv格式的文件,可以指定查询过滤器或指定输出的域,不过此工具导出的json,csv可能对某些数据类型不兼容,因此可能不能全部数据导出,mongodump就可以全部兼容 ;
- mongodump支持过滤 ,而且在导出速度和压缩率方面mongodump是最快最好的 。所以,若无csv或debug等特殊格式的备份需求,一般都使用 mongodump 作为备份工具 。
mongorestore与mongoimport 恢复工具的对比:
- mongoimport 可以接受json,csv,tsv格式的文件,每行为一个对象 。同mongoexport一样,其在恢复过程中同样存在兼容性的问题,所以有恢复不完整的概率 ;
- mongorestore,速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据。在restore过程中,索引根据之前dump的结果重新创造。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/mongodb-dump-restore/2688.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.