李云洲 发布的文章

MyCAT是一个开源的,面向企业应用开发的数据库中间件产品,支持读写分离,支持基于心跳的自动故障切换。借助MyCAT及MySQL自身的主从复制特性,可搭建MySQL高可用集群,并实现读写分离。

架构图如下

MySQL集群.jpg

架构说明

1. 两套自建MySQL主机,开启主从复制

2. 配置MyCAT主机,应用写请求发送至Master主机,读请求发送至Slave主机

3. Master主机故障后,Slave主机成为新的Master,接收读写请求

这样就实现了Mysql的高可用和读写分离架构,但还有两点不够完美

1. Mycat主机是单点故障风险点

2. 应用连接MySQL数据库得将默认3306端口改成8066

优化后架构如下

MySQL集群-优化.jpg

- 由于MyCAT本身是无状态的,配合负载均衡SLB即可消除单点故障

- 同时,阿里云的负载均衡本身就是高可用架构,不存在单点故障问题

- 此外,负载均衡前后端端口分别配置成3306和8066,应用侧就无需修改默认端口了

- 当然,如果没有现成负载均衡,通过HaProxy自建负载均衡集群也能实现相同的效果