如果服务器崩溃,而您只有最后一个备份,您至少希望它本身是一致的/具有高完整性。好吧,我确实希望如此。
我担心的是,如果没有停机时间,人们就会面临数据库转储和静态文件复制之间的竞争:
无论您先启动哪一个,或者同时启动两个,一个都会先于另一个完成,从而允许通过与网站交互的用户来更新自身(例如,上传文件和/或导致数据库内容发生变化)。
抱歉,如果这是重复的,我还没有找到已经完全解决这个问题的问题。
您是否检查过数据库转储并检查记录的文件名/路径列表与静态内容备份中的实际文件列表是否存在不匹配的情况?
我假设文件系统级别的时间戳不一定与数据库中的时间戳匹配,因此比较最后的时间戳是不可靠的。
或者在实践中不一致的情况非常罕见,以至于您并不关心,因为服务器烧坏对您来说一开始就是一个更大的问题?
如果有帮助的话,我们使用的相关服务是Apache2,MySQL5。
谢谢!
答案1
不,您将网站置于“维护模式”(通常表现为“我们正在维护”页面或 100% 只读运行),直到您将网站恢复到稳定/一致的状态。如果上述操作不可行,您可能应该问问自己,依赖单个服务器是否是个好主意。
答案2
如果你使用的是 Linux,也许你可以使用LVM 快照以防止对静态文件的修改。
答案3
我会这样做:
- 启动数据库备份并记录时间戳
- 在运行时,将修改后的静态内容存储在备用位置(并继续为其提供服务)
- 启动静态内容备份
- 当两个备份都完成时,“提交”新的静态内容。
这样您就可以恢复到某个时间点。