Centos7 MyCat2 安装部署
部署MyCat2 之前需要搭建好数据库的主从,详看文档:mysql 主次数据库搭建
官网:http://www.mycat.org.cn/
官方文档: https://www.yuque.com/ccazhw/ml3nkf?
源码地址: https://github.com/MyCATApache/Mycat2
软件介绍
Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。
原理
Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat 还是 MySQL。
资源列表
- 安装程序包:http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
- Jar包:http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
一、下载安装
- 下载程序包和Jar包,解压mycat2-install-template-1.21.zip,把下载好的mycat2-1.21-release-jar-with-dependencies.jar放到解压文件里面的mycat2-install-template-1.21\mycat\lib文件夹下面

上传至linux,把整合好的文件夹mycat拷贝到 linux 下 /usr/local/

修改文件夹及以下文件的权限修改成最高权限,否则运行启动命令时,会因权限不足而报错

配置说明
mycat2 的配置都在conf文件夹下,如下图

简单说明一下各个文件夹:
users文件夹:这个配置的是mycat2客户端的账户密码
datasources文件夹:配置的是跟数据库连接情况,这边的账号密码都是需要数据库的账号密码
clusters文件夹:有关集群的配置
schemas文件夹:逻辑库表,有关分表分库的配置
这个配置后续都会用到,这边先了解一下
二、启动
1 在mycat连接的mysql数据库里添加用户
CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
--必须要赋的权限mysql8才有的
GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';
---视情况赋权限
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%' ;
flush privileges;
建议首次配置使用数据库的root账号,这样的话如果启动有异常,就可以排除mysql账号问题,等稳定了再切换mycat账号。
下面都是以mysql的root账号为例。
2、修改mycat的prototype的配置
启动mycat之前需要确认prototype数据源所对应的mysql数据库配置,修改对应的user(用户),password(密码),url中的ip
vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123123",
"type":"JDBC",
"url":"jdbc:mysql://192.168.200.51:3306/mydb1?useUnicode=true&serverTimezone=Asi
a/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
说明:这边的name既可以为数据库名称也可以是集群名称。
3、验证数据库访问情况
Mycat 作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况。
mysql -uroot -p123456 -h 192.168.200.51 -P 3306
mysql -uroot -p123456 -h 192.168.200.53 -P 3306
如远程访问报错,请建对应用户
grant all privileges on *.* to root@'缺少的host' identified by '123123';
4、启动mycat
linux启动命令
cd /usr/local/mycat/bin
./mycat start
./mycat status
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat install 添加到系统自动启动(暂未实现)
./mycat remove 取消随系统自动启动(暂未实现)
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态…
如果没有报错,就说明启动正常了。
5 登录Mycat2后台管理窗口
登录Mycat2管理维护客户端
mysql -umycat -p123456 -P 9066

常用命令如下:
show databases;

help;

登录Mycat2数据客户端
mysql -umycat -p123456 -P 8066

后端程序连接数据库时,不再直接连接数据库,而是改为使用Mycat2数据客户端,也就是说换成连接8066这个数据客户端
我们为可以直接使用Navicat来连接Mycat2数据客户端

说明:这边的账号密码是users文件夹配置的账号密码,不是数据库的账号密码,不要搞错了

6 配置文件说明
1、服务(server):服务相关配置
所在目录 mycat/conf 默认配置即可

2、用户(user): 配置MyCat客户端用户相关信息
所在目录: mycat/conf/users

参数说明:
#ip:客户端访问ip,建议为空,填写后会对客户端的ip进行限制
# username:用户名
# password:密码
# isolation:设置初始化的事务隔离级别
READ_UNCOMMITTED:1
READ_COMMITTED:2
REPEATED_READ:3,默认
SERIALIZABLE:4
# transactionType:事务类型
可选值:
proxy 本地事务,在涉及大于 1 个数据库的事务,commit 阶段失败会导致不一致,但是兼容性最好
xa 事务,需要确认存储节点集群类型是否支持 XA可以通过语句实现切换
set transaction_policy = 'xa'
set transaction_policy = 'proxy' 可以通过语句查询
SELECT @@transaction_policy
3、数据源(datasource):配置Mycat连接的数据源信息
所在目录 mycat/conf/datasources

#字段含义
# dbType:数据库类型,mysql
# name:用户名
# password:密码
# type:数据源类型,默认 JDBC
# url:访问数据库地址
# idleTimeout:空闲连接超时时间
# initSqls:初始化sql
# initSqlsGetConnection:对于 jdbc 每次获取连接是否都执行 initSqls
# instanceType:配置实例只读还是读写
可选值:READ_WRITE,READ,WRITE
#weight :负载均衡权重
# 连接相关配置
"maxCon": 1000,
"maxConnectTimeout": 3000,
"maxRetryCount": 5,
"minCon": 1,
4、集群(cluster):配置集群信息
所在目录 mycat/conf/clusters

