我希望使用主从MySQL (或MariaDB)复制到远程服务器,以防止硬件故障。我有两个目标:保持低响应时间和不丢失重要数据。好的解决方案是对大多数数据进行异步复制,以保持系统的响应性和重要表(支付)的半同步复制。
在最好的情况下,具有同步/异步复制的表应该位于同一个数据库或同一个mysql服务器上。但据我所知,如果主和从都启用了半同步复制,mysql将对所有数据使用半同步复制。
不太好的方法是将两个mysql实例作为主实例(一个启用了半同步,另一个启用了禁用)。然后,我需要两个奴隶或多源复制。多源复制仍然在MySQL的dev版本和MariaDB中的不支持半音中。
我目前发现的唯一一种基于https://dba.stackexchange.com/a/41491/55235 M1的工作方式
M2
S1 (M2的半同步从站)
有可能使用一个主从对进行semisync+async复制吗?若否,上述方案是否可行的解决方案?
发布于 2014-12-18 03:43:26
如果需要,Semisync复制将动态切换到异步。
我以前在MySQL复制:1从/多主上提到过这一点
在那篇文章里我说
有了这个设置,您就可以在两个数据中心内进行块级复制。如果您使用的是MySQL 5.5,则可以让半同步复制将SQL发送到另一个DataCenter,而无需等待执行仅确认的SQL。这使得标准的MySQL异步复制通常会导致MySQL母版的间歇性降到最低。如果出现任何突然的网络延迟,DataCenters之间的DataCenters复制将从Semisync切换到异步。一旦条件改善,MySQL复制就会切换回Semisynch。
在我的另一篇老文章通过MySQL复制,可以实现多大的恢复力?中,我提到了一个选项,它显示了半同步可以切换到异步和返回:
rpl_半半_同步_主控_等_不是_从站:对于半同步复制,对于每个事务,主服务器都会等待超时,等待从某个半同步从接收到的确认。如果在此期间未发生响应,则主服务器将恢复到正常复制。此变量控制主服务器是否在恢复到正常复制之前等待超时过期,即使从计数在超时期间下降到零。
因此,不能在同一个MySQL实例上设置半同步复制和异步复制。再说一遍,您不需要这样做,因为它的设计是根据响应时间或响应时间的不足在它们之间切换。
顺便说一下,设置半同步复制,半同步插件激活在主和从。请参阅我关于如何安装Semisync复制的文章MySQL复制是否受高延迟互连的影响?。
https://dba.stackexchange.com/questions/86471
复制相似问题