MyCat集群环境负载均衡
1、配置数据库集群
所有的集群配置,都必须配置多主多从模式。即多个 master 节点相互之间配置主从。如:master1 和 slave1 为第一组主从,master2 和 slave2 为第二组主从,master1 和 master2互为对方的主/从。双主双从结构。
注意:
crc32slot 分片规则,在使用的时候,要求必须先设置好分片规则,再启动 mycat。
如果先启动了 mycat,再设置分片规则,会导致分片规则失效。需要删除 conf 目录中的ruledata 子目录。ruledata 目录中会记录 crc32slot 的分片节点,日志文件命名规则为crc32slot_表名。
2、集群负载均衡策略
第一种方案
1 |
|
这种方式有缺陷:可能有 IO 延迟问题。
第二种方案
1 |
|
建议为不同的表格定位不同的 dataHost 节点
balance 属性
balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上
balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡
balance="2",所有读操作都随机的在 writeHost、 readhost 上分发。
balance="3", 所有读请求随机的分发到 writeHost 对应的 readhost 执行,writerHost不负担读压力
writeType 属性
writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后已切换后的为准,切换记录在配置文件中:conf/dnindex.properties(datanode index)
writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐
switchType 属性:涉及到读写分离问题,可以解决 IO 延迟问题。
switchType='-1' 表示不自动切换
switchType='1' 默认值,表示自动切换
switchType='2' 基于 MySQL 主从同步的状态决定是否切换读写主机,心跳语句为 show slave status。 如果写数据通过心跳检测出那台是master和slave,就往master上写数据;如果是读,通过心跳检测IO延迟,如果没有就在slave上读,如果有延迟,则在master上读。
注意: 在 mycat 中,rule.xml 配置文件中定义的分片规则只能给一个表格使用。如果有多个表格使用同一个分片规则,需要再 rule.xml 配置文件中,为每个表格定义一个分片规则。
配置mycat eye可视化监控界面https://blog.csdn.net/zh15732621679/article/details/78837760