1. 为何备份
* 备份的目的:
* 防止硬件故障引起的数据丢失
* 防止人为错误误删数据
* 时间回溯
* 监管要求
2. MongoDB的备份
* MongoDB的备份机制氛围:
* 延迟节点备份
* 全量备份 + Oplog 增量
* 最常见的全量备份方式包括:
* mongodump;
* 复制数据文件;
* 文件系统快照;
3. 方案一:延迟节点备份
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223813431-212997050.png)
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223837176-1477898061.png)
4. 方案二:全量备份加oplog
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223858391-2095755536.png)
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223914580-1597337901.png)
5. 复制文件全量备份注意事项
* 复制数据库文件:
* 必须先关闭节点才能复制,否则复制到的文件无效;
* 也可以选择db.fsyncLock()锁定节点,但完成后不要忘记db.fsyncUnlock()解锁;
* 可以且应该在节点上完成;
* 该方法实际上会暂时宕机一个从节点,所以整个过程中应注意投票节点总数。
* 文件系统快照:
* MongoDB支持使用文件系统快照直接获取数据文件在某一时刻的镜像;
* 快照过程中可以不用停机;
* 数据文件和Journal必须在同一个卷上;
* 快照完成后请尽快复制文件并删除快照;
* Mongodump全量备份注意事项
* 使用mongodump备份最灵活,但速度上也是最慢的;
* mongodump出来的数据不能表示某个时间点,只是某个时间段
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223929096-1753884442.png)
* 用幂等性解决一致性问题
![](https://img2020.cnblogs.com/blog/630480/202004/630480-20200402223947740-562103710.png)