mongo shell 之 数据导出&导入&备份&恢复

来源:互联网 发布:window7安装ubuntu 编辑:程序博客网 时间:2024/06/06 18:22

    mongodb 在进行数据导入导出,备份


1. 数据导出 mongoexport

   1. 命令选项:

      -h 服务器ip地址  
      -p 服务器端口号
      -u 用户名
      -p 用户密码
      -d 指定导出的库名称
      -c 指定导出的集合名称
      -q 查询条件,'查询器', 相当于查询时的查询器
      -f 指定导出的集合中的字段,多个字段以逗号隔开 ,相当于查询时的字段筛选器
      -o 生成的文件名
      --type json/csv 导出数据类型,默认为json 格式数据

   2. 导出示例:

       2.1 导出json文件:   导出一个普通json 文本文件

           

       2.2 指定字段导出csv 文件: 导出一个普通 csv 文本文件

           

       2.3 导出查询结果: 导出年龄大于20的所有学生文档

          

   3. 注意事项:

       1. 命令是在linux shell中执行的

       2. 数据导出单位是集合,不能直接导出一个库的内容

       3. 数据导出为一个普通的文本文件

       4. 数据导出过程会中断读写操作


2. 数据导入 mongoimport

    1. 常用选项:

       -h 服务器ip地址和端口号
       -u 用户名
       -p 用户密码
       -d 导入库名称
       -c 导入集合名称
       --type csv/json  默认为json 格式
       --fileds 字段名称, 只用文件为csv 格式的数据文件,且--type 为csv 的时候,才能使用
       --file 导入文件

    2. 导入示例:

        2.1 导入json 文件

            

        2.2  导入csv 文件

            

    3. 注意事项:

         3.1 命令是在linux shell中执行的

         3.2 在使用--field参数时,--type必须是csv类型

         3.3 在导入的时候,应该先清除数据库中的数据,否则会包主键冲突

         3.4 数据导入过程会中断读写操作


3. 运行时备份:mongodump

    1. 常用选项:

        -h 服务器ip地址
        -p 服务器端口号
        -u 用户名
        -p 用户密码
        -d 指定导出的库名称
        -c 指定导出的集合名称
        -q 查询器
        -o 导出目录,必须是目录

    2. 常用示例:

        1) 导出数据库:

           

       2) 导出集合

          

      

    3. 注意事项:    

        1) 命令在linux shell 中执行

        2) 每个集合导出两个文件,一个是二进制bson文件,记录文件的内容,一个是json 文本文件,记录集合的索引及其它信息

        3) 文件导出位置必须是文件夹,


4. 运行时恢复 mongorestore

    1. 常用选项:

         -h 服务器ip地址

         -p 服务器端口号
         -u 用户名
         -p 用户密码
         -d 指定导出的库名称
         -c 指定导出的集合名称
         --dir 文件夹名称,此处需要注意,比导出时的文件夹路径多了一个数据库名

    2. 常用示例:

        1) 恢复整个数据库: -p 应该改为 --port 27017

           

        2) 恢复一个集合:

           

    3. 注意选项:

        1) 命令在linux shell 中执行,可通过 mongorestore --help 查看选项信息

        2) 整个库恢复时,--dir 指定的是目录, 导入集合时,--dir 指定的是文件


5. 数据库锁:

    mongodb 数据存储在缓冲池和数据库文件中,所以在执行运行时备份时,只能导出文件中的数据,但是不能备份缓冲池中的数据,所以就需要用到锁了.执行fysnc 锁之后,就会将缓冲池中的数据写入文件.也由于mongo 有些数据在缓冲池中存储,所以也是mongodb也是比较耗内存的.

       

      1. 打开fysnc 锁: 加锁之后,mongo下的所有数据库均不能插入修改,需要等待数据库解锁之后才能继续执行

           use admin

           db.runCommand({fsync:1,lock:1})

          

      2. 关闭fysnc 锁

           use admin

           db.fsyncUnlock()

          


6. 数据修复:

    当遇到突然断电等情况时候,由于mongodb 的存储结构会产生垃圾数据,mongodb 提供了一个自我修复的能力,执行 db.repairDatabase() 即可.自我恢复是一个比较慢的过程

  

1 0
原创粉丝点击