【中间件】mycat读写分离分析

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 【中间件】mycat读写分离分析

读写分离架构图

Mycat可以实现mysql读写分离,但是没有Mycat就不可以了吗?不是的,单纯Java程序可是可以的

如下图

你可以在Java程序中写判断逻辑,select的请求发到读数据库,update等发到写数据库,然后java程序连接两个数据源

但是你发现问题没有,这样读写分离和代码就紧紧的耦合在一起了,如果你要改变一些东西(比如增加库,修改库),就要改变很多配置

如果增加一个mycat,mysql做主从复制,然后java程序只要连接一个mycat就可以了,不需要管mycat连接了几个数据库,请求又如何分发,这样就实现了解耦

如何配置读写分离

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="testdb" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.25.146:3306" user="root"
                                   password="123456">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="192.168.25.148:3306" user="root" password="123456" />
                </writeHost>
        </dataHost>
</mycat:schema>

配置文件属性解释

修改的balance属性,通过此属性配置读写分离的类型

负载均衡类型,目前的取值有4 种:

balance=“0”, 不开启读写分离机制, 所有读操作都发送到当前可用的 writeHost 上。

balance=“1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1, M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。

( balance=“2”,所有读操作都随机的在 writeHost、 readhost 上分发。

balance=“3”,所有读请求随机的分发到 readhost 执行, writerHost 不负担读压力

如果mysql是一主一从那么设置为3,如果是双主双从设置为1

写策略:

writeType=“0”: 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个

writeType=“1”,所有写操作都随机的发送到配置的 writeHost, 1.5 以后废弃不推荐

writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。

数据库主备切换策略

switchType=“1”:

1 默认值,自动切换。

-1 表示不自动切换

2 基于 MySQL 主从同步的状态决定是否切换。

配置文件标签解释

Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。

Table:逻辑表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。

DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上

DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
关系型数据库 MySQL 中间件
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
584 0
|
消息中间件 NoSQL 关系型数据库
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
608 0
|
消息中间件 存储 缓存
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
381 82
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
|
存储 缓存 负载均衡
【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
523 82
【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
|
SQL JavaScript 小程序
如何写一个读写分离中间件
如何写一个读写分离中间件
249 71
|
XML 负载均衡 关系型数据库
Mycat中间件配置初探与入门操作
Mycat中间件配置初探与入门操作
290 71
|
消息中间件 中间件 RocketMQ
【Alibaba中间件技术系列】「RocketMQ技术专题」分析消息队列中的消费失败重试机制的原理和实践
【Alibaba中间件技术系列】「RocketMQ技术专题」分析消息队列中的消费失败重试机制的原理和实践
593 73
|
中间件 关系型数据库 MySQL
史上最详细Docker安装Mycat中间件 | 实现主从的读写分离
史上最详细Docker安装Mycat中间件 | 实现主从的读写分离
1127 2
|
存储 SQL cobar
MySQL-中间件mycat(一)
MySQL-中间件mycat(一)
1726 1
|
存储 中间件 数据处理
05MyCat - 概念 - 数据库中间件
05MyCat - 概念 - 数据库中间件
191 0

热门文章

最新文章