MongoDB备份(mongoexport)与恢复(mongoimport)
1.备份恢复工具介绍:
- mongoexport/mongoimport
- mongodump/mongorestore(本文未涉及)
2.备份工具区别在哪里?
2.1
- mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式
- mongodump/mongorestore 导入/导出的是BSON格式
2.2
JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
2.3
- 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。
- 当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。
- 跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)
2.4
JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。
2.5
- mongoexport不支持普通导出单个db的所有的collection
- mongodump支持普通导出单个db的所有的collection
3.应用场景总结:
mongoexport/mongoimport
1、异构平台迁移 mysql <---> mongodb
2、同平台,跨大版本:mongodb2.x ---> mongodb3.x
mongodump/mongorestore
日常备份恢复时使用.
4.版本介绍
- 从MongoDB 4.4开始,mongoimport现已与MongoDB Server分开发布,并使用其自己的版本控制(初始版本为)100.0.0。
- 以前,mongoimport它与MongoDB Server一起发布,并使用了匹配的版本控制。
- 官方文档:https://docs.mongodb.com/database-tools/mongoimport/
- 下载地址(4.4以上):https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools
- 遵循向下兼容原装,即mongoimport版本100.2.1支持MongoDB Server4.4往下所有版本
5.导出工具mongoexport
- mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。
- 可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
5.1 mongoexport关键参数如下所示:
mongoexport --help
查看帮助命令
- -h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
- --port:代表远程连接的数据库的端口,默认连接的远程端口27017;
- -u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
- -p,--password:代表连接数据库的账号对应的密码;
- -d,--db:代表连接的数据库;
- -c,--collection:代表连接数据库中的集合;
- -f, --fields:代表集合中的字段,可以根据设置选择导出的字段;
- --type:代表导出输出的文件类型,包括csv和json文件;
- -o, --out:代表导出的文件名;
- -q, --query:代表查询条件;
- --skip:跳过指定数量的数据;
- --limit:读取指定数量的数据记录;
- --sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。
- --authenticationDatabase:指定用户鉴定库
5.2 备份示例
单表备份至json格式
mongoexport -u -p --port 28019 --authenticationDatabase admin -d test -c customer -o /tmp/customer.json
[root@zhouweibing tmp]# head customer.json
{"_id":{"$oid":"5ff55c6ac70afd201b763036"},"name":"user0"}
{"_id":{"$oid":"5ff55c6ac70afd201b763037"},"name":"user1"}
注:备份文件的名字和路径可以自定义,默认导出了JSON格式的数据。
单表备份至csv格式
mongoexport -u -p --port 28019 --authenticationDatabase admin -d replset -c customer --type=csv -f _id,name -o /tmp/customer.csv
[root@zhouweibing tmp]# head customer.csv
_id,name
ObjectId(5ff55c6ac70afd201b763036),user0
ObjectId(5ff55c6ac70afd201b763037),user1
6.导入工具mongoimport
- mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。
- 该工具可以导入JSON格式数据,也可以导入CSV格式数据。
6.1 mongoimport关键参数如下所示:
mongoimport --help
查看帮助命令
- h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
- --port:代表远程连接的数据库的端口,默认连接的远程端口27017;
- -u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
-p,--password:代表连接数据库的账号对应的密码; - -d,--db:代表连接的数据库;
- -c,--collection:代表连接数据库中的集合;
- -f, --fields:代表导入集合中的字段;
- --type:代表导入的文件类型,包括csv和json,tsv文件,默认json格式;
- --file:导入的文件名称;
- --headerline:导入csv文件时,指明第一行是列名,不需要导入;
- --authenticationDatabase:指定用户鉴定库
6.2 恢复示例
恢复json格式表数据到json
mongoimport -u -p --port 28019 --authenticationDatabase admin -d test -c json /tmp/customer.json
恢复csv格式的文件到csv
(1)csv格式的文件头行,有列名字
mongoimport -u -p --port 28019 --authenticationDatabase admin -d test -c csv --type=csv --headerline /tmp/customer.csv
(2)csv格式的文件头行,没有列名字
mongoimport -u -p --port 28019 --authenticationDatabase admin -d test -c csv1 --type=csv -f _id,name /tmp/customer1.csv
注意:
--headerline和-f不能同时使用
7.异构平台迁移案例
- mysql ---> mongodb
- 将MySQL test库下data表导出成csv格式,再导入到mongodb
7.1 开启mysql开启安全路径
vim /etc/my.cnf --->添加以下配置
secure-file-priv=/tmp
重启MySQL使配置生效
7.2 导出mysql的data表数据
select * from data limit 1000 into outfile "/tmp/data.csv" fields terminated by ',';
7.3 添加列名信息到data.csv
desc test.data; #查看列名信息
vim /tmp/data.csv #在第一行添加列名信息
d,com_pid,com_name,com_image,com_craw_url_leyu,add_time,status
7.4 在mongodb中导入data.csv
mongoimport -u -p --port 28019 --authenticationDatabase admin -d test -c data --headerline --type=csv /tmp/data.csv
7.5 将MySQL world库下多张表导出
select concat("select * from ",table_schema,".",table_name ," into outfile '/tmp/",table_schema,"_",table_name,".csv' fields terminated by ',';") from information_schema.tables where table_schema ='world';
7.6 mysql导出csv格式转换:
select * from test_info
into outfile '/tmp/test.csv'
fields terminated by ',' ------字段间以,号分隔
optionally enclosed by '"' ------字段用"号括起
escaped by '"' ------字段中使用的转义符为"
lines terminated by '\r\n'; ------行以\r\n结束
因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:easydb.net
微信公众号:easydb
关注我,不走丢!
MongoDB备份(mongoexport)与恢复(mongoimport)的更多相关文章
- MongoDB备份(mongodump)和恢复(mongorestore)
MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件 1.备份数据使用下面的命令: >mongodump -h ...
- MongoDB备份(mongodump)与恢复(mongorestore)工具实践
mongodump和mongorestore实践 1.mongodump备份工具 mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档 ...
- MongoDB 备份(mongodump)与恢复(mongorestore)
MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器 ...
- 学习mongo系列(十)MongoDB 备份(mongodump)与恢复(mongorerstore) 监控(mongostat mongotop)
一.备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. mongo ...
- 菜鸟的mongoDB学习---(七)MongoDB 备份(mongodump)与恢复(mongorerstore)
MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据. 该命令能够导出全部数据到指定文件夹中. mongodump命令能够通过參数指定导出的数据量级转存的s ...
- MongoDB 备份(mongodump)恢复(mongorerstore) 导出 (Mongoexport) 导入( Mongoimport)
MongoDB 备份(mongodump) 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的 ...
- mongodb备份恢复,数据导入导出
数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to d ...
- 010.MongoDB备份恢复
一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...
- MongoDB 备份(mongodump)与恢复(mongorestore)
MongoDB 备份(mongodump)与恢复(mongorestore) 备份:使用mongodump命令导出所有数据库到指定目录 参数说明: --host:MongoDB所在服务器IP. -- ...
随机推荐
- 【面试题】在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起TCP的三次握手 建立TCP连接后发起HTTP请求 服务器响应HTTP请求 浏览器解析h ...
- Springboot — 用更优雅的方式发HTTP请求:RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率. 我之前的HTTP开发是用ap ...
- win32 C++制作美观按钮,告别win32 API编程中默认的灰色按钮
使用win32 API制作美观按钮,当鼠标移入/移出按钮时改变按钮背景颜色,类似HTML网页中的效果,告别win32 API编程中默认的灰色按钮,效果图见下面动图和视频. 下载地址: 按钮效果(win ...
- VS2015配置海康威视工业相机SDK二次开发
1.概述:工业相机SDK是用于控制相机的一个独立组件,支持获取实时图像数据.配置参数.对图像进行后续处理等功能.工业相机SDK兼容GigE Vision协议.USB3 Vision协议.Camera ...
- DPSK通信系统的FPGA实现
之前接触过一些FPGA的相关知识,借着实现一个简单的DPSK系统,顺便复习和记录一下Verilog HDL的简单使用方法.准备直接用一张图展现DPSK的调制解调原理,再按照模块介绍Verilog的实现 ...
- Linux下修改禅道端自定义端口号
第一种方式 一. 首先,如果我们的服务器的80端口没有开放的话,那么我们就是只能修改Apache应用服务的端口了,其实非常简单,安装完成禅道后,在任意目录下输入命令: /opt/zbox ...
- 关于AES-CBC模式字节翻转攻击(python3)
# coding:utf-8 from Crypto.Cipher import AES import base64 def encrypt(iv, plaintext): if len(plaint ...
- angular8 大地老师学习笔记---第八课
/*ViewChild获取dom节点 1.模板中给dom起一个名字 <div #myBox> 我是一个dom节点 </div> 2.在业务逻辑里面引入ViewChild imp ...
- burpsuite暴力破解之四种方式
给出字典排列.详情: 1. 2. 第一项:snipper(中译:狙击手) 1.为两个参数添加payload并且选中snipper,同时指定一个字典. 2.开始attack,并且给出响应结果. 可见有两 ...
- 使用shell发送邮件,方便快捷
目录 前言 鉴赏代码 总结 前言 很多时候我们需要发送邮件,比如定时任务,比如邮件验证码等等. 各大编程语言都可以实现发送邮件功能,但还是太麻烦了,所以通过tcpdump抓包发现smtp发送邮件原理还 ...