我为几个小客户开发网站,我希望能够使我的本地数据库与每个客户的生产服务器保持同步。(我在考虑每晚更新)他们的许多数据库都在数百兆字节,所以我觉得每晚创建和传输完整的转储是多余的。
以下是我迄今为止提出的轻率的想法:
在服务器上创建一个转储,并与我本地机器上前一天晚上的转储同步。那应该只传输文件的更改位吗?
在服务器上创建一个转储,并在本地将其与昨晚的转储进行比较。仅传输该差异。也许它也可以发送到原始转储的 md5,所以我可以确定我正在将差异应用于同一个基本文件。
获得对(大多数)这些服务器的 ssh 访问权限是可能的,但需要让我的客户以相当技术性的要求致电他们的托管服务提供商,这是我宁愿不必要求他们做的事情。如果您可以建议我可以通过 ftp/php 实现的解决方案,则可以加分。
编辑:
@Jacob 的回答提示了一些进一步的谷歌搜索,这导致了这个线程:比较两个 MySQL 数据库
这个问题(以多种形式)似乎很常见。大多数需求,以及因此的大多数工具,似乎都集中在使模式保持最新而不是数据上。此外,大多数工具似乎都是商业和 GUI。
到目前为止,最好看的选项似乎是来自 Percona Toolkit 的pt-table-sync,尽管在 OSX 上设置它看起来可能很痛苦。
我现在正在下载Navicat进行测试。我在 OSX 上运行,但它是一个商业 GUI 程序。