2012-07-11 80 views
3

我为几个小客户开发网站,我希望能够保持我的本地数据库与每个客户的生产服务器保持同步。 (我正在考虑每晚更新)他们的许多数据库都在几百兆字节,所以我觉得每晚创建和传输完整的转储是过度的。如何让我的开发服务器数据库保持最新状态?

这里是轻率的想法我想出迄今:

  • 我的本地机器上创建服务器和rsync与前一天晚上的转储 上转储。那应该只能传输 文件的改变位?

  • 在服务器上创建一个转储,并从转储的昨晚 转储中创建一个转储。只传输该差异。也许它也可以发送到原始转储的 的md5,所以我可以确定我将diff应用于相同的 基本文件。

前往(大部分)这些服务器的SSH访问是可能的,但需要让我的客户打电话给他们的托管服务提供商与相当的技术要求,这是一件好事,我宁愿没有要求他们做。奖励点,如果你可以建议一个解决方案,我可以通过FTP/PHP实现。

编辑:

@雅各布的回答促使一些进一步的谷歌搜索导致此主题:Compare two MySQL databases

这个问题(多种形式)似乎很常见。大多数需求,因此大多数工具似乎都集中在使模式保持最新而不是数据上。而且,大部分工具似乎都是商业和GUI。

到目前为止,来自Percona Toolkit的最好看的选项似乎是pt-table-sync,虽然看起来在OSX上设置可能会很痛苦。我们正在下载Navicat来测试。我在OSX上运行,但是是一个商业GUI程序。

回答

0

我认为最有效的方法是使用rsync来备份文件,通过使用rsync来运行每晚,通过将昨天的备份同步到今天的备份然后运行当天的rsync进行增量备份。在备份方面,我会考虑将站点作为从站备份到您的服务器(主站)使用复制器功能的不同网站,这将允许您保持所有数据库保持最新并备份

http://dev.mysql.com/doc/refman/5.0/en/replication.html