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

Mysql 如何在托管帐户和本地测试服务器之间保持数据库同步?,mysql,database,synchronization,Mysql,Database,Synchronization,我有几个数据库托管在一个共享服务器上,还有一个用于开发的本地测试服务器 我希望使这两组数据库保持一定程度的同步(或多或少每天) 到目前为止,我解决这个问题的想法似乎很笨拙。无论如何,这里是我到目前为止考虑的参考: 从联机数据库进行数据库转储,清除本地数据库,然后从转储中重新创建数据库。这需要大量的工作和大量的下载时间(这保证了我不会像我希望的那样做) 编写一个小型web服务来访问新数据,并在本地编写一个小型应用程序来与所述web服务通信,下载最新数据,并更新本地数据库 对于一个可能已经解决了无数

我有几个数据库托管在一个共享服务器上,还有一个用于开发的本地测试服务器

我希望使这两组数据库保持一定程度的同步(或多或少每天)

到目前为止,我解决这个问题的想法似乎很笨拙。无论如何,这里是我到目前为止考虑的参考:

  • 从联机数据库进行数据库转储,清除本地数据库,然后从转储中重新创建数据库。这需要大量的工作和大量的下载时间(这保证了我不会像我希望的那样做)

  • 编写一个小型web服务来访问新数据,并在本地编写一个小型应用程序来与所述web服务通信,下载最新数据,并更新本地数据库

  • 对于一个可能已经解决了无数次的问题来说,这两种解决方案听起来都是一项艰巨的工作。或者它甚至是一个我完全忽略的现有功能

    有没有一种简单的方法使数据库或多或少保持同步?理想情况下,我可以设置一次,安排并忘记

    我在两台服务器上都使用MySQL 5(MyISAM)数据库

    =============

    编辑:我看了一下复制,但似乎我不能走这条路,因为共享主机没有给我足够的服务器控制权(我在数据库上获得了大部分权限,但在MySQL服务器上没有)

    我只需要保持数据同步,其他什么都不需要。是否有其他不需要完全控制服务器的解决方案


    编辑2: 抱歉,我忘了提到我正在共享服务器上的LAMP堆栈上运行,因此仅Windows解决方案将无法工作


    我很惊讶地看到,对于这个问题没有现成的解决方案。

    您考虑过复制吗?这不是闹着玩的,但可能是你想要的。请参阅此处了解更多详细信息

    看看Microsoft Sync Framework-您需要在.net中编写代码,但它可以解决您的问题

    下面是SQL server的一个示例,但也可以使用ado.net provider for mysql对其进行调整

    在mysql数据库中,您需要额外的表来进行更改跟踪和锚定(跟踪上次的同步),这样才能工作,但只要您可以访问数据库,就不需要完全控制


    复制可能更简单:),但这可能只适用于您的情况

    您只是想更新数据,还是应该在本地数据库中覆盖任何架构更改?@Will:只更新数据。如果有任何架构更改,它将首先在测试服务器上实现,并在对生产服务器进行任何更改之前进行测试。Sylverdrag,听起来webservice方法是您的最佳选择,除非有第三方软件可以为您做到这一点。备份/还原方法在管理本地架构更改时会变得很棘手。复制不是与测试数据库同步所需的。我很可能会使用:“mysqldump productionserver | mysql测试服务器”。所以,使用管道符号,事情会进展得很快。您需要的是对托管服务器的ssh访问。如果您在生产服务器上没有脚本,那么应该运行mysqldump(或类似的东西)并发送数据,但是您需要非常非常好的安全性,这使得这很困难。这是一个共享主机。我认为我没有将MySQL服务器设置为复制主机所需的控制级别。我无法更改服务器的配置,甚至无法重新启动它。抱歉,我忘了提到我在LAMP堆栈上。服务器端不需要windows-只要您有一台windows计算机可以运行此同步(连接到托管服务器和测试服务器),就可以了。该应用程序可以在任何备用windows计算机上运行。好的,到时候我会仔细看看。