栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyCat2搭建读写分离

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyCat2搭建读写分离

实现MySQL数据库的读写分离之前需要使数据库服务器之间可以主从复制,主从复制可以看这个帖子——MySQL实现主从复制 1、下载安装mycat2
# 创建存放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/*
2、创建mycat数据库

在主节点(主库)创建mycat数据库,供mycat内部使用,Mycat 在启动时,会自动在原型库下创建其运行时所需的数据表。

CREATE DATABASE IF NOT EXISTS `mycat`;
3、配置 Mycat 原型库的数据源(datasource)信息
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
}

3、添加 master_slave 数据库的数据源信息,一主一从
//复制一份主数据库数据源信息
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
}
4、配置 master_slave 数据源的集群(cluster)信息
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"
}
5、配置物理库(schema)和 Mycat 中数据源/数据源集群的关系
cd /usr/local/mycat2/mycat/conf/schemas
vi master_slave.schema.json
{
    // 物理库
    "schemaName": "papis_cloud",
    // 指向集群,或者数据源
    "targetName": "master-slave",
    // 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项
    "normalTables": {}
}
6、修改 Mycat 登录用户信息
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"
}
7、Mycat 服务端口等信息根据情况修改,此处不修改
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"
        }
    }
}


8、安装jdk8,并配置环境变量 (1)、查看Java信息以及相关的Java文件
//查看JDK信息,输入:
java -version

//检测jdk的安装包,输入:
rpm -qa | grep java 
(2)、接着删除相关Java文件,并检查是否删除完即可
//删除
rpm -e --nodeps 包名

//检查是否删除完
rpm -qa | grep java
(3)、安装jdk1.8
yum install java
(4)、查询安装好的jdk版本
java -version
9、启动 Mycat
./bin/mycat start
(1)、mycat的相关命令
# 查看状态
./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
10、测试读写分离

主节点新增一条数据,使用select查询
从节点新增一条数据,再次使用select查询
主节点新增的数据会同步到从节点,从节点新增的数据不会同步到主节点,所以主节点新增的数据在从节点可以查到,从节点新增的数据在主节点查不到

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号