我们正在开发一个使用mysql和php的web应用程序。在我们的应用程序中,我们需要根据用户界面上的触发器,将本地mysql数据库与远程mysql数据库(运行在不同的主机上)同步。
用户触发器以网页的形式出现,当用户单击按钮时,将触发php服务器脚本,该脚本将在后台执行这种同步。
我们计划通过打开带有远程和本地db的db连接并插入行,一次插入一行,以一种简单的方式完成这一任务。但是远程DB表的大小可能很高(多达几百万个条目),因此我们需要一个更有效的解决方案。
有人能帮助我们使用sql query / php代码吗?它可以高效地完成这个db同步,而不会给远程DB带来太多负担。
提前感谢
夏安
UPDATE远程DB不在我的控制范围内,所以我不能将它配置为主数据库,也不能对其执行任何其他设置。这是我的一个主要限制。这就是为什么我想使用php编程来完成它的原因。另一个选项是从远程DB读取1000行块并插入到本地DB中。但我想知道是否有更好的方法?
发布于 2013-05-22 13:22:45
当数据层具有内置的功能时,您不应该关注来自应用程序层的MySQL复制。请阅读“使用MySQL进行主/从复制”。https://www.digitalocean.com/community/articles/how-to-set-up-master-slave-replication-in-mysql是一个起点。
发布于 2013-05-22 13:29:15
就主服务器而言,复制的成本是最低的。它基本上是这样工作的:
因此,对Master的影响仅仅是将线性数据写入日志文件,再加上一点带宽。如果您仍然担心对主的影响,您可以(在系统级别)节流主和从之间的链接,或者在低活动时间(通过在适当的时候发出STOP/START SLAVE命令)打开链接。
我还应该提到,内置复制是在MySQL引擎内部的一个低级别上进行的。我不认为您可以通过外部流程获得更好的性能。如果您想在点击这个“同步”按钮时完全同步本地dtabase,那么不要再看下去了。
如果您可以使用部分同步,那么您可以让这个按钮在短时间内恢复复制(例如。START SLAVE为10次,STOP SLAVE再次自动执行;用户需要再次单击以获得更多数据)同步。
https://stackoverflow.com/questions/16692831
复制相似问题