Mycat2.0搭建教程

Mycat2.0搭建

基础环境准备

安装JDK1.8:我使用的JDK版本是 JDK1.8.0_181
安装MySQL:MySQL5.7安装教程

Mycat2官方文档

安装Mycat2.0

下载安装包
Mycat2当前不提供安装包,只提供核心JAR包,JAR包可以独立运行,安装包是使用Java Service Wrapper做壳的,需要安装包药自己制作。下载对应的tar安装包壳和Mycat2 jar包。
tar包下载地址:http://dl.mycat.org.cn/2.0/install-template/
jar包下载地址:http://dl.mycat.org.cn/2.0/1.20-release/
分别下载tar包和jar包地址中的最新版本即可,jar包一定要下载最新版本的! Mycat2.0还在不断优化晚上中,经常就会发布新的jar包修复一些问题,我下载的版本分别是:mycat2-install-template-1.20.zip 和 mycat2-1.20-jar-with-dependencies-2021-12-16.jar。下载完成后把安装包传送到服务器上,也可以在服务器上用wget直接下载

cd /usr/local
# 下载tar包壳
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip
# 下载运行jar包,用http://dl.mycat.org.cn/2.0/1.20-release/ 最新的jar包
wget http://dl.mycat.org.cn/2.0/1.20-release/mycat2-1.20-jar-with-dependencies-2021-12-3.jar

# 解压tar包壳
unzip mycat2-install-template-1.20.zip
# 将运行jar包放到tar包壳的 lib 目录下
mv mycat2-1.20-jar-with-dependencies-2021-12-3.jar mycat/lib/
# 修改tar包壳bin/ 目录下所有文件的权限
chmod 777 mycat/bin/*

配置MySQL
配置MySQL用户权限

-- 创建mycat用户
CREATE USER 'mycat'@'%' IDENTIFIED BY 'Mycat_123456';
-- 官方文档强调要给root账号添加XA RECOVER权限,但我运行下面这个命令一直报语法错误,就把所有权限都添加给了root账号
-- GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 给mycat用户添加权限,大家可以按照自己的需要添加权限,我是全部权限都加了
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
FLUSH PRIVILEGES;

基本概念

prototype服务器(原型库)
在这里插入图片描述
prototype服务器是分库分表中间件中用于处理MySQL的兼容性SQL(Mycat2.0客户端或框架运行依赖的相关记录表,对使用者来说无感知)和系统表SQL(比如用于显示库,表的sql)的服务器,这个配置项可以指向一个服务器也可以是一个集群,Mycat依赖它处理非select,insert,update,delete语句。当这个服务器是与第一个存储节点是同一个服务器/集群的时候,人们一般叫它做0号节点。原型库也是单表的默认存储节点。

当需要进行数据分片的时候,Mycat是通过扩展存储节点的方式实现的。如果对prototype服务器不太理解,跟着下面的搭建步骤一步一步去生成单表、全局表、分片表的时候,自然就能理解整体的架构设计。
在这里插入图片描述

集群
集群为多个数据节点组成的逻辑节点.在mycat2里,它是把对多个数据源地址视为一个数据源地址(名称),并提供自动故障恢复,转移,即实现高可用,负载均衡的组件。

数据源
数据源为连接后端数据库的组件,它是数据库代理中连接后端数据库的客户端。mycat的数据源对应实际MySQL物理库中的schema库。

Mycat2配置详解

这个环节可以大致了解Mycat2.0配置的含义,可以结合后面的Mycat2.0实战使用步骤,一边实测一边理解配置是如何生效的。

tar包壳下的prototype.cluster.json,prototypeDs.datasource.json,mysql.schema.json,这三个配置文件需要保留,这三个配置文件用于配置Mycat的prototype服务器。

mycat2配置文件目录结构

mycat/conf
		+ clusters
		    - prototype.cluster.json //无集群的时候自动创建
			- c0.cluster.json
            - c1.cluster.json
        + datasources
        	- prototypeDs.datasource.json //无数据源的时候自动创建
        	- dr0.datasource.json
        	- dw0.datasource.json
        + schemas
        	- db1.schema.json
        	- mysql.schema.json
        + sequences
        	- db1_schema.sequence.json
 -server.json //服务器配置
 -state.json //mycat运行状态,包含集群选举的主节点信息,配置时间戳

集群配置

Mycat自带一个prototype.cluster.json配置文件,用于配置prototype服务器的集群信息,这个文件的可以无需修改。
集群配置文件格式:mycat/conf/clusters/{集群名字}.cluster.json,集群名字根据自己的需要指定。

c0.cluster.json 配置样例:

{
   
	"clusterType":"MASTER_SLAVE",
	"heartbeat":{
   
		"heartbeatTimeout":1000,
		"maxRetryCount":3,
		"minSwitchTimeInterval":300,
		"slaveThreshold":0
	},
	"masters":[
		"db0",
		"db1"
	],
  "replicas":[
		
	],
	"maxCon":200,
	"name":"c0",
	"readBalanceType":"BALANCE_ALL",
	"switchType":"SWITCH"
}

核心配置详解:
clusterType: 集群类型
SINGLE_NODE:单一节点
MASTER_SLAVE:普通主从
GARELA_CLUSTER:garela cluster/PXC集群

masters: 主节点配置
可配置多个主节点,在主挂的时候会选一个检测存活的数据源作为主节点

replicas: 从节点配置
可配置多个从节点

name: 数据源名称
要跟mycat/conf/datasources/{数据源名字}.datasource.json 中的数据源名字保持一致

readBalanceType: 查询负载均衡策略
BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE
获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE
获取集群中允许写数据源,即主节点中选择

switchType: 主从切换设置
NOT_SWITCH:不进行主从切换
SWITCH:进行主从切换

readBalanceName: 读取负载均衡策略
writeBalanceName: 写入负载均衡策略

BalanceLeastActive
最少正在使用的连接数的mysql数据源被选中,如果连接数相同,则从连接数相同的数据源中的随机,使慢的机器收到更少。
BalanceRandom
利用随机算法产生随机数,然后从活跃的mysql数据源中进行选取。
BalanceRoundRobin
加权轮训算法,记录轮训的权值,每次访问加一,得到n,然后对mysql数据源进行轮训,如果权值已经为零,则跳过,如果非零则减一,n减1,直n为零则选中的节点就是需要访问的mysql数据源节点。
BalanceRunOnReplica
io.mycat.plug.loadBalance.BalanceRunOnReplica
把请求尽量发往从节点,不会把请求发到不可读(根据延迟值判断)与不可用的从节点

数据源配置

Mycat自带一个prototypeDs.datasource.json配置文件,用于配置prototype服务器的数据源信息,将这个文件的url, user, password三个属性改成自己的MySQL地址和用户密码即可。

数据源配置文件格式:mycat/conf/datasources/{数据源名字}.datasource.json,数据源名字可以根据自己的需要自定义,如果配置了数据源,需要在MySQL物理库中创建相应的schema库,否则mycat启动会失败。

db0.datasource.json配置样例:

{
   
	"dbType": "mysql",
	"idleTimeout": 60000,
	"initSqls": [],
	"initSqlsGetConnection": true,
	"instanceType": "READ_WRITE",
	"maxCon": 1000,
	"maxConnectTimeout": 3000,
	"maxRetryCount": 5,
	"minCon"
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值