• mongodb备份与恢复


    Mongodb备份与恢复

    &备份

    1、整个库备份

    # mongodump  -uhuoqiu -phuoqiuapp  -h 127.0.0.1:27017  -d saturn  --gzip --archive=/root/data/saturn_`date +%F_%H-%M-%S`.gz

     

    !-u :指定用户,用于备份的用户必须对数据库有读的权限。
    !-p: 指定用户密码
    !-h:指定数据库服务器ip和端口,例如:ip:port
    !-d: 指定要备份的数据库名称,
    !--gzip: 启动gzip压缩功能
    !--archive:指定备份的文件,使用方法 --archive=/root/data/saturn_`date +%F_%H-%M-%S`.gz

     

    @用于备份的目录必须要在一个大的磁盘上,一面空间不够影响使用。

     

    2、备份整个collection

    1)备份为bson格式的文件,使用命令mongodump

    #/data/mongodb/bin/mongodump  -uhqms -phqms123 -h 10.10.111.192:27017  -c users --db saturn -o /data/mongodata/

    !-u :指定用户,用于备份的用户必须对数据库有读的权限。
    !-p: 指定用户密码
    !-h:指定数据库服务器ip和端口,例如:ip:port
    !-db: 指定数据库名称
    !-c: 指定要备份的collection的名称
    !-o:指定输出的文件,

    2mongoexport默认导出为json格式的文件。

    #mongoexport -uhuoqiu -phuoqiuapp -h 127.0.0.1:27017 -d saturn -c mycol  -o /root/data/mycol-`date +%F_%H-%M-%S`.json

     

    !-u :指定用户,用于备份的用户必须对数据库有读的权限。
    !-p: 指定用户密码
    !-h:指定数据库服务器ip和端口,例如:ip:port
    !-d: 指定数据库名称
    !-c: 指定要备份的collection的名称
    !-o:指定输出的文件,
    !--type: 指定输出类型,默认为json格式。

     

    3、备份某个collection里面的某个字段

       例如导出mycol里面的id字段,导出为csv文件

       #mongoexport -uhuoqiu -phuoqiuapp -h 127.0.0.1:27017 -d saturn -c mycol --type csv -f "id"   -o /root/data/mycol-`date +%F_%H-%M-%S`.csv

    ! -d     数据库名

    ! -c     collection名

    ! -o     输出的文件名

    ! --type 输出的格式,默认为json

    ! -f     输出的字段,如果--type为csv,则需要加上 -f "字段名"

    !-q     过滤某个条件:例如:-q '{"function" : "test100"}'

    #mongoexport -h127.0.0.1:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol --csv -f id,function -q '{"function" : "test100"}'  -o /root/data/oplog.rs-`date +%F_%H-%M-%S`.csv

     

    @恢复

    1、整个库恢复

    #mongorestore -uhuoqiu -phuoqiuapp --host 127.0.0.1:27017 -d saturn --gzip --archive=/root/data/saturn_2017-07-13_22-02-15.gz

     

    2、基于collection的恢复

    !使用mongoimport导入,具体参数如下:

     1.1,还原整表导出的非csv文件
    mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名 
    重点说一下--upsert,其他参数上面的命令已有提到,--upsert 插入或者更新现有数据
    1.2,还原部分字段的导出文件
    mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名 
    --upsertFields根--upsert一样
    1.3,还原导出的csv文件
    mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名 

    !!!慎用—drop选项。

    1.1恢复整个表

    !使用mongorestore恢复表:

    #mongorestore  -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -c mycol -d saturn  /data/mongodata/saturn/mycol.bson

    ! 如果需要整表替换的,执行如下命令:

     #mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol --upsert --drop  /root/data/mycol_2017-07-14_18-00-35.json

    !如果是插入或者更新现有的表,执行如下命令:

     #mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol --upsert   /root/data/mycol_2017-07-14_18-00-35.json

     

    !如果是还原部分字段,执行如下命令:

    # mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –upsertFields user,name   /root/data/mycol_2017-07-14_18-00-35.json

     

    !还原csv文件

    # mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol --type  csv  --headerline --upsert --drop  /root/data/mycol_2017-07-14_18-00-35.csv

    3、将数据库进行重命名

    连接到mongo上面

    切换到需要操作的库上面

    >db.adminCommand({renameCollection: "<source_namespaces>", to: "<target_namespace>" ,dropTarget:true|false})

    dropTarget:有两个值:true和false,source_namespace是源库名.collection名,target_namespace是目标库名.目标collection名

    >db.adminCommand({renameCollection: "test.orders", to: "test.orders2014" })

    test是库名,orders、orders2014是collection名。如果target  source的库不存在,那么会将source 的collection全部copy过去。如果目标库是存在的,则需要加上dropTarget:true

    >db.adminCommand({renameCollection: "test.orders", to: "dxhy.orders" })

    上面的这个语句就是将test库里面的orders拷贝到新的库dxhy里面。只要将test库里面所有的collection都执行一次上面的命令就完成了数据库的重命名。

     

    --------崔帅的拾荒
  • 相关阅读:
    delphi 随意将函数执行权限提高到Ring0源代码
    delphi 使电脑睡眠代码
    delphi 监控文件系统
    在Delphi中使用系统对应文件类型的图标
    Panel
    delphi 读写记录类型文件Record
    C# winform 一次只能允许一个应用(使用mutex)
    winform捕获全局异常
    观察者模式实践-实现winform 窗体之间传值(事件实现)
    在wpf中利用异步lambda编程,模拟数据库连接,防止界面假死
  • 原文地址:https://www.cnblogs.com/cuishuai/p/7193356.html
Copyright © 2020-2023  润新知