【问题标题】:What is the best way to take snapshots of an EC2 instance running MongoDB?为运行 MongoDB 的 EC2 实例拍摄快照的最佳方式是什么?
【发布时间】:2016-01-05 00:04:06
【问题描述】:

我想自动拍摄附加到 EC2 实例的卷的快照,该 EC2 实例运行我们的生产 MongoDB 副本集的主节点。在尝试评估 Google 的缺陷和最佳实践时,我发现在创建快照时很可能会出现数据不一致和损坏的情况但没有启用日志记录,在我们的案例中就是这样.

所以我的问题是 - 继续执行 aws ec2 create-snapshot --volume-id <volume-id> 以获取我的数据的干净备份是否安全? 此外,我计划通过每周运行一次的 cron 作业运行相同的命令。这是一个足够好的计划来安排备份吗?

【问题讨论】:

    标签: mongodb amazon-web-services amazon-ec2 aws-cli


    【解决方案1】:

    对于 EC2 实例上的 MongoDB,我执行以下操作:

    1. mongodump 到 EBS 卷上的备份目录
    2. 压缩 mongodump 输出目录
    3. 将 zip 文件复制到 S3 存储桶(启用加密和版本控制)
    4. 启动 EBS 卷的快照

    我编写了一个脚本来执行上述任务,并通过 cron 安排它每天运行。现在,您将在 EC2 实例、EBS 快照和 S3 上备份数据库。通过在 S3 存储桶上启用跨区域复制,您可以更进一步。

    此设置提供多级备份。现在,您应该能够在发生 EC2 故障、EBS 故障、AWS 可用区故障甚至整个 AWS 区域故障时恢复您的数据库。

    我建议阅读有关 EC2 部署的官方 MongoDB 文档: https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ https://docs.mongodb.org/ecosystem/tutorial/backup-and-restore-mongodb-on-amazon-ec2/

    【讨论】:

    • 非常感谢,这听起来像是一个更好的备份计划。我要试试这个。但我的部分问题仍未得到解答 - 我是否需要在启动 mongodump 或创建 ebs 卷的快照之前停止 mongod 进程,或者在运行 mongod 并更新/查询集合的情况下运行这些进程是否安全?
    • 在使用数据库时运行 mongodump 应该是安全的。此外,如果数据库停止,您将无法运行它。关于快照,我利用了转储文件在快照中的事实,所以我不担心活动的数据库文件。如果您想确保在从快照创建服务器时工作数据库立即可用,那么您需要按照我链接到的说明进行操作,该说明描述了暂停写入文件系统的过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多