The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
我有很多数据资源,它们只存在于一个地方,我真的不想失去它们。例如,我有一个托管的PHP网站,还有一个托管在同一地方的MySQL数据库。我还有一个在亚马逊DynamoDB上的NoSQL数据库,一个在Heroku上的PostgreSQL数据库,还有…好吧,有很多。如何备份它们对我来说一直是一个问题。
最直接的方法是租用一个便宜的每月15美元的服务器(或使用现有的服务器),并配置Cron来运行一个自定义的bash脚本,该脚本将从MySQL数据库中提取数据,将其打包,并上传到一些安全的地方,比如亚马逊S3存储桶。然后,我还需要另一个脚本用于PostgreSQL数据库,还需要另一个脚本用于FTP文件存档等等。
实际上,这就是我多年来一直在做的。这种解决方案的缺点始终是相同的:
我需要确保服务器始终处于运行状态(Linux 远非可靠)。
我也需要备份我的脚本。
每次想要更改脚本时,我都需要SSH到服务器上,记住它们的位置、启动方式等等。
最大的问题是每个数据源的所有者都面临着完全相同的一系列问题。多年来,我一直在问自己:“为什么我不能为这些脚本创建一个托管解决方案,帮助每个人备份他们的数据呢?”几周前我得到了答案:“哦,我可以”,于是我创建了ThreeCopies。
它是一个非常简单的托管bash脚本执行器,您可以通过Web界面进行编辑。然后,我们的服务器之一启动一个Docker容器(yegor256/threecopies是镜像,在这里是Dockerfile
)并在其中运行您的脚本。
该脚本每小时、每天和每周开始一次。因此,它被称为“三个副本”。根据数据备份的最佳实践,创建具有不同频率的单独副本是很好的。此外,您可能希望将不同的数据放入不同的副本中。为了帮助您的脚本了解任何特定时间正在运行的副本,我们将$period
环境变量传递给它,其值可以是hour
、day
或week
。
您的脚本如何提取数据、打包数据并归档数据取决于数据本身。我为最常见的场景创建了一个简短的备忘单。例如,这是我如何备份thePMP的MySQL数据库:
脚本的输出可以通过Web界面获得,这是该解决方案的另一个好处。很容易监控出错的地方并重新启动脚本。所有日志都可以通过浏览器访问。无需SSH,无需终端。
我认为这是AWS数据管道的一个简化版本。ThreeCopies做的事情完全相同,但配置更容易,价格更便宜。我每次执行脚本收费$0.01每小时。而且我实际上按秒计费,而AWS始终按整小时计费。以$5.00购买500小时。例如,你看到的脚本大约需要5分钟完成(数据库不是很大)。如果你跳过按小时执行,就像我上面所做的那样,你每个月会消耗170分钟的服务器时间,这将花费你大约$0.34每年!这比服务器及其监控便宜得多,我相信。
在你离开之前还有一件事。ThreeCopies是用Java 8编写的,是开源的,在GitHub上可以找到它。请随意检查代码,找到错误,并提供修复或改进的贡献。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 15:26