我为一个网站运行了两台负载平衡服务器,我希望数据库能够同步。查询可以在两台服务器中的任意一台上运行,因为它们都是生产站点,因此复制不能只向一种方向进行。
它不必是实时的,只要相当准确,以便人们在切换到不同的服务器时不会注意到差异。
答案1
答案2
此链接是关于主主复制,也称为循环副本。如果您没有写入量很大的数据库,则此方法应用起来很简单,而且效果很好。
答案3
我也会尝试不使用循环复制。
如果可能的话,使用标准复制,在两个节点上分发只读查询,并将读/写查询分发到主节点。适用于维基百科,可能也适用于您 :)
另一种方法是设置双节点主动-被动设置(drbd 和一些集群)。在应用程序上更简单(它只会看到一个要连接的 mysql 服务器),如果您不习惯这种东西,则需要在 HA 方面多加注意。您不会获得拥有两个不同的数据库服务器的性能奖励。
要做出选择,您需要确定您的主要兴趣是降低停机时间(标准复制或主动/被动集群)还是实现更好的性能(标准复制、循环复制等......)以及您的限制是什么(您可以修改应用程序吗,您可以修改多少,所需的性能,允许的预算等......)
为了从硬件中获得更好的性能(或者只是为了弥补采用主动/被动方式时的性能不足),请不要忘记 memcached 和类似的东西。
答案4
为什么不把事情简化一点呢?让两个前端使用相同的后端,然后使用 DRBD 和 Heartbeat 之类的东西来确保您的数据库不会成为单点故障。双主复制几乎总是以悲剧收场。