使用rsync的mongodb副本集备份

我configuration了mongodb副本集(我有3个db实例-Redhat),我想用rsync备份db文件(dbPath: / var / lib / mongo ),每天10或12次。

  1. 那么,在启动rsync之前是否需要停止mongod进程?

    • select一个副本集的服务器并停止mongod进程
    • 采取备份(使用rsync)
    • 启动mongod进程
  2. 否则,我可以在不停止mongod进程的情况下启动rsync (dbPath: / var / lib / mongo )。

  3. 除了LVM备份和mongodump之外,推荐的备份方法是什么?

那么,在启动rsync之前是否需要停止mongod进程?

要使用rsynccp进行文件复制备份,您需要通过停止mongod服务或在mongo shell中或通过驱动程序发出db.fsyncLock()命令来停止写入。 由于从备份开始的次要操作会间歇性地使用此方法,因此最好将其隐藏起来以避免驱动程序在下载或fsynclocking时试图从此成员读取数据。

我会确保你testing几个完整的备份和恢复周期。 尤其要注意可能使备份无效的rsync选项(例如: --ignore-existing --size-only --ignore-existing ,– --size-only ,– --partial )。

注意:如果您使用的是fsyncLock()方法,则在备份完成后会有一个db.fsyncUnLock()命令来恢复正常操作。 另一个警告:WiredTiger存储引擎只支持在MongoDB 3.2或更新版本中的fsyncLock

我可以在不停止mongod进程的情况下启动rsync (dbPath: / var / lib / mongo )。

不会。这会导致备份不一致。

除了LVM备份和mongodump之外,推荐的备份方法是什么?

支持的备份方法在文档中有描述: MongoDB备份方法 。

使用基于代理的备份服务(例如,MongoDB Cloud Manager)的破坏性(且更持续)备份方法更less。

如果要通过复制底层数据文件进行备份,则文件系统快照(LVM / EBS / …)通常不会中断所有写入mongod ,因此更mongod 。 对于正在运行的mongod文件系统快照确实有一些要求,如果要捕获一致的备份:所有数据必须位于同一个卷上,必须启用日志logging,并且文件系统必须支持时间点快照。 有关完整的详细信息,请查看官方文档和备份教程。