MyCAT集群——MyCAT2如何配置读写分离

先搭载MySQL一主两从

192.168.20.110MyCAT
192.168.20.111Master
192.168.20.112slave1
192.168.20.113slave2

配置就不写了,比较基础,写一下步骤

1.进入mysql配置文件或者其子配置文件,添加server_id,开启gtidgtid_mode=ON,enforce-gtid-consistency=ON

2.主库创建用于链接的用户并授权

3.在从库向主库发送请求

MyCAT2的主从配置

登录MyCAT 2在MyCAT2里面操作

[root@Master ~]# mysql -uroot -p123456 -P8066 -h192.168.20.110

在Mycat里创建数据库mydb1

mysql> create database mydb1;
Query OK, 0 rows affected (0.35 sec)

修改mydb1.schema.json

[root@MyCAT bin]# vim /usr/local/mycat/conf/schemas/mydb1.schema.json 
{"customTables":{},"globalTables":{},"normalProcedures":{},"normalTables":{},"schemaName":"mydb1","targetName":"prototype","shardingTables":{},"views":{}
}

使用注解方式添加数据源

mysql> /*+ mycat:createDataSource{-> "name":"rwSepw",-> "url":"jdbc:mysql://192.168.20.111:3306/?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true",-> "user":"mycat",-> "password":"123456"-> } */-> ;
Query OK, 0 rows affected (0.03 sec)mysql> /*+ mycat:createDataSource{-> "name":"rwSepr1",-> "url":"jdbc:mysql://192.168.20.112:3306/?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true",-> "user":"mycat",-> "password":"123456"-> } */;
Query OK, 0 rows affected (0.06 sec)mysql> /*+ mycat:createDataSource{-> "name":"rwSepr2",-> "url":"jdbc:mysql://192.168.20.113:3306/?useSSL=false&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true",-> "user":"mycat",-> "password":"123456"-> } */;
Query OK, 0 rows affected (0.02 sec)

查询配置数据源结果

 /*+ mycat:showDataSources{} */;

 更新集群信息,添加dr0从节点.实现读写分离

mysql> /*!mycat:createCluster{"name":"prototype","masters":["rwSepw"],"replicas":["rwSepr1","rwSepr2"]} */;
Query OK, 0 rows affected (0.04 sec)

查看配置集群信息

/*+ mycat:showClusters{} */;

 查看集群配置文件

[root@MyCAT bin]#  cat /usr/local/mycat/conf/clusters/prototype.cluster.json
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetryCount":3,"minSwitchTimeInterval":300,"showLog":false,"slaveThreshold":0.0},"masters":["rwSepw"],"maxCon":2000,"name":"prototype","readBalanceType":"BALANCE_ALL","replicas":["rwSepr1","rwSepr2"],"switchType":"SWITCH"
}[root@MyCAT bin]# 

 readBalanceType
查询负载均衡策略
可选值:
BALANCE_ALL(默认值)
获取集群中所有数据源
BALANCE_ALL_READ
获取集群中允许读的数据源
BALANCE_READ_WRITE
获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE
获取集群中允许写数据源,即主节点中选择
switchType
NOT_SWITCH:不进行主从切换
SWITCH:进行主从切换

验证读写分离

重新启动Mycat

}[root@MyCAT bin]# ./mycat restart
Stopping mycat2...
Stopped mycat2.
Starting mycat2...
[root@MyCAT bin]# ./mycat status
mycat2 is running (3321).
[root@MyCAT bin]# tail ../logs/wrapper.log 
INFO   | jvm 1    | 2024/03/04 21:47:26 | 	at io.mycat.datasource.jdbc.datasource.DefaultConnection.executeQuery(DefaultConnection.java:84)
INFO   | jvm 1    | 2024/03/04 21:47:26 | 	... 17 common frames omitted
INFO   | jvm 1    | 2024/03/04 21:47:28 | 2024-03-04 21:47:27,959[INFO]io.mycat.vertx.VertxMycatServer.lambda$start$1:166Mycat Vertx server f705da33-7493-4239-9dfc-eedc64f8aa41 started up.

验证读写分离

mysql> CREATE DATABASE db4 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id:    0
Current database: *** NONE ***Query OK, 0 rows affected (0.48 sec)mysql> use db4;
Database changed
mysql> create table sys_user(->     id bigint primary key,->     username varchar(200) not null,->     address  varchar(500)-> );
Query OK, 0 rows affected (0.23 sec)mysql> /*+ mycat:repairPhysicalTable{} */;
Query OK, 0 rows affected (0.00 sec)mysql> insert INTO sys_user(id,username,address) values(1,"xiaofang","wuhan");
Query OK, 1 row affected (0.09 sec)mysql> select * from sys_user;
+----+----------+---------+
| id | username | address |
+----+----------+---------+
|  1 | xiaofang | wuhan   |
+----+----------+---------+
1 row in set (0.02 sec)

 在从库查看表是有的

 MyCAT里查询测试

修改上面3个MySQL数据库中db1库中sys_user表里面的数据,让它不一样,再在MyCAT里面执行查询 结果如下

Master:

mysql> update db4.sys_user set address="wuhan_master";
Query OK, 1 row affected (0.02 sec)

slave1:

mysql> update db4.sys_user-> set address="wuhan_slave1";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

slave2:

mysql> update db4.sys_user set address="wuhan_slave2";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 测试结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32:CAN功能板设计和调试

0前言 本文主要目的是,总结去年设计stm32-CAN板子过程中遇到的问题,分为keil嵌入式软件和嘉立创EDA设计两个部分。 1 STM32F1 CAN功能 keil expected a “}“ 问题在于,PCB使用芯片为stm32f103c8t6,下载程序时选择device默认此…

