MongoDB备份策略和Backup服务简介

冗余 versus 备份

冗余 != 备份

冗余 备份
  • Replica Set
  • 7*24可用
  • 故障发生无需干预
    • 秒级自动failover
    • 多数据中心部署
  • 系统升级维护对用户透明
  • 灾难恢复
  • 程序Bug损坏数据
  • 人工误操作
可以离线多少时间? 可以丢失多少数据?

备份策略

mongodump / mongorestore

  • 导出BSON文件
  • 可以选择备份Namespace
  • 可以通过Oplog实现时间点恢复(Point-in-time)
  • 缺点
    • 速度较慢
    • 分片集群需同步

文件系统备份

  • 常见方式
    • 文件复制
    • 文件系统或块存储快照,如LVM 或AWS EBS
  • 速度最快
  • 缺点

    • 日志文件(journal)落盘
    • 无法选择性备份
    • 备份文件占用空间较大
    • 分片同步问题

    Backup服务

    • MongoDB开发
    • 操作简单
    • 选择性备份
    • 时间点恢复
    • 缺点
    • 无法备份Standalone mongod

小结

  • 分片集群备份时的同步问题
  • 若无法恢复,失去备份意义
    • 持续恢复?

Backup服务

Backup & Restore系统

是MongoDB云服务系统的主要组件之一,目标是降低备份难度(只需要安装agent)

类似Secondary 又不是Secondary
  • 复制数据
  • 更新数据,采用MongoDB Replication机制
  • Tail Oplog
  • 回访Oplog
  • 离线维护时不影响用户生产环境
  • 不是Replica Set组成部分
  • 不参与选举
  • 不参与Write Concern
  • 无状态,没有磁盘I/O
主要组件

Backup Agent

  • 可执行文件,用GO语言编写
  • 无状态,从Ingestion获得配置命令
  • 发送InitialSync数据
  • 传输Oplog流
  • 对于Sharded Cluster快照,试图同步Shards和Config servers
  • 序列化BSON,压缩,网络传输