MyCat应用案例.docx

上传人:b****7 文档编号:10539319 上传时间:2023-02-21 格式:DOCX 页数:31 大小:682.10KB
下载 相关 举报
MyCat应用案例.docx_第1页
第1页 / 共31页
MyCat应用案例.docx_第2页
第2页 / 共31页
MyCat应用案例.docx_第3页
第3页 / 共31页
MyCat应用案例.docx_第4页
第4页 / 共31页
MyCat应用案例.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

MyCat应用案例.docx

《MyCat应用案例.docx》由会员分享,可在线阅读,更多相关《MyCat应用案例.docx(31页珍藏版)》请在冰豆网上搜索。

MyCat应用案例.docx

MyCat应用案例

MyCat使用手册

 

作者:

翟昆

目录

一、安装2

1.MyCat2

2.MyCat-web2

二、配置3

1.原项目修改3

1.1配置文件修改3

1.2pom.xml4

2.MyCat配置4

2.1server.xml4

2.2rule.xml5

2.3schema.xml5

 

一、安装

1.MyCat

从下载最新版本,mycat依赖于JDK1.7,如果没有需要安装一下;将下载的项目导入eclipse中,如下:

所有的配置文件都在resources中,源码都在java中;

启动项目,需要执行io.mycat.MycatStartup类;

2.MyCat-web

该项目是通过监听mycat的9066端口,来实时查看mycat的运行状态,从

导入eclipse,配置zookpeer信息后,启动项目,访问http:

//localhost:

8082/mycat

二、配置

1.原项目修改

1.1配置文件修改

修改项目中连接数据库配置:

修改前:

连接的是mysql数据库,用的是mysql的账号和密码;

spring.datasource.url=jdbc:

mysql:

//10.110.2.41:

3306/jn_point?

user=root&password=root_123&useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root

spring.datasource.password=root_123

修改后:

连接MyCat的逻辑库,用的是MyCat的逻辑库的账号和密码

spring.datasource.url=jdbc:

mysql:

//localhost:

8066/TESTDB?

useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false

spring.datasource.username=root

spring.datasource.password=123456

hibernate配置修改:

修改前:

spring.jpa.hibernate.ddl-auto=update

spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQLDialect

修改后:

spring.jpa.hibernate.ddl-auto=none

spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

1.2pom.xml

因为要使用mongodb数据库,因此需要做一些配置,在pom.xml中添加

--mongodb-->

org.springframework.boot

spring-boot-starter-data-mongodb

org.mongodb

mongo-java-driver

3.4.2

--mongodb-->

2.MyCat配置

2.1server.xml

作用:

相关配置信息,包括监听端口信息,用户名和访问权限等配置,一些系统级别的参数都可以在这里配置。

配置逻辑数据库,例如:

123456

TESTDB

配置了逻辑库TESTDB,用户名root,密码123456

2.2rule.xml

作用:

主要配置分库分表规则,这里我们使用snowflake_id的生成策略,因此我们自定义分库分表规则,如下

读取的配置文件tntsnowflake-id.txt如下:

2.3schema.xml

在该配置文件中包含schema、dataNode、dataHost三大标签,先来看一个完整的配置例子:

2.3.1schema标签

用于配置具体数据库表对应的节点、是否全局、是否分库分表等等;

1)全局表

首先判断该表是否为全局表(变更频次少,数据相对固定,数据量不大),如果是全局表,添加如下配置:

2)水平切分,需要将一张表带数据分布到多个库表中

对于水平切分,需要注意配置与其关联的表,使得关联表数据与其保存在同一个物理库中,避免跨库join操作

3)普通表,配置如下

2.3.2dataNode标签

用于配置节点和对应的物理数据库,配置如下:

database是实际数据库名称

2.3.3dataHost标签

用户配置具体数据库信息,配置如下:

其中各个属性代表的含义如下:

1)name属性

唯一标识dataHost标签,供上层的标签使用。

2)maxCon属性

