我们有一些服务器运行带有 MySQL 数据库的 tomcat 应用程序。这些服务器位于不同的城市,我们的客户在本地使用该 Web 应用程序。
在这些服务器上,crontab 作业每天运行两次,对数据库进行完整备份,并将此转储发送 (SCP) 到我们中央办公室的服务器。然后,我们将这些转储应用于本地数据库,这样如果发生紧急情况,我们的客户可以继续通过互联网使用该应用程序。
问题是每天的转储量都越来越大,并且传输这么多的数据并不简单,所以我们正在寻找一些增量备份解决方案和使用这种增量的复制方法。
您能给出一些关于如何做到这一点的想法吗?还有其他比我们想要的更好的解决方案吗?
谢谢。
答案1
保留以前的转储并使用rsync
,甚至更好,rdiff-backup
(http://www.nongnu.org/rdiff-backup/) 通过 ssh 而不是简单的 scp。
答案2
除了使用 rsync 之外的另一个选择是配置 mysql 复制,将每个常规数据库作为主数据库,将办公室中的数据库作为每个主数据库的从属数据库。您可以在此处阅读 mysql 的文档。。如果您想要保留 scp/rsync 样式的备份,您可以使用 bzip 或其他方法对备份进行压缩。还有兹曼达这将允许备份,而无需为每个要备份的系统运行从属系统。
答案3
另一个可能的选择是使用二进制日志,但不进行任何实际复制,原因如 syneticon-dj 所述。保留几天的二进制日志(它们可能很大)并使用mysqlbinlog工具来获取特定的时间段并在白天将更改重播到中央服务器上。
虽然存在一些性能和其他限制(例如事务),但它可能适用于您的设置。您还可以获得良好的审计跟踪,以准确查看 syneticon-dj 提到的“DELETE FROM”发生的时间,并可以将其从您的重播中删除,找到负责人等。
您显然希望保留完整的备份,但如果您关心的是保持中心更新,那么每晚进行完整备份同步并中间插入二进制文件可能是最不费力的,并且您仍然可以使用 S19N 的 rdiff-backup 建议进行每晚备份。