1.备份恢复工具介绍:

  1. mongoexport/mongoimport
  2. 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.版本介绍

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)的更多相关文章

  1. MongoDB备份(mongodump)和恢复(mongorestore)

    MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的mongodump.exe和mongorestore.exe文件 1.备份数据使用下面的命令: >mongodump -h ...

  2. MongoDB备份(mongodump)与恢复(mongorestore)工具实践

    mongodump和mongorestore实践 1.mongodump备份工具 mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档 ...

  3. MongoDB 备份(mongodump)与恢复(mongorestore)

    MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器 ...

  4. 学习mongo系列(十)MongoDB 备份(mongodump)与恢复(mongorerstore) 监控(mongostat mongotop)

    一.备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. mongo ...

  5. 菜鸟的mongoDB学习---(七)MongoDB 备份(mongodump)与恢复(mongorerstore)

    MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据. 该命令能够导出全部数据到指定文件夹中. mongodump命令能够通过參数指定导出的数据量级转存的s ...

  6. MongoDB 备份(mongodump)恢复(mongorerstore) 导出 (Mongoexport) 导入( Mongoimport)

    MongoDB 备份(mongodump) 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的 ...

  7. mongodb备份恢复,数据导入导出

    数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to d ...

  8. 010.MongoDB备份恢复

    一 MongoDB备份 1.1 备份概述 mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoi ...

  9. MongoDB 备份(mongodump)与恢复(mongorestore)

    MongoDB  备份(mongodump)与恢复(mongorestore) 备份:使用mongodump命令导出所有数据库到指定目录 参数说明: --host:MongoDB所在服务器IP. -- ...

随机推荐

  1. watch监听对象的属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 为什么要有 Servlet ,什么是 Servlet 容器,什么是 Web 容器?

    本文已收录至 https://github.com/yessimida/yes ,这里有我的所有文章分类汇总,欢迎 star! 以下代码相信大家都很熟悉,大学时学 Java Web 都写过这样的代码. ...

  3. 【题解】P3631 [APIO2011]方格染色

    很有意思的一道题,所以单独拿出来了. 完整分享看 这里 题目链接 luogu 题意 有一个包含 \(n \times m\) 个方格的表格.要将其中的每个方格都染成红色或蓝色.表格中每个 \(2 \t ...

  4. 上传python代码到pypi

    上传python代码到pypi 去pypi官网注册账号 在项目中添加setup.py # coding = utf-8 from setuptools import setup, find_packa ...

  5. Scrapy+Scrapyd+Scrapydweb实现爬虫可视化

    Scrapy+Scrapyd+Scrapydweb实现爬虫可视化 Scrapyd是一个服务,用来运行scrapy爬虫的 它允许你部署你的scrapy项目以及通过HTTP JSON的方式控制你的爬虫 官 ...

  6. Java经典小游戏——贪吃蛇简单实现(附源码)

    一.使用知识 Jframe GUI 双向链表 线程 二.使用工具 IntelliJ IDEA jdk 1.8 三.开发过程 3.1素材准备 首先在开发之前应该准备一些素材,已备用,我主要找了一个图片以 ...

  7. Windows 64位下安装php的redis扩展(php7.2+redis3.0)

    前置条件:为php7.2搭建redis扩展的前提是在本机上已经成功搭建好php的运行环境,我的电脑的运行环境时 apache2.4+mysql5.5+php7.2. 操作系统为64位,编译环境为Mic ...

  8. Linux下修改禅道端自定义端口号

    第一种方式 一.        首先,如果我们的服务器的80端口没有开放的话,那么我们就是只能修改Apache应用服务的端口了,其实非常简单,安装完成禅道后,在任意目录下输入命令: /opt/zbox ...

  9. UML—20—001

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  10. ubuntu 16.04 编译安装 python3.9

    下载 python包 wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz 解压 tar zxf Python-3.9.1.tgz ...