zoukankan      html  css  js  c++  java
  • mongodb之备份

    前言

    数据库的备份非常重要


    备份方式


    使用Mongodb自带的运维管理工具(Ops Manager)

    需要单独部署,比较麻烦和复杂


    通过文件系统快照

    Linux需要LVM支持
    需要开启journal日志
    journal日志和数据文件需要在同一个逻辑卷


    通过使用cp或者rsync类似命令复制数据目录

    复制前需要服务停止写,否则可能会造成文件数据不一致
    复制所有的目录或者文件会造成空间的浪费
    do not support point in time recovery for replica sets
    不适合大分片集群


    通过mongodump命令备份

    连接mongodb实例读取数据,然后生成BSON文件,然后通过mongorestore恢复数据
    对小系统简单高效,不适合大系统的备份和恢复
    仅备份文档数据,恢复数据时需要重建索引
    备份大数据量时,可能会造成page faults,影响服务性能
    默认情况下不备份本地数据库local
    备份过程中,数据可能会修改,可以加上--oplog选项,恢复时加上--oplogReplay选项

    mongodump命令

    用途

    备份数据

    用法

    mongodump options --out path || --archive=filename

    常用选项

    --host <hostname><:port>, -h <hostname><:port>

    连接主机地址

    --port <port>

    连接端口

    --username <username>, -u <username>

    登录用户名

    --password <password>, -p <password>

    登录密码

    --authenticationDatabase <dbname>

    授权数据库,有指定导出db,则设置为导出db,默认为admin

    --db <database>, -d <database>

    指定备份的db,未指定导出所有

    --collection <collection>, -c <collection>

    指定备份的集合,未指定导出所有

    --query <json>, -q <json>

    导出过滤,未设置导出所有

    --gzip

    压缩导出数据

    --out <path>, -o <path>

    导出保存路径

    --archive <file or null>

    导出数据保存为archive打包文件,导出目录和导出打包文件只能二选一,--archive=打包文件名

    --oplog

    导出oplog日志,对mongos无效,只对有生成oplog的节点生效

    --excludeCollection string

    指定哪些集合不备份,有多个则选项使用多次即可

    --excludeCollectionsWithPrefix string

    根据集合前缀排除不备份的集合,有多个则选项使用多次即可


    mongorestore命令

    用途

    还原数据 跟mongodump搭配使用

    用法

    mongorestore options <path>
    mongorestore options --archive=filepath

    常用选项

    --host <hostname><:port>, -h <hostname><:port>

    连接主机地址

    --port <port>

    连接端口

    --username <username>, -u <username>

    授权用户名

    --password <password>, -p <password>

    授权用户密码

    --authenticationDatabase <dbname>

    授权数据库

    --db <database>, -d <database>

    指定导入数据库

    --collection <collection>, -c <collection>

    指定导入集合

    --drop

    恢复前删除已存在的集合

    --oplogReplay

    导入后执行oplog,保证数据的一致性

    --gzip

    备份文件是否压缩

    --archive <=file|null>

    导出的是打包文件,指定打包文件路径 --archive=filepath

    实践

    备份数据

    mongodump --host 127.0.0.1 --port 27025 -u root -p root --gzip --archive=mongodb_backup_2017-11-29.tar.gz

    恢复数据

    mongorestore --host 127.0.0.1 --port 27025 -u root -p root --gzip --nsExclude config* --archive=mongodb_backup_2017-11-29.tar.gz


    备注

    1. 使用mongorestore命令还原shards集群时需要过滤掉config数据库
    2. 不同类型集群备份需要注意的事项和步骤有差异,详情看相关的操作步骤文档
    3. 备份方式优先选择顺序 系统快照 > 数据目录备份 > Mongodb工具
    4. 可以考虑专门使用一从实例用于备份使用


    参考资料

    【1】mongodb备份方式
    https://docs.mongodb.com/manual/core/backups/

    【2】文件系统快照备份和恢复
    https://docs.mongodb.com/manual/tutorial/backup-with-filesystem-snapshots/

    【3】mongodb命令工具进行备份
    https://docs.mongodb.com/manual/tutorial/backup-and-restore-tools/

    【4】mongodump备份命令
    https://docs.mongodb.com/manual/reference/program/mongodump/

    【5】mongorestore恢复命令
    https://docs.mongodb.com/manual/reference/program/mongorestore/

    【6】副本集集群备份和恢复步骤
    https://docs.mongodb.com/manual/tutorial/restore-replica-set-from-backup/

    【7】分片集群备份和恢复
    https://docs.mongodb.com/manual/administration/backup-sharded-clusters/

    【8】单个实例恢复
    https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/

    【9】Mongodb运维工具
    https://docs.opsmanager.mongodb.com/current/application/

    作者:WadeYu
    出处:http://www.cnblogs.com/wadeyu/
    本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    数据库读现象 数据库锁
    Mysql索引
    视图 触发器 内置函数 流程控制 事务 存储过程
    pymysql模块
    表相关操作
    初识数据库
    python 进程
    python常见错误和异常
    python课程设计--学生管理系统
    python-类的多态的理解
  • 原文地址:https://www.cnblogs.com/wadeyu/p/7941784.html
Copyright © 2011-2022 走看看