网上的:

MyCAT的读写分离机制如下:

1)事务内的SQL,全部走写节点,除非某个select语句以注释/*balance*/开头

2)自动提交的select语句会走读节点,并在所有可用读节点中间随机负载均衡

3)当某个主节点宕机,则其全部读节点都不再被使用,因为此时,同步失败,数据已经不是最新的,MyCAT会采用另外一个主节点所对应的全部读节点来实现select负载均衡。

4)当所有主节点都失败,则为了系统高可用性,自动提交的所有select语句仍将提交到全部存活的读节点上执行,此时系统的很多页面还是能出来数据,只是用户修改或提交会失败。

本次读写分离测试结果的:(测试发现有些情况跟网上的有出入) mycat 1.6.5

  1. 写操作全部走写节点
  2. 自动提交的select语句会走读节点,并在所有可用读节点中间随机负载均衡

3)当某个主节点宕机,则其全部读节点都不再被使用,因为此时,同步失败,数据已经不是最新的,MyCAT会采用另外一个主节点所对应的全部读节点来实现select负载均衡。

4)当所有主节点都失败,系统连接不上了。

测试情况如下:

1、测试一个writeHost 的主从3台机器1主两从

<schema name="db11" checkSQLschema="true" sqlMaxLimit="1000" dataNode="dn1"/>

<dataNode name="dn1" dataHost="mysql34_1" database="db1"/>

<dataHost balance="1" maxCon="1000" minCon="10" name="mysql34_1" writeType="0" switchType="1" slaveThreshold="100" dbType="mysql

" dbDriver="native">

<heartbeat>select user()</heartbeat>

<writeHost host="W1" url="192.168.1.34:3307" password="123456" user="root">

<readHost host="W1R1" url="192.168.1.34:3308" password="123456" user="root"/>

<readHost host="W1R2" url="192.168.1.34:3309" password="123456" user="root"/>

</writeHost>

</dataHost>

99e0c576e362  是主3307.

e83f7ae714aa 是从3308.

b2f619097811 是从3309

测试结果:写全走的主库3307,读全走的两个从库(两个从库负载均衡)。

唯一的writeHost 写节点挂了后,连接不上了,报1184,连接拒绝。

插入7条数据,全走主。

读全走的从。

[root@pxcnode70 lzj]# more testload.sh

#!/bin/sh

while true;do

mysql -ulzj -p123789 -h 192.168.1.245 -P13306 db11  -e  "select count(*),@@hostname from  t_test;"

sleep 2;

done

2、writeType=2测试。

writeType="2",不执行写操作。测试结果报3009错误。

<dataHost balance="1" maxCon="1000" minCon="10" name="mysql34_1" writeType="2" switchType="1" slaveThreshold="100" dbType="mysql

" dbDriver="native">

<heartbeat>select user()</heartbeat>

<writeHost host="W1" url="192.168.1.34:3307" password="123456" user="root">

<readHost host="W1R1" url="192.168.1.34:3308" password="123456" user="root"/>

<readHost host="W1R2" url="192.168.1.34:3309" password="123456" user="root"/>

</writeHost>

</dataHost>

3、两个writeHost 的情况

<dataHost balance="1" maxCon="1000" minCon="10" name="mysql34_1" writeType="0" switchType="1" slaveThreshold="100" dbType="mysql

" dbDriver="native">

<heartbeat>select user()</heartbeat>

<writeHost host="W1" url="192.168.1.34:3308" password="123456" user="root">

<readHost host="W1R1" url="192.168.1.34:3307" password="123456" user="root"/>

<readHost host="W1R2" url="192.168.1.34:3309" password="123456" user="root"/>

</writeHost>

<writeHost host="W2" url="192.168.1.34:3307" password="123456" user="root">

<readHost host="W2R1" url="192.168.1.34:3309" password="123456" user="root"/>

</writeHost>

</dataHost>

环境:

99e0c576e362  是3307.

e83f7ae714aa 是3308.

b2f619097811 是3309

3307和3308 互为主从。  3309 是3307的从。

测试结果:

Mycat插入5条数据,全走3308.第一个写节点writeHost 。读全走的3307和3309.(除了第一个写节点外其他节点)。

第一个写节点3308挂掉后:写操作正常,写入5条数据,全路由到第二个写节点3307。读全路由到第二个写对应的读节点3309分片。

第一个写节点3308恢复后:写入5条数据还是全路由到第二个写节点3307。读操作路由到

