我有一台运行 Sendy(批量邮件)的 EC2 服务器,我想备份 SQL 数据库。目前,我可以通过 Virtualmin 手动下载 backup.sql 文件,但我想自动执行此操作。
我一直在看 Glacier,因为它成本低而且我不需要定期检索备份;它仅用于紧急情况。我在网上看了很多,我对如何做到这一点有不同的想法。有人说只能从 S3 备份到 Glacier。在我的情况下,这意味着 EC2 -> S3 -> Glacier,但我真的不需要 S3 并且发现它不需要支付。
是否可以在没有 S3 的情况下自动将 backup.sql 文件从 EC2 发送到 Glacier?
或者,如果您认为有更好的方法来处理这个问题,那么我对想法持开放态度。
这里有两个相关的 AWS 服务: - Amazon Glacier,最近称为 Amazon S3 Glacier,专为长期企业归档而设计。除非您完全了解服务、保险库、档案等,否则不应使用它。Amazon S3 是一种更加灵活的服务,基于文件/对象。它有许多存储类,包括标准、不频繁访问 (IA)、Glacier 和深度存档。这是您应该使用的服务。
使用 AWS S3,您可以简单地上传您的备份文件。您可以根据日期使用不同的文件名,也可以覆盖旧文件并打开版本控制。
您可以使用诸如Restic 之类的增量备份工具,这将减少您的存储需求,并且可以使备份过期(例如,祖父、父亲、儿子计划)。如果你使用 Restic,你必须确保不要因为召回时间而将诸如索引之类的文件放入 glacier 类 - 最好将它们保持在 IA 类或类似的类中。您可以在技术上将数据文件移动到冰川类型类,但最短存储时间可能会抵消节省。简单地将文件存储到 S3 深度归档类中可能更简单、更便宜。
无论哪种方式,这很容易实现。您有一个执行数据库导出的 cron 作业,然后使用 S3 API 将文件上传到 S3。这是我如何使用 restic 为 mysql 做的
或者,如果您想进行基本的 S3 上传,我在 Windows 上使用的命令行是这样的 - Linux 类似
在这两种情况下,我都会打开存储桶版本控制,但如果您只上传文件而没有像 Restic 这样的增量备份,这一点尤其重要。在这种情况下,您可能需要删除旧版本,否则成本会随着时间的推移而显着增加。