mycat读写分离测试

article/2025/9/9 2:22:23

网上的:

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都挂掉后:

 


http://chatgpt.dhexx.cn/article/n7jNPDAc.shtml

相关文章

MyCat读写分离

一、MyCat读写分离 数据库读写分离对于大型系统或者访问量很高的互联网应用来说&#xff0c;是必不可少的一个重要功能。对于MySQL来说&#xff0c;标准的读写分离是主从模式&#xff0c;一个写节点Master后面跟着多个读节点&#xff0c;读节点的数量取决于系统的压力&#xff…

MySQL-Mycat读写分离

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MySQL-Mycat读写分离 一、读写分离1.什么是读写分离2.读写分离的好处 Mycat是什么&#xff1f;架构 部署环境部署mycat补充 启动mycat启动报错 测试客户端连接报错 总结原理及…

读写分离时mycat不能链接mysql_Mycat读写分离配置实践

Mycat读写分离配置实践 发布时间&#xff1a;2020-08-16 01:08:20 来源&#xff1a;ITPUB博客 阅读&#xff1a;81 作者&#xff1a;jeanron100 工作这些年来&#xff0c;也去了一些地方&#xff0c;有了一些见闻&#xff0c;隐隐感觉很多文化和猫有着千丝万缕的联系。就拿IT行…

Mycat读写分离的简单实现

文章目录 1、Mycat读写分离的配置1.1、Mycat是什么1.2、Mycat能干什么1.2.1、数据库的读写分离1.2.1.1、数据库读写分离图解 1.2.2、数据库分库分表1.2.2.1、水平拆分&#xff08;分库&#xff09;1.2.2.2、垂直拆分&#xff08;分表&#xff09; 1.3、Mycat的搭建1.3.1、前期准…

mycat读写分离配置

为什么使用MyCat 如今随着互联网的发展&#xff0c;数据的量级也是撑指数的增长&#xff0c;从GB到TB到PB。对数据的各种操作也是愈加的困难&#xff0c;传统的关系性数据库已经无法满足快速查询与插入数据的需求。这个时候NoSQL的出现暂时解决了这一危机。它通过降低数…

实现mycat读写分离

前言 众所周知&#xff0c;随着用户量的增多&#xff0c;数据库操作往往会成为一个系统的瓶颈所在&#xff0c;而且一般的系统“读”的压力远远大于“写”&#xff0c;因此我们可以通过实现数据库的读写分离来提高系统的性能。 基础知识 要实现读写分离&#xff0c;就要解决主…

Mycat 读写分离实战

Mycat读写分离实战 一、主从复制搭建 1.实验环境 搭建一主一从的部署架构&#xff0c;master&#xff08;主库&#xff09;运行在阿里云服务器 47.108.136.201&#xff0c;slave&#xff08;从库&#xff09;运行在 IP 地址为 12.168.149.128 的Ubuntu虚拟机中两台机器均安装…

mycat-读写分离

简介&#xff1a; 主从复制的工作机制&#xff1a; ① Master将改变记录到二进制日志&#xff08;binary log&#xff09;中&#xff0c;这些记录叫做二进制日志事件&#xff08;binary log events&#xff09;&#xff1b; ② Slave将master的binary log events拷贝到它的中继…

使用mycat进行读写分离

目录 一、读写分离 1.1、什么是读写分离 1.2、为什么要用读写分离 1.3、使用mycat读写分离 1.3.1安装mycat 1.3.2、配置mycat 简单的理解&#xff0c;mycat就是一个数据中间件&#xff0c;可以让开发人员直接访问mycat&#xff0c;然后由mycat去访问具体的数据库服务器&a…

数据库:mycat实现读写分离

目录 一、mycat 1、mycat实现读写分离原理 2、mycat应用场景 3、mycat作用 4、mycat实现读写分离实战 一、mycat 1、mycat实现读写分离原理 ①用户进行读操作则由mycat转给配置的从数据库。 ②用户进行写操作则由mycat转给配置的主数据库。 ③转发规则由mycat配置文件中…

