借助MyCAT实现读写分离的MySQL高可用架构
MyCAT是一个开源的,面向企业应用开发的数据库中间件产品,支持读写分离,支持基于心跳的自动故障切换。借助MyCAT及MySQL自身的主从复制特性,可搭建MySQL高可用集群,并实现读写分离。
架构图如下
架构说明
1. 两套自建MySQL主机,开启主从复制
2. 配置MyCAT主机,应用写请求发送至Master主机,读请求发送至Slave主机
3. Master主机故障后,Slave主机成为新的Master,接收读写请求
这样就实现了Mysql的高可用和读写分离架构,但还有两点不够完美
1. Mycat主机是单点故障风险点
2. 应用连接MySQL数据库得将默认3306端口改成8066
优化后架构如下
- 由于MyCAT本身是无状态的,配合负载均衡SLB即可消除单点故障
- 同时,阿里云的负载均衡本身就是高可用架构,不存在单点故障问题
- 此外,负载均衡前后端端口分别配置成3306和8066,应用侧就无需修改默认端口了
- 当然,如果没有现成负载均衡,通过HaProxy自建负载均衡集群也能实现相同的效果