如何在托管账户和本地测试服务器之间保持数据库同步?

4
我有几个数据库托管在共享服务器上,还有一个本地测试服务器用于开发。
我想要保持这两组数据库在某种程度上同步(每天或更频繁)。
到目前为止,我解决这个问题的想法似乎都很笨拙。无论如何,供参考,以下是我迄今为止考虑过的方法:
1.从在线数据库中导出数据库转储文件,删除本地数据库,并从转储文件重新创建数据库。这需要大量的工作和下载时间(这保证了我不会像我希望的那样频繁执行此操作)
2.编写一个小型 Web 服务来访问新数据,并在本地编写一个小型应用程序与该 Web 服务通信,下载最新数据并更新本地数据库。
这两个解决方案都听起来需要大量工作,而且可能已经有数不清的解决方案。或者也许它甚至是一个我完全忽略的现有功能。
有没有一种简单的方法来使数据库保持更或多或少同步?理想情况下,我可以设置一次,然后安排好时间就可以忘记它。
我在两个服务器上使用 MySQL 5(MyISAM)数据库。
编辑:我看了看复制,但似乎我不能走这条路,因为共享托管不给我足够的控制服务器本身(我在我的数据库上有大多数权限,但不在 MySQL 服务器本身上)。
我只需要保持数据同步,没有其他要求。是否有任何其他解决方案不需要完全控制服务器?
编辑 2:对不起,我忘记提到我正在共享服务器上运行 LAMP 堆栈,因此 Windows-only 解决方案无法使用。
我很惊讶居然没有明显的现成解决方案来解决这个问题。

你只是想更新数据,还是本地数据库中的任何模式更改也应该被覆盖? - Will A
@Will:只需要数据。如果有任何模式更改,将首先在测试服务器上实现并进行测试,然后才会对生产服务器进行任何更改。 - Sylverdrag
听起来像是webservice方法是你最好的选择,除非有一些第三方软件可以为你完成这个任务,Sylverdrag。备份/恢复方法会变得棘手,因为你的本地模式更改需要管理。 - Will A
复制并不是与测试数据库同步所需的工具,最好使用 “mysqldump productionserver | mysql test server”。使用管道符号可以让事情快速进行。你需要的是连接到托管服务器的ssh访问权限。如果没有这个权限,生产服务器上的脚本应该运行mysqldump(或类似的工具)并将数据发送出去,但这需要非常非常好的安全性,这使得它变得困难。 - Luc Franken
2个回答

2

这是一个共享主机。我认为我没有足够的控制级别来设置MySQL服务器作为复制主服务器。我无法更改服务器的配置甚至重启它。 - Sylverdrag

0
看看微软同步框架 - 你需要用 .net 编写代码,但它可以解决你的问题。

http://msdn.microsoft.com/en-in/sync/default(en-us).aspx

这里是一个针对SQL Server的示例,但是可以使用Mysql的ado.net提供程序进行适应。

http://code.msdn.microsoft.com/sync/Release/ProjectReleases.aspx?ReleaseId=4835

为了使其正常工作,您需要在MySQL数据库中使用附加表来进行更改跟踪和锚定(跟踪最后一次同步),但只要您可以访问数据库,就不需要完全控制。

复制可能更简单 :), 但在您的情况下,这也可能起作用。


抱歉,我忘了提到我正在使用 LAMP 技术栈。 - Sylverdrag
只要您有一台可以运行此同步的Windows机器(连接到您的托管服务器和测试服务器),则在服务器端不需要Windows。该应用程序可以在任何空闲的Windows机器上运行。 - Roopesh Shenoy
好的,那我会仔细看一下。 - Sylverdrag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接