Mycat生产实践---Mycat读写分离案例

目前有大量Mycat的生产实践案例是属于简单的读写分离类型的,此案例主要用到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>

如果要实现自动切换到备用节点,则如下配置:

<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故障后,会自动切换到第二个,第二个故障后自动切换到第三个,当你是1主3从的模式的时候,可以把第一个从节点配置为writeHost 2,第2个和第三个从节点则配置为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="localhos4t: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做读写分离和高可用,可能的方案很灵活,只有你没想到的,没有做不到的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值