指定每个读写实例连接池的最大连接。

也就是说,标签内嵌套的writeHost、readHost标签都会使用这个属性的值来实例化出连,接池的最大连接数。

3)minCon属性

指定每个读写实例连接池的最小连接,初始化连接池的大小

4)balance属性

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

1.balance=“0”,所有读操作都发送到当前可用的writeHost上。

2.balance=“1”,所有读操作都随机的发送到readHost。

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

5)writeType属性

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

1.writeType=“0”,所有写操作都发送到可用的writeHost上。

2.writeType=“1”,所有写操作都随机的发送到readHost。

3.writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。

6)dbType属性

指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。

例如:

mongodb、oracle、spark等。

7)dbDriver属性

指定连接后端数据库使用的Driver,目前可选的值有native和JDBC。

使用native的话,因为这个值执行的是二进制的mysql协

议,所以可以使用mysql和maridb。

其他类型的数据库则需要使用JDBC驱动来支持。

如果使用JDBC的话需要将符合JDBC4标准的驱动JAR包放到MYCAT\lib目录下,并检查驱动JAR包中包括如下目录结构的文

件:

META-INF\services\java.sql.Driver。

在这个文件内写上具体的Driver类名,例如:

com.mysql.jdbc.Driver。

8)switchType:

切换方式

-1:

不自动切换

1:

自动切换(默认)

2:

基于MySql主从同步的状态来决定是否切换

 

三、完整例子

mycat的配置

server.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEmycat:

serverSYSTEM"server.dtd">

serverxmlns:

mycat="http:

//io.mycat/">

0

--0为需要密码登陆、1为不需要密码登陆,默认为0,设置为1则需要指定默认账户-->

1

0

--1为开启实时统计、0为关闭-->

0

--1为开启全加班一致性检测、0为关闭-->

3

--默认为type0:

DirectByteBufferPool|type1ByteBufferArena|type2NettyBufferPool-->

0

--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->

0

--offheapformerge/order/group/limit1开启0关闭-->

1

--单位为m-->

64k

--单位为k-->

1k

0

--单位为m-->

384m

--是否采用zookeeper协调切换-->

true

--XARecoveryLog日志路径-->

--./-->

--XARecoveryLog日志名称-->

--tmlog-->

123456

TESTDB

user

TESTDB

true

server>

schema.xml

xmlversion="1.0"?

>

DOCTYPEmycat:

schemaSYSTEM"schema.dtd">

schemaxmlns:

mycat="http:

//io.mycat/">

writeType="0"dbType="mysql"dbDriver="native"switchType="1"

slaveThreshold="100">

selectuser()

3306"user="root"

password="123456">

writeType="0"dbType="mysql"dbDriver="native"switchType="1"

slaveThreshold="100">

selectuser()

3306"user="root"

password="root_123">

selectuser()

//127.0.0.1:

27017"user="root"password="123456">

schema>

rule.xml

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEmycat:

ruleSYSTEM"rule.dtd">

rulexmlns:

mycat="http:

//io.mycat/">

id

func1

user_id

func1

id

hash-int

--枚举法-->

id

rang-long

id

mod-long

id

murmur

id

crc32slot

create_time

partbymonth

calldate

latestMonth

id

rang-mod

id

jump-consistent-hash

--自定义规则-->

id

snowflake-id

class="io.mycat.route.function.PartitionDirectBySnowflake">

tntsnowflake-id.txt

5

5

--workid二进制位数,默认workid和dataAcenterid总长度是10-->

0

--默认节点,当不配置时,不存储在任何地方-->

--自定义规则-->

class="io.mycat.route.function.PartitionByMurmurHash">

0

--默认是0-->

2

--要分片的数据库节点数量,必须指定,否则没法分片-->

160

--一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍-->

--weightMapFile节点的权重,没有指定权重的节点默认是1。

以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。

所有权重值必须是正整数,否则以1代替-->

--/etc/mycat/bucketMapPath

用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1