3个节点3307,3308,3309.

所有的写节点 3307和3308都挂掉后,连接不上了。报错:[Err] 1184 - Connection refused

第一个写节点3308挂掉后:

第一个写节点恢复后:

所有写节点3307和3308都挂掉后:

mycat读写分离测试相关推荐

  1. 基于Docker搭建MySQL(MariaDB)+ mycat读写分离测试环境

    1. 手动创建mariadb镜像     创建一个CentOS容器         [yeqiang@localhost ~]$ docker run -it centos /bin/bash    ...

  2. Mycat 读写分离测试

    1.mycat 软件安装 [root@phapxykdgis03 tmp]#groupadd mycat [root@phapxykdgis03 tmp]#useradd mycat -g mycat ...

  3. Mycat 读写分离、主从切换、分库分表的操作记录

    Mycat 读写分离.主从切换.分库分表的操作记录 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等 ...

  4. Mycat读写分离、主从切换、分库分表的操作记录 https://www.cnblogs.com/kevingrace/p/9365840.html

    [此篇文章写得不错] 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问 ...

  5. MySQL主从配置与Mycat读写分离

    MySQL主从配置与Mycat读写分离 一.主数据库配置 编辑配置文件 添加如下内容 server-id=1 binlog-do-db=master_db1 #备份的数据库 log-bin=mysql ...

  6. MYSQL+MYCAT读写分离实战

    ****1.实战MYSQL+MYCAT读写分离实战,实现MYSQL数据库1主2从架构.**2.写出MYSQL 1主2从架构部署过程和MYCAT实战全部过程,将所有部署过程写出来和划出架构图. 1.配置 ...

  7. MyCat读写分离-笔记(四)

    概述 Mycat能够实现数据库读写分离,不能实现主从同步,数据库的备份还是基于数据库层面的.Mycat只是数据库的中间件: Mycat读写分离配置 在MySQL中间件出现之前,对于MySQL主从集群, ...

  8. 应用 | 同学,该学MyCat实际应用案例与MyCat读写分离了

    Hi!我是小小,一个双鱼座的佛系程序猿,今日的blog将会写关于MyCat最后一点学习内容,读写分离,与MyCat实际应用案例和一个小小的例子. MyCat 读写分离 MyCat的读写分离是建立在My ...

  9. Mycat读写分离笔记Windows

    Mycat读写分离笔记Windows 自己搭了一个运用Mycat中间件搭建了一个读写分离的demo,昨晚还在奋战当中,因为连接mycat的时候老是报错:No Mycat DataBases selec ...

最新文章

  1. 利用numpy对像素点进行操作
  2. 项目实践中的一些性能优化指南
  3. 通过ArcCatalog连接ArcGIS Server的种种问题
  4. 如何使用Android studio创建签名
  5. Mockito—参数匹配
  6. oracle ora-16003,ORA-31600错误分析
  7. 直观简洁的促销海报模板,明明白白搞事情!
  8. 二分查找(java)
  9. POJ3494Largest Submatrix of All 1’s[单调栈]
  10. 【数据技术】利用Python获取高德地图POI数据——以上海瑞幸门店为例
  11. Arduino GPS 车速表(Arduino流体力学燃油效率计)(更新:2022.7.3)
  12. Centos7下载linux内核源码
  13. vs2010开发activex(MFC)控件/ie插件(一)
  14. 《C++ API设计》摘录
  15. 塞班为什么那时候只有java_回忆S60(塞班)年代的JAVA游戏
  16. MATLAB寻找高斯光束光斑中心
  17. 单片机入门3.驱动蜂鸣器
  18. [Python]自学笔记36:论一只爬虫的自我修养3:隐藏
  19. Using QByteRef with an index pointing outside the valid range of a QByteArray
  20. 让电脑无法使用QQ或微信

热门文章

  1. 专访驻云CTO肖凯:云架构师必备的技能和知识
  2. 程序员须知:面试中最容易被问到的18个算法题(附答案!)
  3. Hadoop HA 重新格式化
  4. VS2013写window服务,实现定时短信功能
  5. 如何用你家的猫黑掉邻家的无线网络
  6. 【JQuery】知识点总结
  7. 【软件测试与质量习题答案】软件质量度量工具
  8. 今天聊一聊SSID的概念及其作用
  9. idea连接数据库创建实体类
  10. IDEA 打开项目后就闪退问题