使用中间件mycat实现MySQL读写分离(初步,navicat测试可行)

编程入门 行业动态 更新时间:2024-10-06 15:29:39

使用<a href=https://www.elefans.com/category/jswz/34/1771157.html style=中间件mycat实现MySQL读写分离(初步,navicat测试可行)"/>

使用中间件mycat实现MySQL读写分离(初步,navicat测试可行)

Mycat安装包点这里获取
解压到合适的目录下:

修改conf目录下的server.xml和schema.xml配置文件:
①修改server.xml配置

vim打开server.xml拉到底部默认有两个user的配置:

 <user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">test</property><!-- 表级 DML 权限设置 --><!--            <privileges check="false"><schema name="TESTDB" dml="0110" ><table name="tb01" dml="0000"></table><table name="tb02" dml="1111"></table></schema></privileges>           --></user><user name="user"><property name="password">123456</property><property name="schemas">test</property><property name="readOnly">true</property></user>

②修改schema.xml配置

<mycat:schema xmlns:mycat="/"><!-- 逻辑库 --><!-- sqlMaxLimit配置默认查询数量 --><schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!-- 分片配置,database 为真实数据库名 --><dataNode name="dn1" dataHost="datahost1" database="test" /><!-- 物理数据库配置 --><dataHost name="datahost1" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><!-- can have multi write hosts --><writeHost host="hostM1" url="124.***.**.158:3306" user="root"password="[写库的免密]"><!-- can have multi read hosts --><readHost host="hostS2" url="124.***.**.119:3306" user="root" password="[读库的密码]" /></writeHost></dataHost>
</mycat:schema>

验证

使用Navicat连接mycat:
这里我使用mycat的server.xml中配置的读写账号root进行登录mycat
在mycat上创建一张表student:

CREATE TABLE `student`  (`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '学号',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',`grade` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '年级',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

执行前同时打开读库和写库的日志(使用tailf命令):


在mycat连接上往student表中插入一条数据:
在mycat执行插入语句后可以看到写库和读库都有了insert语句,但是仔细观察这两个insert语句是有区别的,写库的insert语句是mycat读写分离写进去的,但是读库的insert是主从复制功能从写库的bin-log同步过来的,两个insert是不同的。

接下来在mycat上执行一条select语句查询刚刚插入的数据:
对比读库和写库的日志,可以发现select语句只在读库的日志中出现了,也就是说通过mycat进行查询时查询的是我们配置的读库(如果有需要mycat也可以配置读库和写库分担select压力,具体配置方法需要继续研究)

这样中间件mycat就帮助我们实现了MySQL的读写分离。

更多推荐

使用中间件mycat实现MySQL读写分离(初步,navicat测试可行)

本文发布于:2024-03-13 18:25:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734556.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中间件   测试   MySQL   mycat   navicat

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!