Mycat系列—生产实践案例-Mycat 读写分离案例
2017-12-07 14:32
483 查看
目前有大量 Mycat 的生产实践案例是属于简单的读写分离类型的,此案例主要用到 Mycat 的以下特性:
读写分离支持
高可用
大多数读写分离的案例是同时支持高可用性的,即 Mycat+MySQL 主从复制的集群,并开启 Mycat 的读写分离功能,这种场景需求下,Mycat 是最为简单并且功能最为丰富的一类 Proxy,正常情况下,配置文件也最为简单,不用每个表配置,只需要在 schema.xml 中的元素上增加 dataNode=“defaultDN”属性,并配置此 dataNode 对应的真实物理数据库的 database,然后 dataHost 开启读写分离功能即可。
配置过程请参考:Mycat系列—Mysql读写分离+强制走写节点+根据主从延时的读写分离
此时,第一个 writeHost 故障后,会自动切换到第二个,第二个故障后自动切换到第三个。
配置过程请参考:Mycat系列—Mysql读写分离+强制走写节点+根据主从延时的读写分离
MyISAM 引擎,经过实践,发现查询性能提升不少。
此外,为了减少主从复制的时延,也建议采用 MySQL 5.6+的版本,用 GTID 同步复制方式减少复制的时
延,可以将一个 Database 中的表,根据写频率的不同,分割成几个 Database,用 Mycat 虚拟为一个
Database,这样就满足了多库并发复制的优势,需要注意的是,要将有 Join 关系的表放在同一个库中。
最后,对于某些表,要求不能有复制时延,则可以考虑这些表放到 Gluster 集群里,消除同步复制的时延问
题,前提是这些表的修改操作并不很频繁,需要做性能测试,以确保能满足业务高峰。
总结一下,Mycat 做读写分离和高可用,可能的方案很灵活,只有你没想到的,没有做不到的。
读写分离支持
高可用
大多数读写分离的案例是同时支持高可用性的,即 Mycat+MySQL 主从复制的集群,并开启 Mycat 的读写分离功能,这种场景需求下,Mycat 是最为简单并且功能最为丰富的一类 Proxy,正常情况下,配置文件也最为简单,不用每个表配置,只需要在 schema.xml 中的元素上增加 dataNode=“defaultDN”属性,并配置此 dataNode 对应的真实物理数据库的 database,然后 dataHost 开启读写分离功能即可。
实践案例 一
若不想要自动切换功能,即 MySQL 写节点宕机后不自动切换到备用节点,则如下配置:<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS1" url="localhost2:3306" user="root" password="123456" /> </writeHost> </dataHost>
配置过程请参考:Mycat系列—Mysql读写分离+强制走写节点+根据主从延时的读写分离
实践案例 二
如果要实现自动切换到备用节点,则如下配置:<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456" /> <writeHost host="hostS1" url="localhost2:3306" user="root" password="123456" /> </dataHost>
此时,第一个 writeHost 故障后,会自动切换到第二个,第二个故障后自动切换到第三个。
配置过程请参考:Mycat系列—Mysql读写分离+强制走写节点+根据主从延时的读写分离
实践案例 三
当你是 1 主 3 从的模式的时候,可以把第一个从节点配置为 writeHost 2,第 2 个和第 3 个从节点则配置为 writeHost 1 的 readHost,如下所示:<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"> <readHost host="hostS2" url="localhost3:3306" user="root" password="123456" /> <readHost host="hostS3" url="localhost4:3306" user="root" password="123456" /> </writeHost> <writeHost host="hostS1" url="localhost2:3306" user="root" password="123456" /> </dataHost>
实践案例 四
为了提升查询的性能,有人创新的设计了一种 MySQL 主从复制的模式,主节点为 InnoDB 引擎,读节点为MyISAM 引擎,经过实践,发现查询性能提升不少。
此外,为了减少主从复制的时延,也建议采用 MySQL 5.6+的版本,用 GTID 同步复制方式减少复制的时
延,可以将一个 Database 中的表,根据写频率的不同,分割成几个 Database,用 Mycat 虚拟为一个
Database,这样就满足了多库并发复制的优势,需要注意的是,要将有 Join 关系的表放在同一个库中。
最后,对于某些表,要求不能有复制时延,则可以考虑这些表放到 Gluster 集群里,消除同步复制的时延问
题,前提是这些表的修改操作并不很频繁,需要做性能测试,以确保能满足业务高峰。
总结一下,Mycat 做读写分离和高可用,可能的方案很灵活,只有你没想到的,没有做不到的。
相关文章推荐
- Mycat生产实践---Mycat读写分离案例
- Mycat生产实践---分表分库案例
- 屌炸天实战 Mysql 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决
- 《Kubernetes与云原生应用》系列之六——容器设计模式实践案例:工作队列模式
- DBA_实践指南系列3_Oracle Erp R12系统克隆Clone(案例)
- Mycat生产实践---Mycat最佳实践
- MySQL主从延迟复制实践及生产故障案例恢复实践
- find+sed考试题及生产实战解决案例分享(考试答案系列)
- Mycat生产实践---Mycat实施指南
- DBA_实践指南系列5_Oracle Erp R12日常运维和管理(案例)
- DBA_实践指南系列2_Oracle Erp R12系统安装配置设定Setup(案例)
- DBA_实践指南系列10_Oracle Erp R12诊断功能Diagnostic(案例)
- Mycat生产实践---数据迁移与扩容实践
- 面向服务体系架构的业务规划和建模方法系列之四--实践案例介绍“汽车贷款 推荐
- DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
- MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决
- mycat实现mysql读写分离实践
- MyCat生产实践--一致性hash分片&扩容
- 持续集成案例分析系列(2)——大规模项目团队持续集成实践之一二