我们考虑几种方案:
1、利用域名绑定。运用通过dns连接后端实例,当后端发生切换后,将dsn指向新的主库。
利用域名存在几个问题:dns缓存的问题。端口问题,如果主库备库的端口不一样,就无法直接通过dns办理。

2、在客户端办理。将组成mysql高可用集群的实例信息都配置到运用,运用检测当前主库。
这给运用开拓带来额外的编码事情。
3、引入proxy,运用只访问proxy,proxy将运用要求转发给后端mysql。proxy的浸染,和在web高可用架构中的负载均衡器浸染类似。
本文先容开源的proxysql。proxysql支持mysql传统主备复制架构、group replication架构。
proxysql的核心功能:
1、高可用
后端节点涌现故障时,可自动屏蔽非常节点。
当后端数据库发生主备切换时,proxysql可自动识别
2、读写分离
根据用户SQL,将读的SQL分发到只读节点,降落主库压力。
3、sharding
通过灵巧配置路由规则,可以实现数据库sharding。
下图是一个大略的ProxySQL架构示意图:
引入proxysql后,客户端不须要直接连接后端mysql。proxysql本身支持mysql协议,对客户端而言,proxysql本身便是一台mysql。
利用proxysql的流程大致如下:
1、客户端连接到proxysql实例。proxysql和mysql协议完备兼容。
2、客户端发起SQL语句。
3、proxysql吸收和解析SQL语句。根据语句内容和发起语句的会话的高下文,选择一台后端MySQL做事器,将SQL转发到后端实行。
4、后端SQL实行完成后,ProxySQL将后端返回的数据发送给客户端。
在这个架构下,客户端并不须要知道连接的是proxysql,对客户端而言,他连接的是一台标准的mysql做事器。在proxysql后端,可以是一个利用mysql复制技能搭建的集群,或者是一个group replication集群。如果后端mysql集群发生了主备切换,proxysql可以自动感知到,客户端不用做分外处理,就能实现数据访问高可用。
更多技能信息请查看云掣官网云掣YunChe - 可不雅观测运维专家 | 大数据运维托管 | 云MSP做事