现在,我有一个 cron 来以一定的时间间隔运行服务器的备份。我现在手动将此文件下载到我的家用电脑上。我只是想让所有备份映像都存储在 SQL 数据库的二进制表中。这是一个好主意吗?听起来可能是。
谢谢
答案1
想一想:备份的主要目的是什么?
是的,如果发生不幸事件,您需要它们能够尽快恢复。
这就是为什么在规划备份时应该使用 KISS 原则。备份要复杂(这样您就可以从某个特定日期/版本恢复),但不要太复杂。使用一些已经可用的备份软件。在 MySQL 中存储二进制 blob 对我来说听起来不是一个万无一失的解决方案。我会将文件存储为文件,将数据库存储为数据库。
我知道这次您计划将数据从 ISP 传输到您的家中,但想象一下,如果 MySQL 服务器与您想要备份的服务器位于同一个数据中心,并且数据中心因停电而瘫痪。一台非常重要的服务器因停电而触电,并且由于硬盘故障而无法启动。您的 MySQL 服务器启动了,但有一些表损坏需要修复(如果可以修复的话)。这将使恢复部分比应有的慢得多,也麻烦得多。
此外,备份的很大一部分实际上不是备份阶段,而是定期测试它们。如果您可以打开文件管理器并浏览图片,而不是执行某些 MySQL SELECT(或使用某些从 DB 获取 blob 的应用程序),那么查看最新图像备份是否正确完成会更容易得多。
但数据库在备份方面并非完全无用。备份软件可以使用它存储各种元数据:备份日期、备份集、备份时长、文件版本、文件校验和等等。这类数据易于存储,并且可以快速从数据库中获取。二进制 blob 则不然。
答案2
我认为将图像存储在数据库中没有任何好处。我可以在数据库中看到有关它们的字符串信息,以及图像在磁盘上的位置。例如,这可以让您搜索某些文件何时发生更改。数据库的原因是它的搜索功能。将图像存储在 blob 中不允许您搜索它们,因此没有任何好处,除非我遗漏了什么。