Mongodump和Mongorestore实践总结

mongodb的数据转储除了使用compass图形界面导出导入json或csv文件这种方式,还有命令行方式(效率比较高且可压缩,对于远程传输mongo数据hin友好),即今天介绍的mongodump和mongorestore。

我们的需求是先用dump导出数据(指定的数据库或者集合),导出的数据是个以数据库名命名的文件夹,里面是集合数据,每个集合对应两个文件,.bson和.metadata.json。使用压缩命令可以将.bson等文件压缩。

然后使用restore命令将该文件中包含的集合信息导入到指定数据库。

以下是两个命令的例子和参数介绍:

Mongodump

(使用前提是安装mongodb database tools,将其生成的各种exe文件复制到mongodb的bin目录中,同时bin要加入系统变量中以免在cmd运行时出错)

常用命令分析

mongodump  -h localhost -d hosp_aixin -c details -o G:\000

mongodump --gzip -h localhost -d hosp_aixin -c details -o G:\000

-h:

MongoDB 所在服务器地址,例如:127.0.0.1(localhost),当然也可以指定端口号:127.0.0.1:27017

-d:

需要备份的数据库实例,例如:hosp_aixin

-c:

需要精确到集合(collection),例如:details

-o:

备份的数据存放位置,例如:G:\000,当然该目录需要提前建立.

--gzip:

将文件压缩为.gz压缩文件,省空间。

-h, --host=<hostname>           MongoDB服务器的地址,默认为localhost

-p, --port=<port>               MongoDB服务器的端口号,默认为27017

-d, --db=<database>             需要备份的数据库名称

-c, --collection=<collection>   需要备份的集合名称,不指定时默认备份全库

-u, --username=<username>       登录MongoDB服务器的用户名

    --password=<password>       登录MongoDB服务器的密码

-o, --out=<directory>           备份数据的目录路径

-q, --query=<query>             指定查询条件

--ssl                           使用SSL连接到MongoDB服务器

--sslCAFile=<filename>          SSL CA证书文件路径

--sslPEMKeyFile=<filename>      SSL PEM证书文件路径

--sslPEMKeyPassword=<password>  SSL PEM证书密码

--authenticationDatabase=<database>  认证数据库的名称

--gzip                          备份数据时使用gzip进行压缩

--archive=<filename>            将备份数据保存到归档文件中

--quiet                         禁止输出日志信息

Mongorestore

如果是将dump好的集合导入到指定数据库,不用指定数据库下的集合名,也不用创建集合。

mongorestore --db xiaoshanyiyuan G:\000\hosp_aixin

mongorestore --gzip --db xiaoshanyiyuan G:\000\hosp_aixin\test

-h, --host=<hostname>           MongoDB服务器的地址,默认为localhost

-p, --port=<port>               MongoDB服务器的端口号,默认为27017

-d, --db=<database>             恢复数据的数据库名称

-c, --collection=<collection>   恢复数据的集合名称

-u, --username=<username>       登录MongoDB服务器的用户名

    --password=<password>       登录MongoDB服务器的密码

-o, --out=<directory>           恢复数据的目录路径         

--drop                          在恢复数据前删除已存在的集合

--ssl                           使用SSL连接到MongoDB服务器

--sslCAFile=<filename>          SSL CA证书文件路径

--sslPEMKeyFile=<filename>      SSL PEM证书文件路径

--sslPEMKeyPassword=<password>  SSL PEM证书密码

--authenticationDatabase=<database>  认证数据库的名称

--gzip                          恢复数据时使用gzip进行解压缩

--quiet                         禁止输出日志信息

实践记录:(有点坑)

使用dump工具参考以上教程,在winserver上成功导出了details库的数据,但是比较大,压缩包11个G,想尝试使用query参数按照集合中的时间字段进行限制,比如update_day,但是一直报错(后续有时间可以继续研究)。

将压缩包拷至centos,直接使用上面restore命令报错,于是mongorestore --help查看官方文档,喂给大模型,说清自己的需求,让他帮生成命令,最后根据后台报错信息,一步步调试,最终运行成功(太折磨人了,都想放弃了)

最后给出mongo6.0.2版本的restore命令,仅供参考,实际场景还是得研究官方文档!

mongorestore --uri="mongodb://172.168.10.171/zhedaeryuan" --gzip --dir=/u01/workspace/gzh/details/zhedaeryuan

最后,尝试用compass直接进行数据的导出,csv文件28G,压缩后只有1.7G!!,所以如果对存储空间有要求,就不要用mongodump,相比其压缩后的11G,compass直接导出后再压缩还是小的多的。但是导出时间没太留意对比,感觉并不比mongodump慢很多。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值