项目部署发布

目录 上传数据库 修改代码中的数据源配置 修改配置文件中的日志级别和日志目录 打包程序 ​编辑​编辑 上传程序 查看进程是否在运行 以及端口 云服务器开放端口(项目所需要的端口) 上传数据库 通过xshell控制服务器 创建目录 mkdir bit_forum 然后进入该目录 查看路…

012 Linux_线程控制

前言 本文将会向你介绍线程控制(创建(请见上文),终止,等待,分离) 线程控制 线程终止 pthread_t pthread_self(void); 获取线程自身的ID 如果需要只终止某个线程而不终止整个进程,可以有三种…

【C语言】Leetcode 206.反转链表

博主主页:17_Kevin-CSDN博客 收录专栏:《Leetcode》 题目 解决思路 思路一:翻转链表 struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return NULL;}struct ListNode* n1 NULL,*n2 head,*n3 n2 -> next;while(…

线上问题——学习记录幂等判断失效问题分析

一、业务流程 上图是对save和saveScore两个接口的流程抽象,save是上传答题数据,saveScore则是上传答题分数,为保证幂等和防止并发调用,这两个接口都加了分布式锁(还是两层哦)。第一层使用的是不同的锁&…

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…

共筑前端学习之路:欢迎加入我们的前端组件学习交流群

共筑前端学习之路:欢迎加入我们的前端组件学习交流群 随着信息技术的飞速发展,前端开发作为构建数字化世界的重要一环,越来越受到广大开发者的关注和重视。为了更好地服务于前端开发者,尤其是那些对前端组件充满热情的粉丝&#x…

【Leetcode每日一题】 前缀和 - 除自身以外数组的乘积(难度⭐⭐)(26)

1. 题目解析 题目链接:238. 除自身以外数组的乘积 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于计算题目所给数组除本身外其他元素的积的数组返回即可。 2. 算法原理 为了计算每个位置i的最终结果ret[i]&…

基于java springboot+redis网上水果超市商城设计和实现以及文档

基于java springbootredis网上水果超市商城设计和实现以及文档 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留…

Day17:信息打点-APP资产知识产权应用监控静态提取动态抓包动态调试

目录 案例1:名称获取APP信息(爱企查/小蓝本/七麦/点点) 案例2:URL网站备案查APP 案例3:APP提取信息-静态分析 案例3:APP提取信息-动态抓包 案例4:APP提取信息-动态调试 思维导图 章节知识…

Centos8 yum方式安装Redis

Centos8 yum方式安装多个Redis 是否安装GCC依赖 ggc -v #或者 rpm -q gcc安装GCC yum install -y gcc如果不是管理员 加 sudo sudo yum install -y gcc yum安装Redis yum install redis失败更新yum 再安装 #添加EPEL仓库 sudo yum install epel-release#更新yum源 sudo yum upd…

智能电网监控:图像分类技术在能源电力领域的创新应用

一、引言 在当今这个对能源效率要求日益增长的时代,电力行业正面临着前所未有的挑战。为了满足日益增长的电力需求,同时确保电网的稳定性和可靠性,我们采用了一种革命性的方法:通过智能算法和自动化技术来优化电网的运行。这一项…

网络学习:SMart link技术与Monitor link技术

目录 一、SMart link技术 1.1、SMart link技术简介 1.2、SMart link技术原理及基础知识点 1、应用场景(举例): 2、运行机制 3、保护vlan 4、控制VLAN 5、Flush报文 6、SMart link的负载分担机制 7、SMart link角色抢占模式 二、Mo…

中文文本分类_1(pytorch 实现)

import torch import torch.nn as nn import torchvision from torchvision import transforms, datasets import os, PIL, pathlib, warningswarnings.filterwarnings("ignore") # 忽略警告信息# win10系统 device torch.device("cuda" if torch.cuda.i…

三级分销数据库设计

一,数据结构 二,查询方法 1.mysql递归查询 获取id9的所有上级 r : 9 设置自己所要搜索子节点的id SELECTT2.* FROM(SELECTr AS _id,( SELECT r : pid FROM sj_user WHERE id _id ) AS 2v2,l : l 1 AS lvl FROM( SELECT r : 9 ) vars, -- 查询id为…

软考信息系统项目管理师零基础怎么学习?

软考考信息系统项目管理师,零基础怎么入手高项? 要我说对于没有基础的人群来说零基础考信息系统项目管理师还是有一定的难度的,难就难在需要时间去了解基础,而相对于系统分析师、系统构架设计师、网络规划设计师、系统规划与管理…

软考59-上午题-【数据库】-小结+杂题

一、杂题 真题1: 真题2: 真题3: 真题4: 真题5: 真题6: 真题7: 真题8: 二、数据库总结 考试题型: 1、选择题(6题,6分) 2、综合分析题…

3分钟开通GPT-4

AI从前年12月份到现在已经伴随我们一年多了,还有很多小伙伴不会开通,其实开通很简单,环境需要自己搞定,升级的话就需要一张visa卡,办理visa卡就可以直接升级chatgptPLSU 一、虚拟卡支付 这种方式的优点是操作简单&…

使用java的Stream流进行Collectors.groupingBy分组后生成Map,对Map进行删除原集合是否会发生改变

在Java中,当我们使用Collectors.groupingBy方法对集合进行分组操作时,生成的新映射(Map)是基于原始集合(allItems)的数据结构和内容创建的。这意味着,如果你更改了新的映射allItemMap中的值&…

web游戏-飞机大战

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html> <html lang=&q…