什么是重要的mongo数据文件进行备份

时间:2014-11-15 15:16:22

标签: mongodb backup database-backups

如果我想通过复制原始文件来备份数据库。我需要复制哪些文件?只有db-name.ns,db-name.0,db-name.1 ....或整个文件夹(local.ns ..,journal)。我正在运行副本集。我理解锁定隐藏的辅助节点然后将文件复制到新位置的过程。但我想知道我需要复制整个文件夹还是只复制一些文件。

THX

3 个答案:

答案 0 :(得分:3)

简单回答:所有这些。听起来很明显。这就是为什么:

  1. 如果您没有复制命名空间文件,那么您的数据库很可能无法正常工作。
  2. 如果不复制所有数据文件,则会丢失一些数据,并且您的索引将指向无效位置。有问题的数据库可能工作(减去存储在丢失数据文件中的数据),但我不打算这样做 - 因为数据非常重要,可以首先创建备份,不希望这种情况发生,是吗?
  3. 配置,管理员和本地数据库对于他们各自的功能是非常必要的 - 并且自从您使用该功能后,您可能也希望在恢复后使用它。
  4. 如何备份所有文件?

    到目前为止,我发现的最佳解决方案是创建了MongoDB数据所在的文件系统的LVM快照。为了使这些工作,需要包括期刊。通常,您不需要专门的备份节点来实现此方法。但是,有点设置很复杂。

    准备LVM备份

    假设您将数据放在默认数据目录/data/db中,并且您没有更改任何路径。然后,您将逻辑卷安装到/data/db并使用它来保存数据。假设你没有这样的东西,这是一个循序渐进的指南:

    1. 创建一个足以保存数据的逻辑卷。从现在开始,我将称之为/dev/VolGroup/LogVol1确保您仅使用卷组中大约80%的可用磁盘空间来创建逻辑卷。
    2. 在逻辑卷上创建文件系统。我更喜欢XFS,所以我们在/dev/VolGroup/LogVol1上创建了一个xfs文件系统:

      mkfs.xfs /dev/VolGroup/LogVol1
      
    3. /mnt

      上挂载新创建的文件系统
      mount /dev/VolGroup/LogVol1 /mnt
      
    4. 关闭mongod

      killall mongod
      

      (请注意,upstart脚本有时会在关闭mongod时出现问题,而且无论如何此命令都会优雅地停止mongod。)

    5. 通过发出

      将数据文件从/data/db复制到/mnt
      cp -a /data/db/* /mnt
      
    6. 调整/etc/fstab以便在重新启动时装入逻辑卷:

      # The noatime parameter increases io speed of mongod significantly
      /dev/VolGroup/LogVol1   /data/db   xfs   defaults,noatime    0    1
      
    7. 从当前的outpoint上卸下逻辑卷并将其重新安装到正确的位置:

      cd && umount /mnt/ && mount /data/db
      
    8. 重启mongod

    9. 创建备份

      现在创建备份就像

      一样简单
      1. 创建快照:

        lvcreate -l100%FREE -s -n mongo_backup /dev/VolGroup/LogVol1
        
      2. 装载快照:

        mount /dev/VolGroup/mongo_backup /mnt
        
      3. 将其复制到某处。我们需要这样做的原因是,只有在数据文件的更改不超过您在准备期间未分配的卷组中的空间之前,才能保留快照。例如,如果您有一个100GB磁盘并且为/dev/VolGroup/LogVol1分配了80GB,则快照大小将为20GB。虽然从拍摄快照的角度来看文件系统的变化小于20GB,但一切运行正常。之后,文件系统将拒绝进行任何更改。所以你并不着急,但你绝对应该将数据移动到异地,FTP服务器或任何你认为合适的地方。请注意,压缩数据文件可能需要很长时间,并且可能会耗尽“更改空间”#34;在完成之前。就个人而言,我喜欢将较慢的HDD作为存储备份的临时位置,在HDD上执行所有其他操作。所以我的复制命令看起来像

        cp -a /mnt/* /home/mongobackup/backups
        
      4. 当硬盘安装在/ home / mongobackup上时。

        1. 销毁快照:

          umount /mnt && lvremove /dev/VolGroup/mongo_backup
          

          释放为快照分配的空间,并删除对文件系统更改量的限制。

答案 1 :(得分:0)

整个db-Data文件夹+您拥有日志和日记的地方

答案 2 :(得分:0)

在MongoDB上备份数据的最佳解决方案是使用Mongo监控服务(MMS)。所有其他解决方案,包括手动复制文件,mongodump,mongoexport都落后于MMS。