mycat2

https://blog.csdn.net/wu624218376/article/details/128415862

一.安装配置

1.java环境

mycat2需要java1.8以上的版本

yum install java-1.8.0-openjdk
yum install java-1.8.0-openjdk-devel

#编辑环境变量
vim /etc/profile
# 在最后添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# 使环境变量生效
source /etc/profile 
2.mycat包
# 定位到指定的下载目录
cd /data
# 下载依赖包
wget http://dl.mycat.io/2.0/1.22-release/mycat2-1.22-release-jar-with-dependencies-2022-10-13.jar
# 下载主程序包
wget http://dl.mycat.io/2.0/install-template/mycat2-install-template-1.21.zip
# 解压主程序包
unzip  mycat2-install-template-1.21.zip  #会生成一个mycat目录
# 将依赖包拷贝至 /data/mycat/lib下
cp mycat2-1.22-release-jar-with-dependencies-2022-10-13.jar /data/mycat/lib 
# 授予/data/mycat/bin 文件夹里边可执行权限:
chmod +x -R mycat/bin
3.mysql主从配置

配置完成后添加mycat服务的用户、密码并赋权限

4.启动
# 开发端口
firewall-cmd --permanent --zone=public --add-port=8066/tcp
firewall-cmd --reload
# 启动服务
cd  /data/mycat
./bin/mycat start
# 其他命令
./bin/mycat status # 查看状态
./bin/mycat stop # 停止
./bin/mycat pause # 暂停
./bin/mycat restart # 重启
./bin/mycat console # 前台运行可查看启动日志
tail -f mycat/logs/wrapper.log # 也可这里查看日志文件

二.读写分离配置

1.创建逻辑表

默认端口8066,使用navicat连接,创建库mycatdb,创建表catdata,随便插入数据,然后目录下可生成对应库的json文件:conf/schemas/mycatdb.schema.json

{
        "customTables":{},
        "globalTables":{},
        "normalProcedures":{},
        "normalTables":{
                "catdata":{
                        "createTableSQL":"CREATE TABLE `test1`.`ttsss` (\n\t`ttttt` varchar(255) NULL\n)",
                        "locality":{
                                "schemaName":"mycatdb",
                                "tableName":"catdata",
                                "targetName":"prototype"  #指向集群名称
                        }
                }
        },
        "schemaName":"mycatdb",
        "shardingTables":{},
        "targetName":"prototype",
        "views":{}
}
2.创建数据源

指向mysql的master端

vim conf/datasources/master.datasource.json,没有则创建,创建完之后删除原来的默认json文件

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"WRITE",
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"master", 
        "password":"123456",
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.181.151:3306/mycatdb?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
        "user":"mycat2",
        "weight":0
}

指向mysql的slave端

vim conf/datasources/slave.datasource.json

{
        "dbType":"mysql",
        "idleTimeout":60000,
        "initSqls":[],
        "initSqlsGetConnection":true,
        "instanceType":"READ",
        "maxCon":1000,
        "maxConnectTimeout":3000,
        "maxRetryCount":5,
        "minCon":1,
        "name":"slave", #和上边master中不一致
        "password":"123456",
        "type":"JDBC",
        "url":"jdbc:mysql://192.168.181.151:3307/mycatdb?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
        "user":"mycat2", #访问从数据库的名称
        "weight":0
}
3.mycat集群创建

创建此集群是为了访问数据源

vim conf/clusters/prototype.cluster.json

{
        "clusterType":"MASTER_SLAVE",
        "heartbeat":{
                "heartbeatTimeout":1000,
                "maxRetry":3,
                "minSwitchTimeInterval":300,
                "slaveThreshold":0
        },
        "masters":[
                "master"
        ],
        "replicas":["slave"],
        "maxCon":200,
        "name":"prototype", #集群名称
        "readBalanceType":"BALANCE_ALL",
        "switchType":"SWITCH"
}

以上全部走完之后,重新启动mycat2服务,然后分别在master和slave上操作如下

#master上
INSERT INTO catdata VALUES(1) ;
#slave上
INSERT INTO catdata VALUES(12) ;

最后navicat访问mycat2的8066端口,select * from catdata,一会出现1一会出现2,因为mycat对于主表是有读写权限的,此时读写分离成功

三.分表配置

全局表
在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:
  
  变动不频繁
  数据量总体变化不大
  数据规模不大,很少有超过数十万条记录。
  
   鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:
   1、全局表的插入、更新、删除操作会实时在所有节点上执行,保持各个分片的数据一致性
   2、全局表的查询操作,只随机从一个节点获取
   3、 全局表可以跟任何一个表进行 JOIN 操作
ER表
狭义指父子表中的子表,它的分片键指向父表的分片键,而且两表的分片算法相同 广义指具有相同数据分布的一组表 解读:关联别的表的子表,例如:订单详情表就是订单表的 ER 表
posted @ 2023-02-26 15:32  MISF  阅读(70)  评论(0编辑  收藏  举报
     JS过度和变形效果演示   
  
    html5.png