美文网首页
mongodb数据库备份和恢复(三)

mongodb数据库备份和恢复(三)

作者: 程猿先生 | 来源:发表于2017-12-13 20:00 被阅读0次

    Mongodb的安装及使用(一)
    Mongodb 与 python 的交互(二)
    mongodb数据库备份和恢复(三)

    MongoDB官方提供了两套数据导入导出工具,一般来说,进行整库导出导入时使用mongodumpmongorestore,这一对组合操作的数据是BSON格式,进行大量dump和restore时效率较高。

    进行单个集合导出导入时使用mongoexportmongoimport,这一对组合操作的数据是JSON格式,可读性较高。

    windows下面mongodb数据库备份和恢复

    1、mongodump(备份)及mongorestore(还原)

    →说明:
    mongodump是一个用于导出二进制数据库内容的实用工具,它导出的bson文档中只会包含着集合文档等信息,不包括索引信息(索引信息会单独导出),所以还原后,索引必须重建(这个不用担心,使用mongorestore会自动重建mongodump生成的索引信息)。3.4版本中添加了对只读视图的支持。

    →参数(以下仅列举常用参数,更多请参考help,下同):

    命令 全称 默认值 参考释义
    --help 查看mongodump命令的使用帮助
    --version 返回mongodump的版本号
    -h --host <hostname><:port> localhost:27017 指定mongod要连接的主机名及端口号
    --port <port> 27017 指定MongoDB实例监听客户连接的TCP端口号
    -u --username <username> 指定用于向使用认证的MongoDB数据库认证的用户名,与--password和
    --authenticationDatabase结合使用
    -p --password <password> 指定用于向使用认证的MongoDB数据库认证的密码。与--username和 --
    authenticationDatabase选项结合使用。
    -d --db <database> 指定要备份的数据库。如果不指定,mongodump会将此实例中的所有数据库备份。
    -c --collection <collection> 指定要备份的集合。如果不指定,则会将指定数据库或实例中的所有集合备份。
    --gzip 3.2版本+,压缩输出,如果mongodump指定导出到目录,则该选项会将每个文件都压缩,
    并添加.gz后缀;
    如果mongodump指定导出到文档或标准输出流,则该选项会压缩到文档或输出流中
    -o --out <path> 指定导出数据的目录路径,如不指定,则mongodump默认将文件输出到dump所在的工作目录中。
    该选项不能和--archive一起使用

    →举个栗子:

    我可以将数据备份到D:\offer\data\dump目录下面,首先创建这个路径。然后进入到mongodb的bin目录下面
    我的是:

    D:\offer\mongod\bin
    

    备份脚本是:

    mongodump -h 127.0.0.1:27017 -d test -o D:\offer\data\dump
    

    恢复脚本是:

     mongorestore -h 127.0.0.1:27017 -d test --directoryperdb  D:\offer\data\dump\test
    

    2、mongoexport(导出)及mongoimport(导入)
    2.1 mongoexport
    →参数:

    命令 全称 默认值 参考释义
    --help 查看mongoexport的使用帮助
    --version 查看mongoexport的版本号
    -d --db <database> 指定要在哪个数据库上运行该命令
    -c --collection <collection> 指定要导出的集合
    -f --fields <field1[,field2]> 指定导出时只导出一个或多个字段,导出多个时,需要使用逗号分隔;
    当字段中有空格时,需要用英文引号括起来。
    -q --query <JSON> 提供查询文档作为导出数据源
    --type<string> json 指定要导出的文件类型,可选值:json,csv
    -o --out <file> 指定要导出的文件路径(含文件名),如果不指定,则会导出为标准输出(例如stdout)

    →举个栗子:

    导出mytest数据库中的user集合到user.json文件中

    mongoexport -d mytest -c user -o D:\offer\data\dump\user.json 
    

    2.2mongoimport
    →参数:

    命令 可选值 参考释义
    --ignoreBlanks 忽略要导入文件中的空字段,如果不指定该参数,则默认会读取空字段并创建
    --type <json|csv|tsv> json,csv,tsv 要导入的文件类型,另外支持tsv
    --headerline 使用第一行作为字段名称
    --mode <insert|upsert|merge> insert(插入),
    upsert(替换数据库中的文档),
    merge(合并) 指定导入过程中,如何应对数据库文档与导入文件中的文档匹配
    (默认会使用_id字段对比)的情况

    其他参数与mongoexport基本一致

    →举个栗子:

    从user.json文件导入到mytest数据库中的user集合,并在之前进行删除

    mongoimport --drop -d mytest -c user --file D:\offer\data\dump\user.json  
    

    linux下面mongodb数据库备份和恢复

    linux下面我们可以创建一个自动备份脚本,可以设置定时任务,也可以手动备份。我是手动备份的。

    首先创建一个sh命令,我是放在home下面的

    vim /home/mongoBeiFen.sh
    

    输入如下内容:

    #!/bin/bash
    shijie=`date +%Y%m%d%H`
    backmongodbFile=mongodb$shijie.tar.gz
    cd /home/mongoDbback/
    /usr/local/mongo/bin/mongodump -h 127.0.0.1 --port 27017 -u mongo -p 123456  -d my_mongodb -o my_mongodb_dump/
    tar czf $backmongodbFile  my_mongodb_dump/
    rm my_mongodb_dump -rf 
    

    解释:

    存放备份的文件夹是/home/mongoDbback/

    -u是数据库名用户名 -p是密码 -d是数据库名 具体和window差不多,大家可以看下上面windows的解释。

    备份的时候只要运行一下

    ./mongoBeiFen.sh   
    

    就可以了。

    数据库恢复:

    /usr/local/mongo/bin/mongorestore -d my_mongodb my_mongodb_dump/my_mongodb/*            指向每个文件
    /usr/local/mongo/bin/mongorestore -h 127.0.0.1 --port 27017 -- drop --directoryperdb  my_mongodb_dump/my_mongodb 指向一个目录
    

    有问题的话可以尝试window的写法:

      /usr/local/mongo/bin/mongorestore -h 127.0.0.1:27017 -d test --drop  --directoryperdb  my_mongodb_dump/my_mongodb
    

    相关文章

      网友评论

          本文标题:mongodb数据库备份和恢复(三)

          本文链接:https://www.haomeiwen.com/subject/kmvzixtx.html