#字段含义
# clusterType:集群类型
可选值:
SINGLE_NODE:单一节点
MASTER_SLAVE:普通主从
GARELA_CLUSTER:garela cluster/PXC 集群
MHA:MHA 集群
MGR:MGR 集群
# readBalanceType:查询负载均衡策略
可选值:
BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE
获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE
获取集群中允许写数据源,即主节点中选择
# switchType:切换类型
可选值:
NOT_SWITCH:不进行主从切换
SWITCH:进行主从切换
5、逻辑库表(schema):配置逻辑库表,实现分库分表
所在目录 mycat/conf/schemas
vim mycat/conf/schemas/mydb1.schema.json
#库配置
{
"schemaName": "mydb",
"targetName": "prototype"
}
# schemaName:逻辑库名
# targetName:目的数据源或集群
targetName自动从prototype目标加载test库下的物理表或者视图作为单表,prototype必须是mysql服务器
#单表配置
{
"schemaName": "mysql-test",
"normalTables": {
"role_edges": {
"createTableSQL":null,//可选
"locality": {
"schemaName": "mysql",//物理库,可选
"tableName": "role_edges",//物理表,可选
"targetName": "prototype"//指向集群,或者数据源
}
}
Centos7 MyCat2 安装部署的更多相关文章
- centos7 下 安装部署nginx
centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...
- CentOS7.4安装部署openstack [Liberty版] (二)
继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...
- CentOS7.4安装部署openstack [Liberty版] (一)
一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...
- centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
- Centos7下安装部署oracle数据库方法及问题汇总
目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库 系统环境: 服务器:centos7 64位 客户端:win7 64位 注意cneto ...
- centos7 showdoc 安装部署
1.进入showdoc官网帮助目录下 https://www.showdoc.cc/web/#/help?page_id=828455960655160 阅读自动安装部署相关事项: 2.利用xshel ...
- Docker(2)--Centos7 上安装部署
Centos7 上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比 ...
- CentOS7.5 安装部署Apache+Mysql+Php
系统:CentOS7.5 安装Apache 安装 yum -y install httpd 开启apache服务 systemctl start httpd.service 设置apache服务开机启 ...
- Linux Centos7.x 安装部署Mysql5.7几种方式的操作手册
简述 Linux Centos7.x 操作系统版本下针对Mysql的安装和使用多少跟之前的Centos6之前版本有所不同的,下面介绍下在centos7.x环境里安装mysql5.7的几种方法: 一. ...
- Centos7.3安装部署Zabbix3.4.15(成功可用)
1.Xshell 远程连接到Centos7.3.连接centos 系统后,首先关闭防火墙和SELINUX,如不关闭会各种拦截,网页访问等故障,容易造成蛋疼哦.#systemctl stop firew ...
随机推荐
- 基于容器的PaaS混合云的几种形式
概述 这是 Gartner 的一个图,提供了全球的基于容器的 PaaS 公有云.混合云服务的梳理展示: 这里提供一个其他的视角: 中国市场,基于容器的 PaaS 混合云(公有云 + 私有云)的相关厂商 ...
- 【nginx】代理设置Host
旧文章从语雀迁移过来,原日期为2021-02-18 nginx 的 proxy 模块使我们经常会用到的模块之一,比如我们常用的 nginx 反向代理. 反向代理我们一般有这么几行配置代码: locat ...
- (三)elasticsearch 源码之启动流程分析
1.前面我们在<(一)elasticsearch 编译和启动>和 <(二)elasticsearch 源码目录 >简单了解下es(elasticsearch,下同),现在我们来 ...
- C组合方案
递归实现组合型枚举 从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案. 输入格式 两个整数 n,m ,在同一行用空格隔开. 输出格式 按照从小到大的顺序输出所有方案,每行 1 个. ...
- BatteryStatsHelper.java源码分析
在分析PowerUsageSummary的时候,其实可以发现主要获取应用和服务电量使用情况的实现是在BatteryStatsHelper.java中 还是在线网站http://androidxref. ...
- 洛谷P1862输油管道问题
题目传送门 二话不说先上代码: #include<bits/stdc++.h> using namespace std; int n; int x,y[10001]; int main() ...
- NG-ZORRO + Angular11增加自定义全局样式,不影响其他页面全局样式,仅作用于当前页面
实现只需要两步 ts import { ViewEncapsulation } from '@angular/core';// 关键代码 @Component({ selector: 'app-tes ...
- 字符输入流读取字符数据-writer类
字符输入流读取字符数据 读取字符:read方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1,循环读取,代码使用演示∶ writer类 java.io.Filelwriter ...
- Python 异步集群使用
目前在做Python项目用到同步和异步的方法使用Redis单机,现在要增加兼容Redis集群.也就说当前项目用到中以下4种Python使用Redis的方法都用到了. - 同步 异步 单机 涉及 涉及 ...
- GDOI 2021 PJ 总结
Day 0.5 在门口等了好久,终于进去了. Day 1 下午来到考场,发现自己承诺书没有拿,然后就跑到宿舍去拿,回来发现只要身份证. T1一眼是个博弈,发现不太好打,先跳. T2发现最多消耗4320 ...