MyCat2 安装与使用(一主一从,读写分离)

435 阅读3分钟

MyCat2 安装与使用(一主一从,读写分离)

一、安装

参考官方文档即可:www.yuque.com/ccazhw/ml3n…

二、配置

进入MyCat2安装目录 eg: /data/mycat/

1、配置MyCat数据源信息

cd /data/mycat/conf/datasource

vim 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.10.80:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
    // 数据库用户
    "user":"root",
    "weight":0
}

2、添加master_slave数据库的数据源信息

cp prototypeDs.datasource.json master01.datasource.json

cp prototypeDs.datasource.json slave01.datasource.json

此处配置一主一从,如果是多主多从就创建多个master\slave.datasource.json

vim 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.10.80:3306/papis_cloud?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
    // 数据库用户
    "user":"root",
    "weight":0
}
vim 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.10.80:3307/papis_cloud?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
    // 数据库用户
    "user":"root",
    "weight":0
}

3、配置master_slave数据源的集群信息

cd /data/mycat/conf/clusters

注意:不要删除prototype.cluster.json,否则启动 Mycat 时会报错

cp prototype.cluster.json master-slave.cluster.json
vim 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"
}


4、配置物理库与Mycat中数据源/数据源集群关系

cd /data/mycat/conf/schemas

vim master_slave.schema.json

{
    // 物理库
    "schemaName": "papis_cloud",
    // 指向集群,或者数据源
    "targetName": "master-slave",
    // 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项
    "normalTables": {}
}

注意:如果要暴露多个物理库,就创建多个json文件

解释:物理库(schema),就是指主数据库中已经存在的数据库

5、修改Mycat登录信息

cd /data/mycat/conf/users

vim root.user.json

{
    "dialect":"mysql",
    // ip 为 null,允许任意 ip 登录
    "ip":null,
    //登录密码
    "password":"papis-passw0rd",
    "transactionType":"xa",
    //登录账户
    "username":"root"
}

6、修改Mycat服务端口等信息,此处可以不修改

cd /data/mycat/conf

 vim server.json
 {
    "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"
        }
    }
}

三、启动、停止Mycat

cd /data/mycat/bin
# 启动
sh mycat start
# 查看状态
sh mycat status
# 停止
sh mycat stop
# 暂停
sh mycat pause
# 重启
sh mycat restart
# 前台运行
sh mycat console
# 查看日志文件
tail -f /data/mycat/logs/wrapper.log

可以使用navicat以5、6步骤中信息连接测试