mycat实现读写分离

1、在本地复制多一个数据库&#xff08;有条件拥有多个服务器的忽略&#xff09; 1&#xff09;找到mysql实例文件夹和数据文件夹&#xff08;通常在C:\Program Files下和C:\ProgramData下&#xff09; 直接都复制一份出来做从库 2&#xff09;修改从库配置my.ini [client]…

汉诺塔递归算法(Python编程)

一、问题描述。 汉诺塔是学习计算机递归算法的经典入门案例&#xff0c;是一个数学难题。其问题为如何将所有圆盘从A移动到C&#xff0c;要求一次只能移动一个盘子&#xff0c;盘子只能在3个标杆&#xff08;A/B/C&#xff09;之间移动&#xff0c;更大的盘子不能放在更小的盘子…

汉诺塔递归调用(C语言实现)

预备知识 1.递归算法 递归算法&#xff1a;是一种直接或者间接地调用自身的算法。在计算机编写程序中&#xff0c;递归算法对解决一大类问题是十分有效的&#xff0c;它往往使算法的描述简洁而且易于理解。 递归过程一般通过函数或子过程来实现。 递归算法的实质&#xff1…

python实现汉诺塔递归算法超详细过程

python实现汉诺塔递归算法 def hanoi(n, x, y, z):if n 1:print(x, -->, z)else:hanoi(n-1, x, z, y)print(x, -->, z)hanoi(n-1, y, x, z)n int(input(请输入层数&#xff1a;)) hanoi(n, x, y, z) if n 1: #如果n等于1时print(x, -->, z) #直接将x移…

多图详解汉诺塔递归实现思路--含实现代码

前言 为了节约大家的时间&#xff0c;本文对汉诺塔的定义就不做赘述了&#xff0c;如果有小伙伴不清楚汉诺塔的规则可以直接点蓝字跳转过去。 本篇博客内容 汉诺塔实现的思路用递归的方式实现汉诺塔 汉诺塔实现的思路 我们先以两个瓷盘为例&#xff1a; 由于小瓷盘1位于顶部&a…

汉诺塔递归算法C++实现

算法介绍 其实算法非常简单&#xff0c;当盘子的个数为n时&#xff0c;移动的次数应等于2^n – 1&#xff08;有兴趣的可以自己证明试试看&#xff09;。后来一位美国学者发现一种出人意料的简单方法&#xff0c;只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型…

汉诺塔递归算法(C语言)

汉诺塔递归算法 一、引言二、解决汉诺塔问题&#xff08;1&#xff09;递归算法 三、C语言实现&#xff08;1&#xff09;代码实现&#xff08;2&#xff09;算法思想 四、结论 一、引言 汉诺塔问题是一个经典的数学谜题&#xff0c;它是在印度流传下来的&#xff0c;传说中有…

汉诺塔递归调用

1.递归算法 递归算法&#xff1a;是一种直接或者间接地调用自身的算法。在计算机编写程序中&#xff0c;递归算法对解决一大类问题是十分有效的&#xff0c;它往往使算法的描述简洁而且易于理解。 递归过程一般通过函数或子过程来实现。 递归算法的实质&#xff1a;是把问题转…

汉诺塔递归的空间复杂度_算法之美:解读递归算法原理和效率

对于很多人来说,都知道递归,也能看的懂递归,但在实际项目过程中,却不知道如何使用递归,这里给递归做个总结。 递归的定义 在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。实际上,递归,顾名思义,其包含了两个意思:递和归,这正是递归思想…

汉诺塔递归问题的分析与Python实现

背景 相传在古印度圣庙中&#xff0c;有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上&#xff0c;有三根杆(编号A、B、C)&#xff0c;在A杆自下而上、由大到小按顺序放置64个金盘(如图)。游戏的目标&#xff1a;把A杆上的金盘全部移到C杆上&#xff0c;并仍保持原…