# 创建存放mycat2的文件夹
mkdir -p /usr/local/mycat2
# 打开
cd /usr/local/mycat2
# 解压tar包壳
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
# 下载 Mycat 2 所需依赖 jar
wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
# 解压tar包壳
unzip mycat2-install-template-1.21.zip
cd mycat
# 复制 Mycat 2 所需依赖 jar 到 mycat 的 lib 文件夹
cp ../mycat2-1.21-release-jar-with-dependencies.jar lib/
# 修改tar包壳bin/ 目录下所有文件的权限
chmod 777 mycat/bin/*
在主节点(主库)创建mycat数据库,供mycat内部使用,Mycat 在启动时,会自动在原型库下创建其运行时所需的数据表。
CREATE DATABASE IF NOT EXISTS `mycat`;
cd /usr/local/mycat2/mycat/conf/datasources
// 编辑mycat数据库数据源信息
vi prototypeDs.datasource.json
配置文件
{
// 数据库类型
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
// 数据库读写类型:READ、WRITE、READ_WRITE。Mycat 对数据库需要是可读可写的
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
// 数据源名称,这里不要修改
"name":"prototypeDs",
// 数据库密码
"password":"123456",
"type":"JDBC",
// 数据库连接
"url":"jdbc:mysql://192.168.60.251:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
// 数据库用户
"user":"root",
"weight":0
}
//复制一份主数据库数据源信息
cp prototypeDs.datasource.json master01.datasource.json
//复制一份从数据库数据源信息
cp prototypeDs.datasource.json slave01.datasource.json
// 编辑主数据库数据源信息
vi master01.datasource.json
主库配置文件
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
// 数据库读写类型。在数据库集群时,Mycat 对主节点都是可读可写的
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
// 数据源名称。在后面配置数据库集群时会用到
"name":"master01",
// 数据库密码
"password":"123456",
"type":"JDBC",
// 主节点数据库连接
"url":"jdbc:mysql://192.168.60.251:3306/arpro_colony?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
// 数据库用户
"user":"root",
"weight":0
}
从库配置文件
//编辑从数据库数据源信息
vi slave01.datasource.json
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
// READ数据库只读写类型。在数据库集群时,Mycat 对从节点都是只读的
"instanceType":"READ",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
// 数据源名称。在后面配置数据库集群时会用到
"name":"slave01",
// 数据库密码
"password":"123456",
"type":"JDBC",
// 从节点数据库连接
"url":"jdbc:mysql://192.168.60.252:3306/arpro_colony?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
// 数据库用户
"user":"root",
"weight":0
}
cd /usr/local/mycat2/mycat/conf/clusters
注意:这里不要删除 prototype.cluster.json,否则启动 Mycat 时会报错(是啥就是啥,不要动它就行了)
//复制一份主从配置数据库数据源信息
cp prototype.cluster.json master-slave.cluster.json
vi master-slave.cluster.json
主从配置文件
{
// 集群类型:SINGLE_NODE(单节点)、MASTER_SLAVE(普通主从)、GARELA_CLUSTER(garela cluster/PXC集群)等
"clusterType":"MASTER_SLAVE",
"heartbeat":{
"heartbeatTimeout":1000,
"maxRetry":3,
"minSwitchTimeInterval":300,
"slaveThreshold":0
},
"masters":[
// 主节点数据源名称
"master01"
],
"replicas":[
// 从节点数据源名称
"slave01"
],
"maxCon":200,
// 集群名称。在后面配置物理库(schema)时会用到
"name":"master-slave",
"readBalanceType":"BALANCE_ALL",
// NOT_SWITCH(不进行主从切换)、SWITCH(进行主从切换)
"switchType":"NOT_SWITCH"
}
cd /usr/local/mycat2/mycat/conf/schemas
vi master_slave.schema.json
{
// 物理库
"schemaName": "papis_cloud",
// 指向集群,或者数据源
"targetName": "master-slave",
// 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项
"normalTables": {}
}
cd /usr/local/mycat2/mycat/conf/users
vi root.user.json
mycat的登录信息
{
"dialect":"mysql",
// ip 为 null,允许任意 ip 登录
"ip":null,
//登录密码
"password":"123456",
"transactionType":"xa",
//登录账户
"username":"root"
}
cd /usr/local/mycat2/mycat/conf
vi server.json
mycat的默认信息
{
"loadBalance":{
"defaultLoadBalance":"BalanceRandom",
"loadBalances":[]
},
"mode":"local",
"properties":{},
"server":{
"bufferPool":{
},
"idleTimer":{
"initialDelay":3,
"period":60000,
"timeUnit":"SECONDS"
},
"ip":"0.0.0.0",
"mycatId":1,
"port":8066,
"reactorNumber":8,
"tempDirectory":null,
"timeWorkerPool":{
"corePoolSize":0,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":2,
"taskTimeout":5,
"timeUnit":"MINUTES"
},
"workerPool":{
"corePoolSize":1,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":1024,
"taskTimeout":5,
"timeUnit":"MINUTES"
}
}
}
//查看JDK信息,输入:
java -version
//检测jdk的安装包,输入:
rpm -qa | grep java
//删除
rpm -e --nodeps 包名
//检查是否删除完
rpm -qa | grep java
yum install java
java -version
./bin/mycat start
# 查看状态
./bin/mycat status
# 启动
./bin/mycat start
# 停止
./bin/mycat stop
# 暂停
./bin/mycat pause
# 重启
./bin/mycat restart
# 前台运行
./bin/mycat console
# 查看日志文件
tail -f /usr/local/mycat2/mycat/logs/wrapper.log
主节点新增一条数据,使用select查询
从节点新增一条数据,再次使用select查询
主节点新增的数据会同步到从节点,从节点新增的数据不会同步到主节点,所以主节点新增的数据在从节点可以查到,从节点新增的数据在主节点查不到