ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mycat实现主从读取中的问题

2022-01-26 13:33:44  阅读:161  来源: 互联网

标签:writeType 读取数据 mycat 切换 writeHost 主从 读取


schema.xml 中的配置如下:
.....

<dataHost name="aaa" maxCon="2000" minCon="100" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="2">
<heartbeat>show slave status</heartbeat>
<writeHost host="Mster_e3306" url="10.129.51.125:3301" user="user1pass" password="abc&$%">
<readHost host="Slave_c3306" url="10.129.51.127:3301" user="user1pass" password="abc&$%" />
</writeHost>
<writeHost host="Mster_f3306" url="10.129.51.126:3301" user="user1pass" password="abc&$%"/>
</dataHost>

..........



dataHost 标签上我们分析如下:

switchType属性含义:切换类型(前提是心跳异常时)
SWITCH 进行切换 心跳异常时发生
writeType=“0”, 所有写操作都发送到可用的writeHost上。
writeType=“1”,所有写操作都随机的发送到readHost。
writeType=“2”,所有写操作都随机的在writeHost、readhost分上发

“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”

switchType 目前有三种选择:
-1:表示不自动切换
1 :默认值,自动切换
2 :基于MySQL主从同步的状态决定是否切换



问题如下,无论我们怎么切换就不在从上读取数据,经过测试查看mycat log 发现一直在主上读取数据,后来查明是mysql库 默认设置的是事务自动提交
,也就是说一旦开启了事务,mycat前端的主从读取机制失效,无论你怎么设置 balance , 如果想设置主从机制,而且mysql 的事务不影响,则需要在程序端进行非事务读取的设置
@Transactional(propagation = Propagation.NOT_SUPPORTED)   

标签:writeType,读取数据,mycat,切换,writeHost,主从,读取
来源: https://www.cnblogs.com/aozhejin/p/15846154.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有