官方文档介绍了好几种备份方式,这里只涉及到使用mongodump
进行备份,mongorestore
进行重建。原因时,这是最常用的方式。
mongodump
命令:
mongodump -h ${host} --port ${port} -u ${username} -p ${passwd} -o ${backupFilePath}
其他选项:
-
--quiet
安静模式,仅输出错误信息 -
--ipv6
启用ipv6,默认关闭 -
--authenticationDatabase ${database}
没有则,默认所有要备份的的db都有用户的凭证 -
--authenticationMechanism ${arb}
用户验证方法,支持MONGODB-CR
,MONGODB-X509
,PLAIN
,GSSAPI
-
--gssapiServiceName ${GSS_Server}
用户验证方法为GSSAPI
时,验证服务名,不带此参数默认为mongodb
-
--gssapiHostName
GSS
服务器hostname
-
--dbpath ${dbpath}
通过数据库所在文件进行备份,如果mongod进程启动,可能会有冲突 -
--directoryperdb
没有db使用独立文件夹存放备份数据 -
--journal
默认开启,保证数据文件完整,可从灾难中恢复 -
--db ${dbname}
指定备份的db
,默认备份全部db
-
--collection ${collection}
仅备份指定集合 -
--query ${query}
根据query
,备份数据 -
--oplog
在备份过程中,保留oplog
,可以在恢复数据的时候进行操作重现,保证在备份过程中新的操作也可以被保留 -
--repair
如果要备份的数据库是crash
掉的,这个选项会在dump
的时候回复数据库,可能会使备份完的数据中有重复数据 -
--forceTableScan
当你使用--query
时,dump
过程中会使用索引,而不是全文扫描,这个选项保证使用全文扫描
mongorestore
命令:
mongorestore -h ${mongodb_host} --port ${mongodb_port} -u ${username} -p ${password} ${directoryOfBackup}
其他选项:
基本上与
mongodump
对应
-
--quiet
安静模式,仅输出错误信息 -
--ipv6
启用ipv6,默认关闭 -
--authenticationDatabase ${database}
没有则,默认所有要备份的的db都有用户的凭证 -
--authenticationMechanism ${arb}
用户验证方法,支持MONGODB-CR
,MONGODB-X509
,PLAIN
,GSSAPI
-
--gssapiServiceName ${GSS_Server}
用户验证方法为GSSAPI
时,验证服务名,不带此参数默认为mongodb
-
--gssapiHostName
GSS
服务器hostname
-
--dbpath ${dbpath}
支持对db存放文件夹操作,如果mongod
启动,且使用了该db文件夹,则冲突 -
--directoryperdb
每个db的数据存放在独立的文件夹中 -
--journal
默认开启,保证数据文件完整,可从灾难中恢复 -
--db ${dbname}
指定db
-
--collection ${collection}
指定集合 -
--objcheck
插入前对数据进行校验 -
--filter ${JSON}
数据过滤,仅插入符合格式的数据 -
--drop
删除所有已有集合 -
--oplogReplay
重建完成后,执行oplog
,对应mongodump
的--oplog
--oplogLimit <timestamp>
-
--repair
如果要备份的数据库是crash
掉的,这个选项会在dump
的时候回复数据库,可能会使备份完的数据中有重复数据 -
--forceTableScan
当你使用--query
时,dump
过程中会使用索引,而不是全文扫描,这个选项保证使用全文扫描