mycat 分表子查询_mycat分库分表初体验

本文介绍了Mycat的分表配置,包括server.xml、schema.xml和rule.xml的详细设置。通过配置逻辑库、数据节点和分片规则,实现了基于主键的mod-long分片策略,将数据分布到多个表中。通过实例展示了如何启动Mycat并使用Navicat进行数据插入,验证了分表操作的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.Mycat分表

配置

导入mycat源码:如下

mycat有三个重要的配置文件

1.server.xml<?xml version="1.0" encoding="UTF-8"?>

utf8

0

01

1

0

0

300

0

(?:(s*nexts+values+fors*MYCATSEQ_(w+))(,|)|s)*)+

false

io.mycat.route.sequence.handler.HttpIncrSequenceHandler

0

0

0

64k

1k

0

384m

false

false

0

userTESTDBtrueTESTDB -->

123456

enjoyDB

2.schema.xml(逻辑库配置)<?xml version="1.0"?>

writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">

select user()

host="hostM1" url="jdbc:mysql://192.168.64.131:3307"

user="root" password="123456">

schemal标签下的table标签解读(mycat中的逻辑表):name:逻辑表的名称,名称必须唯一

dataNode:值必须跟dataNode标签中的name对应,如果值过多可以用 dataNode="dn$0-99,cn$100-199"

rule:分片规则配置,定义在rule.xml中,必须与tableRule中的name对应

ruleRequired:该属性用于指定表是否绑定分片规则,如果配置为true,但没有配置具体rule的话 ,程序会报错

primaryKey:该逻辑表对应真实表的主键,例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有配置的DN上,如果使用该属性配置真实表的主键。难么MyCat会缓存主键与具体DN的信息,那么再次使用非主键进行查询的时候就不会进行广播式的查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的DN,来获得数据

type:全局表:global 每一个dn都会保存一份全局表,普通表:不指定该值为globla的所有表 autoIncrement:autoIncrement=“true”,默认是禁用的。

needAddLimit:默认是true

数据节点dataNode下dataHost配置解读:

balance: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",所有读请求随机的分发到writeHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。

writeType: 负载均衡类型,目前的取值有3种:writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .

writeType="1",所有写操作都随机的发送到配置的writeHost。

writeType="2",没实现

switchType: -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL主从同步的状态决定是否切换 心跳语句为 show slave status 3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1) 心跳语句为 show status like ‘wsrep%’ 。

dataHost下配置的url为物理机的地址。

3.rule.xml(分片规则的配置文件)

上面配置了简单的mod-long规则,是mycat自带的,即根据schemal.xml里面配置的主键来进行取模操作,落到对应切分的表里,配置里的count3表示分三个表。

order_id

mod-long

3

使用

启动MycatStartup类:mycat数据库中间件即启动成功。

用navicat连接mycat,使用server.xml里面配置的用户

root,123456默认端口8066,插入数据:

查看控制台可看已经路由到order1表中了,即实现了分表操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值