我使用rsync备份服务器上的文件,使用mysqldump备份我的数据库。这是我的担忧:
我的数据库上的mysqldump大约需要30秒。我有一张名为照片的表格,用于存储用户上传图片的信息,包括文件的路径。我担心在完成mysqldump所需的30秒内上传或删除照片会发生什么。如果发生这种情况,然后我就恢复rsync'd文件和mysqldump数据,那么我可以查看一个数据库,其中包含指向已删除照片的行,或者缺少已成功上传的照片的行。
如何确保mysqldump与rsync完全匹配?
提前致谢, 布赖恩
答案 0 :(得分:1)
使用LOCK TABLES
来阻止您要备份的表中的任何写入活动。然后在mysqldump
完成后解锁它们。
答案 1 :(得分:1)
我认为答案很简单,只需在完成mysqldump后运行rsync :)这样最坏的情况下你会有几个不在db转储中的新文件,但你不会有不一致的db条目。
答案 2 :(得分:0)
您可以通过rsync MD5生成的mysqldump(在服务器上)和传输的(本地),然后比较两个哈希以确保它们匹配。 另一种方法是在版本控制文件上设置mysqldump(使用git或svn或您最喜欢的vcs)。例如,git的优势在于您可以轻松设置一些提交后挂钩以将更改推送到远程服务器,并且上载只是版本之间的差异,而不是整个转储。通过这种方式,您可以考虑减少备份时间。