文章目录
- windows搭建mycat2步骤
- 下载mycat2
- 修改配置并启动
- mycat2命令
- mycat2相关概念
- mycat2配置文件
- 用户相关配置属性
- 数据源datasources
- 集群cluster相关配置
- 逻辑库表schemas配置
windows搭建mycat2步骤
- 修改
C:\Windows\System32\drivers\etc
下的hosts文件,防止dns污染。执行ipconfig/flushdns
。不修改hosts文件,可能无法打开下面的下载页面。
210.51.26.184 mycat.org.cn www.mycat.org.cn dl.mycat.org.cn
下载mycat2
将下载的template解压,然后将release的jar包,托到解压template得到的mycat\lib目录下。
修改配置并启动
- 修改
mycat\conf\datasources
目录下的prototypeDs.datasource.json
文件{ "dbType":"mysql", "idleTimeout":60000, "initSqls":[], "initSqlsGetConnection":true, "instanceType":"READ_WRITE", "maxCon":1000, "maxConnectTimeout":3000, "maxRetryCount":5, "minCon":1, "name":"prototypeDs", "password":"admin", "type":"JDBC", "url":"jdbc:mysql://localhost:23306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", "user":"root", "weight":0 }
- 进入
\mycat\bin
目录,执行mycat install
安装,执行mycat start
启动D:\devsoft\mycat\bin λ mycat install wrapper | CreateService failed - 指定的服务已存在。 (0x431) D:\devsoft\mycat\bin λ mycat stop wrapper | Stopping the mycat2 service... wrapper | mycat2 stopped. D:\devsoft\mycat\bin λ mycat start wrapper | Starting the mycat2 service... wrapper | mycat2 started. D:\devsoft\mycat\bin λ mycat status wrapper | The mycat2 Service is installed. wrapper | Start Type: Automatic wrapper | Interactive: No wrapper | Running: Yes
- 访问
mysql -u root -p 123456 -P 9066 # 登录管理监控窗口 mysql -u root -p 123456 -P 8066 # 登录数据窗口
mycat2命令
mycat start # 启动
mycat status # 查看状态
mycat stop # 停止
mycat restart # 重启
mycat console # 前台运行
mycat pause # 暂停
mycat install # 添加到系统自动启动(暂未实现)
mycat remove # 取消随系统自动启动(暂未实现)
mycat2相关概念
- 分库分表
- 逻辑库(数据库代理中的数据库,可映射被代理的物理库)
- 逻辑表(数据库代理中的表,可映射被代理的数据库中的物理表。可以一对一,也可以一对多)
- 物理库(被代理数据库中的库)
- 物理表(被代理数据库中的表)
- 拆分键(分片键,描述拆分逻辑表的数据规则的字段)
- 物理分表(已进行数据拆分的,在数据库上的物理表,是分片表的一个分区)
- 物理分库(包含多个物理分表的库)
- 分库(通过多个数据库拆分分片表,每个数据库一个物理分表)
- 分片表/水平分表(按照一定规则把数据拆分成多个分区的表)
- 单表(没有分片,没有数据冗余的表)
- 全局表/广播表(每个数据库实例都冗余全量数据的逻辑表)
- ER表(狭义的指父子表;广义上指具有相同数据分布的一组表)
- 集群:多个数据节点组成的逻辑节点,在 mycat2 里,它是把对多个数据源地址视为一个数据源地址(名称),并提供自动故障恢复、转移,即实现高可用、负载均衡的组件。
- 数据源:连接后端数据库的组件,是数据库代理中连接后端数据库的客户端。
- 原型库:mycat2后的真实物理数据库。
mycat2配置文件
目录结构:mycat/conf
| - clusters # 集群相关配置
| - prototype.cluster.json
| - datasources # 数据源相关配置
| - prototypeDs.datasource.json
| - schemas # 逻辑库表相关配置
| - sequences
| - sqlcaches
| - users
| - root.user.json
|dbseq.sql
|log-back.xml
|mycat.lock
|server.json # 服务相关配置
|simplelogger.properties
|state.json
|version.txt
|wrapper.conf
用户相关配置属性
配置路径:mycat/conf/users/root.user.json
{
"dialect":"mysql", // 数据库方言:mysql
"ip":null, // 客户端访问IP,建议为空。
"password":"123456", // 密码
"transactionType":"proxy", // 事务类型:本地事务
// 可选值:proxy-本地事务,兼容性好,但在涉及大于1个数据库事务时,commit阶段失败会导致不一致
// XA事务:需要确认存储节点集群类型是否支持XA。
// 可以通过语句实现切换:set transaction_policy = 'xa'/'proxy'
// 通过语句查询:select @@transaction_policy
"username":"root" // 用户名
,isolation:3 // 设置初始化的事务隔离级别。可选值如下:
// 未提交读 read_uncommitted:1;已提交读read_committed:2;
// 可重复读 repeated_read:3 默认;序列化 serializable:4
}
数据源datasources
配置路径:mycat/conf/datasources/prototypeDs.datasource.json
命名方式:{数据源名称}.datasource.json
配置内容与解释:
{
"dbType":"mysql", // 数据库类型:mysql
"idleTimeout":60000,
"initSqls":[], // 初始化SQL
"initSqlsGetConnection":true, // 对于JDBC每次获取连接,是否都执行初始化SQL
"instanceType":"READ_WRITE",
// instanceType 配置实例制度还是读写。可选值:READ_WRITE、READ、WRITE
"name":"prototypeDs", // 数据源名称
"password":"admin", // 数据库密码
"type":"JDBC", // 数据源类型,默认JDBC
"url":"jdbc:mysql://localhost:23306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", // 数据库访问地址
"user":"root", //数据库用户名
"weight":0 // 负载均衡权重
// 连接相关配置
,"maxCon":1000, // 最大连接数
"minCon":1, // 最小连接数
"maxConnectTimeout":3000, // 最大连接超时时间
"maxRetryCount":5 // 失败重试次数
}
集群cluster相关配置
配置路径:mycat/conf/cluster/prototype.cluster.json
命名方式:{集群名称}.cluster.json
配置内容与解释:
{
"clusterType":"MASTER_SLAVE", // 集群类型
// 可选值:SINGLE_NODE:单一节点;MASTER_SLAVE:普通主从;
// GARELA_CLUSTER:garelaCluster/PXC集群;MHA:MHA集群;MGR:MGR集群
"heartbeat":{
"heartbeatTimeout":1000,
"maxRetryCount":3, // 最大重试次数,2021-6-4前是maxRetry,后更正为maxRetryCount。
"minSwitchTimeInterval":300,
"slaveThreshold":0
},
"masters":[ //配置多个主节点,在有一个节点宕机时,会选择一个检查存活的数据源作为主节点
"prototypeDs"
],
"replicas":[ //配置多个从节点
"xxxx"
],
"maxCon":200,
"name":"prototype",
"readBalanceType":"BALANCE_ALL", // 读负载均衡策略,可选值如下:
// BALANCE_ALL(默认):获取集群所有数据源;BALANCE_ALL_READ:获取集群中允许读的数据源
// BALANCE_READ_WRITE:获取集群允许读写的数据源,但允许读的优先;
// BALANCE_NONE:获取集群允许写的数据源,即主节点中选择。
"switchType":"SWITCH" // 切换类型,可选值如下:
// NOT_SWITCH:不进行主从切换;SWITCH:进行主从切换
}
逻辑库表schemas配置
配置路径:mycat/conf/schemas/testdb.schema.json
命名方式:{集群名称}.schema.json
配置内容与解释:
{
"customTables":{},
"globalTables":{},
"normalProcedures":{},
"normalTables":{
"testdb":{
"createTableSQL":"CREATE TABLE `testdb`.`testTable` (\n\t`id` int(0) NOT NULL,\n\t`name` varchar(255) NULL,\n\tPRIMARY KEY (`id`)\n)", // 建表语句,可选
"locality":{
"schemaName":"testdb", //物理库,可选
"tableName":"testTable", // 物理表,可选
"targetName":"prototype" // 目标数据源或集群。
//自动从prototype目标加载test库下的物理表或视图作为单表,prototype必须是mysql服务器。
}
}
},
"schemaName":"testdb", // 逻辑库名
"shardingTables":{},
"views":{}
}