MyCat数据库中间件

MyCat数据库中间件

1、MyCat

概述

mycat是开源的、活跃的、基于java语言编写的MySQL 数据库中间件。可以像使用mysql一样来使用mycat

优势: 性能可靠稳定

mycat下载官网: http://dl.mycat.org.cn/

在这里插入图片描述

  • mycat: 数据库分库分表的中间件,不用调整代码即可实现分库分表,支持多种语言。
  • shardingJDBC: 数据库分库分表的中间件,基于AOP编程,只支持java语言,性能高。
1.1 入门配置

分片配置 【schema.xml】

在这里插入图片描述

配置分片,逻辑表逻辑库

在这里插入图片描述

schema.xml作为mycat最重要的配置文件之一,涵盖了mycat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置

  • schema标签:逻辑库
  <!--逻辑库的配置-->
	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
			 <!--逻辑表的配置-->
			<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
	</schema>
  • datanode标签:分片节点
<!--分片节点-->
	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
  • datahost标签:节点数据库
<!--分片节点的数据库-->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
					  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">			  
			<heartbeat>select user()</heartbeat>
			<writeHost host="hostM1" url="localhost:3306" user="root" password="123456">
					<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
			</writeHost>
	</dataHost>

balance: 负载均衡 writeType: 写操作分发方式 dbDriver: 数据库驱动 支持native、jdbc

服务配置 【server.xml】

配置,登录的用户可以操作的逻辑库,即授权

在这里插入图片描述

启动测试

mycat start    #启动  占用端口号:8066
mycat stop     #停止

查看日志看mycat是否启动成功

tail -f logs/wrapper.log
1.2 垂直分库

在这里插入图片描述

字典表中,在多个业务模块中都可能会用到,可以将其设置为全局表,利于业务操作

< table > 标签中加上 type="global" 属性 < table type="global" >

1.3 水平分表

在这里插入图片描述

1.4 分片规则

在水平分表时,会存在数据库的节点分配问题,这时就需要一定的分片的规则,根据指定字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片 【rule.xml】

一般情况一个rule 对应一个**< tableRule >,一个< tableRule >** 对应一个**< function >** ,一个**< function >** 对应一个txt文件

在这里插入图片描述

  • **分片规则-范围 ** 【rule="auto-sharding-long"

根据字段的值在哪个节点的范围

  • 分片规则-取模rule="mod-long"

字段值与节点数的取模运算

在这里插入图片描述

  • 分片规则-一致性hashrule="sharding-by-murmur"

相同的哈希因子计算值被划分到相同的分区表中,不会因为分区节点的增加而改变分区的位置

在这里插入图片描述

注意:字段值必须为数字类型

  • 分片规则-枚举rule="sharding-by-intfile"

指定数据放在指定节点

在这里插入图片描述

  • 分片规则-应用指定rule="sharding-by-substring"

运行阶段应用自主决定路由到哪个分片,直接根据字符串截取,但截取的必须为数字

在这里插入图片描述

  • 分片规则-固定分片hash算法rule="sharding-by-long-hash"

id的低10位与10个1作&运算,得到结果转为十进制,在哪个范围就在哪个分片中 【可实现均匀分配也可非均匀】

在这里插入图片描述

注意:字段值必须为数字类型

  • 分片规则-字符串hash解析rule="sharding-by-shardinghash"

截取字符串中指定位置上的子字符串,进行hash算法,算出分片

在这里插入图片描述

  • 分片规则-按日期分片rule="sharding-by-date"

指定日期分片

在这里插入图片描述

  • 分片规则-按月份分片rule="sharding-by-month"

按月份分片

在这里插入图片描述

2、Mycat的管理和监控

mycat的运行原理

在这里插入图片描述

mycat的管理

mycat默认开通2个端口,可以在 server.xml 中进行配置:

  • 8066 数据访问端口,进行DML和DDL操作。
  • 9066 数据管理端口,即mycat服务管理控制功能,用于管理mycat的整个集群状态。
mysql -h ip地址 -P 9066 -uroot -p123456

查看mycat提供的管理命令:show @@help

mycat监控 【mycat-eye】

  • mycat-web(mycat-eye) 是对mycat-server提供监控服务,功能不局限于对mycat-server使用。通过JDBC连接对mycat、mysql监控,监控远程服务器。
  • mycat-web运行过程中需要依赖zookeeper注册中心,所以需要先安装zookeeper。
  • zookeeper官网:https://zookeeper.apache.org
  • mycat-web官网:http://dl.mycat.org.cn/mycat-web-1.0/
  • 启动zookeeper,在端口2181运行,再启动mycat-web 【mycat-web的配置文件已经关联了zookeeper-------> WEB-INF/classes/mycat.properties
  • 访问:地址+端口+mycat 就会进入监控页面

3、读写分离

概念 【主从复制上面有】

读写分离,将数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,就可以减轻·数据库的压力,mycat可以实现该功能。

在这里插入图片描述

(一)一主一从

在这里插入图片描述

balance参数说明:

参数值含义
0不开启读取分离
1全部readhost与备用writehost都参与select语句的负载均衡
2随机分发
3writehost不承担读压力

(二)双主双从

有备用的主机,当某个主机宕机为了防止写服务停滞,加一个备用主机提高高可用性

双主双从搭建过程:先搭建两组一组一从,在将两个主库相互复制配置

在这里插入图片描述

注意:备用主机开始时也就相当于从机,也要登录到刚开始主库。

配置:

在这里插入图片描述

参数说明:

  • balance=“1” : 负载均衡策略
  • writetype=“0”:指定刚开始的时的主库节点
  • switchtype=“1”:开启自动切换主库,当主机宕机时

qiumin

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值