使用Consul和ProxySQL实现MySQL HA读写分离高可用性

本文讨论如何基于 ProxySQL, Consul, 和Master High Availability (MHA)实现MySQL读写分离的高可用性。

Consul是用于分布式系统中服务发现和配置,如果有服务器机器当机,Consul就不会再将请求发送到这台机器,这里用作MySQL的负载平衡器。

MHA能够检查MySQL备份的健康情况并监视,执行失败恢复。

SQLProxy允许同时连接n个数据库,进行统一管理。而对于客户端来讲,它看到的只是由SQLProxy表现出来的一个虚拟数据库服务。客户端只需要连接此SQLProxy虚拟的IP和端口,就能象访问普通数据库那样进行操作。

SQLProxy最大的特色是能够对访问数据库的事务(Transaction)进行并发地处理:当接收到插入、修改、更新等事务操作时,它同时将这个事务(Transaction)发送到后面连接的n台数据库上,这样n台数据库中的数据同时得到了更新;由于在任何时刻,SQLProxy后面连接的n台数据库的数据是完全一致的,因此当接收到查询操作时,整个数据库系统可以实现负载均衡(Load Balance),由此达到客户访问负荷的动态分担,提高整个系统的响应能力。

下面是配置Consul + ProxySQL + MHA + MySQL步骤:

在生产环境,Consul最少是3个实例,在应用服务器运行一个Consul,在两个ProxySQL服务器(mysql1和备份mysql2)扮演与ProxySQL扮演高可用性的一对黄金组合。


详细配置安装见原文:
Consul, ProxySQL, and MySQL HA - DZone Database
[该贴被banq于2016-09-25 18:41修改过]
[该贴被banq于2016-09-25 18:42修改过]