来自远程DB的mysql增量复制

时间:2013-05-22 13:17:11

标签: php mysql

我们正在使用mysql和php开发一个Web应用程序。 在我们的应用程序中,我们需要根据用户界面的触发器将本地mysql数据库与远程mysql数据库(在不同主机上运行)同步。

用户触发器采用网页的形式,当用户点击按钮时,将触发php服务器脚本,该脚本应在后台执行此同步。

我们计划通过打开与远程和本地数据库的数据库连接并一次插入一行来以一种简单的方式完成它。但远程数据库表的大小可能非常高(大到几百万个条目),因此我们需要一个更有效的解决方案。

有人可以帮助我们使用sql查询/ php代码,它可以高效地执行此数据库同步,而不会给远程数据库造成太大负担。

提前致谢

Shyam

更新 远程数据库不在我的控制范围内,因此我无法将其配置为主数据库或对其进行任何其他设置。所以这是我的一个主要限制。这就是为什么我想用PHP编写程序。我的另一个选择是从远程DB读取1000行的块并插入本地DB。但我想知道是否有更好的方法?

2 个答案:

答案 0 :(得分:1)

当数据层具有内置的此功能时,您不应该关注来自应用程序层的MySQL复制。请阅读“使用MySQL进行主/从复制”。 https://www.digitalocean.com/community/articles/how-to-set-up-master-slave-replication-in-mysql是一个起点。

答案 1 :(得分:0)

就主人而言,复制成本很低。它基本上是这样的:

  1. Master将所有(相关)活动记录到平面日志文件中
  2. Slave会不时地下载此日志并在本地重播二进制日志
  3. 因此,对Master的影响只是将线性数据写入日志文件,加上一点带宽。如果您仍然担心对主服务器的影响,您可以限制主服务器和从服务器之间的链接(在系统级别),或者只是在低活动时间期间打开链接(通过在适当的时间发出STOP/START SLAVE命令)。

    我还应该提到内置复制发生在MySQL引擎内部的低级别。我认为您无法通过外部流程获得更好的性能。如果您想在点击“同步”按钮时完全同步本地dtabase,那么不要再看了。

    如果您可以使用部分同步,那么您可以让此按钮在短时间内恢复复制(例如,START SLAVE再次自动恢复10次,STOP SLAVE再次自动恢复;用户需要再次点击获得更多数据)同步。