安装
1.新建文件夹tools
mkdir tools,并进入tools
2.下载MaCat
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
3.解压zip
unzip mycat2-install-template-1.21.zip
4.添加权限
cd ./mycat/bin/
chmod +x *
5.把所需的jar复制到mycat/lib目录
进入MyCat下lib包中:cp /opt/tools/mycat2-1.21-release-jar-with-dependencies.jar .
6.启动一个3306的MySQL
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
连接:
7.修改数据源
vim mycat\conf\datasources下prototypeDs.datasource.json 文件
可修改:user、password、url,根据实际情况配置
8.启动MyCat
进入bin目录:bin/mycat start
bin/mycat stop:停止
bin/mycat restart:重启
bin/mycat pause:暂停
配置文件介绍
用户
位置:/mycat/conf/users/{用户名}.user.json,用来配置登录用户,也就是8806连接的用户信息
{
"dialect":"mysql",
"ip":null,
"password":"123456",
"transactionType":"proxy",
"username":"root"
}
dialect:数据库类型
ip:白名单
password:密码
transactionType:事务隔离级别
username:用户名
数据源
配置连接物理库的数据源
位置:/opt/mycat/conf/datasources/{数据源名称}.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123456",
"type":"JDBC",
"url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
逻辑库与逻辑表
配置 MyCAT 里面和 MySQL 对应的逻辑表
位置:mycat/conf/schemas/(库名].schema.json
{
"customTables":{},
"globalTables": {},
"normalTables":{},
"schemaName":"test",
"shardingTables":{},
"targetName": "prototype
}
customTables:自定义表
globalTables: 全局表
normalTables:默认表
schemaName:库名
shardingTables:分片表
targetName: 数据源名(集群名)
序列号
作用: 使用序列号的分片表,对应的自增主键要在建表 SQL 中体现。
配置位置: mycat/conf/sequences/数据库名字)表名字).sequence.json
服务器
是针对 MyCAT 的服务器的配置,一般情况下默认
Mycat2 相关概念
分库分表
按照一定规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路径的分表。
逻辑库
数据库代理中的数据库,它可以包含多个逻辑表。
解读:Mycat 里定义的库,在逻辑上存在,物理上在 MySQL 里并不存在。有可能是多个 MySQL 数据库共同组成一个逻辑库。类似多个小孩叠罗汉穿上外套,扮演一个大人。
逻辑表
数据库代理中的表,它可以映射代理连接的数据库中的表(物理表)
解读:Mycat 里定义的表,在逻辑上存在,可以映射真实的 MySQL 数据库的表。可以一对一,也可以一对多。
物理库
数据库代理连接的数据库中的库
物理表
数据库代理连接的数据库中的表
拆分键
即分片键,描述拆分逻辑表的数据规则的字段
物理分表
指已经进行数据拆分的,在数据库上面的物理表,是分片表的一个分区
物理分库
一般指包含多个物理分表的库
分库
一般指通过多个数据库拆分分片表,每个数据库一个物理分表,物理分库名字相同
分片表,水平分片表
按照一定规则把数据拆分成多个分区的表,在分库分表语境下,它属于逻辑表的一种
单表
没有分片,没有数据冗余的表,
全局表,广播表
每个数据库实例都冗余全量数据的逻辑表. 它通过表数据冗余,使分片表的分区与该表的数据在同一个数据库实例里,达到 join 运算能够直接在该数据库实例里执行.它的数据一致一般是通过数据库代理分发 SQL 实现. 也有基于集群日志的实现
ER 表
狭义指父子表中的子表,它的分片键指向父表的分片键,而且两表的分片算法相同
广义指具有相同数据分布的一组表
原型库
原型库就是存储数据的真实数据库,配置数据源时必须指定原型库