21

我想从 MySQL 切换到 MongoDB,但我无法接受大量数据丢失(超过 1 小时)。

我需要有 3 个备份计划:

  1. 每小时备份计划。数据每 X 分钟刷新一次磁盘,如果服务器出现问题,我将确保在重新启动后它至少会保留一个小时前的所有数据。我可以配置它吗?

  2. 每日备份计划。数据每天都会同步到备份磁盘,所以即使服务器爆炸,我也可以在几个小时内恢复昨天的数据。我应该使用 fsync、主从还是其他?我希望流量最少,因此理想情况下只会发送更改。

  3. 每周备份计划。数据同步到第二个备份磁盘,所以如果服务器和第一个备份磁盘都爆炸,我至少有上周的数据。这是可靠性问题,因此可以通过网络发送所有数据。

我该怎么做?

4

5 回答 5

21
  1. fsync命令将数据刷新到磁盘。默认情况下每 60 秒执行一次,但可以使用--syncdelay命令行参数进行配置。

  2. 备份文档对每日和每周备份有一些很好的指导。对于日常备份,主从配置似乎是最好的选择,因为它只会同步更改。

  3. 对于每周备份,您还可以使用主从配置或复制。另一个选项是mongodump 实用程序,它将备份整个数据库。它能够在数据库运行时创建备份,因此您可以在主数据库或其中一个从属数据库上运行它。您也可以在备份之前锁定从站。

于 2010-09-28T08:48:26.940 回答
1

如果您想创建从从属 mongodb 数据库到 S3 的备份,请尝试使用此备份脚本。

  1. 数据库主机(首选次要以避免影响主要性能)

    HOST=' SomeHost /mongodbtest-slave'

  2. 数据库名称 DBNAME=***

  3. S3 存储桶名称 BUCKET=*-backup

  4. Linux 用户帐户 USER=ubuntu

  5. 当前时间TIME=/bin/date +%d-%m-%Y-%T

  6. 密码密码=somePassword#!2*1

  7. 用户名 USERNAME=someUsername

  8. 备份目录 DEST=/home/ubuntu/tmp

  9. 备份目录的tar文件 TAR=$DEST/../$TIME.tar

  10. 创建备份目录(-p 以避免警告,如果已经存在)/bin/mkdir -p $DEST

  11. 记录 echo "在 $TIME 将 $HOST/$DBNAME 备份到 s3://$BUCKET/";

  12. 从 mongodb 主机转储到备份目录

mongodump --port 27017 -d DBNAME -u 用户名 -p 密码 -o $DEST

  1. 创建备份目录 /bin/tar cvf $TAR -C $DEST 的 tar 。

  2. 上传 tar 到 s3 /usr/bin/aws s3 cp $TAR s3://$BUCKET/

  3. 本地删除 tar 文件 /bin/rm -f $TAR

  4. 删除备份目录 /bin/rm -rf $DEST

全部完成回显“备份可在https://s3.amazonaws.com/$BUCKET/$TIME.tar

您可以使用上述步骤将它们放入 shell 可执行文件中,并使用 crontab 命令在任何时间间隔执行此操作。

于 2020-09-08T05:44:44.940 回答
0

如果您想完全外包备份解决方案,MongoDB 管理服务每六个小时拍摄一次快照。快照的默认保留策略将允许您获得 24 小时的时间点恢复、一周的每日快照、一个月的每周快照和一年的每月快照。

常见问题解答具有完整的保留政策。

备份服务通过读取 oplog 持续备份您的副本集,因此开销低于完整的本地定期快照。

于 2013-07-19T02:23:19.127 回答
0

可能你可以使用automongobackup

于 2015-11-03T06:58:07.653 回答
0

关于第一点。

MongoDB 有一个术语,如“持久写入操作”。如果启用了日志 ,您可能只会丢失尚未写入日志的数据。这是一个非常短的时间(默认为 100 毫秒)

关于第二点和第三点。

您可以设置主从复制,但这不会保护您免受数据错误的影响(例如,如果重要数据被意外删除)。因此,您需要以一种或另一种方式提供定期备份。

这里有几种方法:

  1. 如果您的文件系统支持 LVM 快照并且在您的 mongoDB 中启用了日志,那么 LVM 快照是一个很好的解决方案。有关更多详细信息,请参见此处
  2. mongodump - 您可以创建一个 shell 脚本,该脚本将通过 cron 运行计划备份并将它们发送到存储。这是一个好的脚本示例
  3. 备份即服务。有许多解决方案可以为您进行备份。
于 2021-03-08T10:54:14.463 回答