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

 测试结束

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕:改变城市公共卫生管理的未来

现代城市发展快速,人口不断增加,公共卫生管理面临着严峻的挑战。传统公厕的建设、管理和使用模式已经无法满足日益提高的卫生与环保需求。然而,随着科技的进步与智能化的发展,智慧公厕正成为一种全新的解决方案,为城市…

(十六)【Jmeter】取样器(Sampler)之测试活动(Test Action)

简述 操作路径如下: JMeter中的测试活动取样器实际上并不是一个具体的取样器类型,而是一种对测试计划中的多个取样器进行组合和执行的活动。常常被用作定时器,在某个请求之后等待多长时间。 参数说明 Logical Action on Thread(在线程上的逻辑操作) Pause Duration(mil…

Python知识汇总

重要链接: matplotlib库:matplotlib — Matplotlib 3.5.1 documentation DataFrame库:DataFrame — pandas 2.2.1 documentation (pydata.org) Python Matplotlib 实现散点图、曲线图、箱状图、柱状图示例:Python Matplotlib 实…

计算机网络-网络安全(二)

1.应用层安全协议: S-HTTP或SHTTP(Sec HTTP),安全超文本传输协议,是HTTP扩展,使用TCP的80端口。HTTPS:HTTPSSL,使用TCP的443端口。和TLS(传输层安全标准)是双…

Linux conntrack和iptables技术解析

Linux虚拟文件系统管理技术 1. netfilter解析1.1 netfilter的基础原理1.2 netfilter的相关hook 2. conntrack解析2.1 conntrack的基础原理2.2 conntrack的表记录解析 3. iptables解析3.1 iptables基础原理3.2 融合conntrack表的iptables规则 4. 疑问和思考4.1 conntrack和iptab…

从零开始学单片机,该怎么入门?

从零开始学单片机,该怎么入门? 在开始前我分享下我的经历,我刚入行时遇到一个好公司和师父,给了我机会,一年时间从3k薪资涨到18k的, 我师父给了一些 电气工程师学习方法和资料,让我不断提升自己…

神经网络推理优化方法总结

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

C语言操作符详解(一)

一、操作符的分类 • 算术操作符&#xff1a; 、- 、* 、/ 、% • 移位操作符:<< >> • 位操作符: & | ^ • 赋值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^ • 单⽬操作符&#xff1a; &#xff01;、、--、&、*、、…

Android Studio开发(一) 构建项目

1、项目创建测试 1.1 前言 Android Studio 是由 Google 推出的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发 Android 应用程序。 基于 IntelliJ IDEA: Android Studio 是基于 JetBrains 的 IntelliJ IDEA 开发的&#xff0c;提供了丰富的功能和插件…

[Redis]——Spring整合Redis(SpringDataRedis)

⭐准备工作&#xff1a; 确保Redis服务已启动idea开发环境 ⭐Redis整合步骤&#xff1a; 1.pom文件引入依赖 2.yml文件配置连接信息 3.修改Redis序列化方式 4.注入RedisTemplate 使用 小知识&#xff1a; Spring整合的Redis可以将Object对象自动序列化成字符串&#xff0…

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

高级统计方法 第5次作业

作业评阅&#xff1a; 概念 1.问题 2.问题&#xff08;略&#xff09; 4.问题&#xff08;略&#xff09; &#xff08;a&#xff09;问题&#xff08;略&#xff09; 10%&#xff0c;忽略 X < 0.05和 X > 0.95的情况。 &#xff08;b&#xff09;问题&#xff08;略…

金田金業: 避险情绪骤升 黄金暴力拉升

现货黄金周一(3月4日)亚市早间开盘于2082美元/盎司&#xff0c;最高2119.86美元/盎司&#xff0c;最低2079.44美元/盎司&#xff0c;收盘2114.28美元/盎司&#xff0c;全天波幅约40美金&#xff0c;当日涨幅1.51%。 【基本面】 周一(3月4日)无重要数据公布&#xff0c;投资者关…

TPM引领智能制造新篇章:赋能企业转型升级

在智能制造日益成为工业发展主流趋势的今天&#xff0c;全面生产维护&#xff08;Total Productive Maintenance&#xff0c;简称TPM&#xff09;作为一种先进的管理理念和方法&#xff0c;正逐渐展现出其为企业实现智能制造赋能助力的巨大潜力。TPM不仅关注设备的维护和保养&a…

【机器学习】包裹式特征选择之递归特征添加法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Leetcode刷题笔记题解(C++):232. 用栈实现队列

思路&#xff1a;双栈实现入队列和出队列的操作 //AB栈来实现队列 //A栈用来push 可以利用A栈获取到队列的back即A.top //B栈用来pop 如果要获取队列的top&#xff0c;可以先把A栈元素依次弹出依次压入B栈中&#xff0c;然后B.top就是队列的top&#xff0c;pop也类似 cla…

云原生学习

1. 高可用架构 1.1 架构图 Kubernetes是属于主从设备模型&#xff08;Master-Slave架构&#xff09;&#xff0c;即有Master节点负责核心的调度、管理和运维&#xff0c;Slave节点则执行用户的程序。在Kubernetes中&#xff0c;主节点一般被称为Master Node 或者 Head Node&am…

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

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

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新&#xff0c;需要改造之前的代码。 服务端改造 服务端增加一个版本号version&#xff0c;新增配置的时候为1&#xff0c;每次更新配置就加1。 Overridepublic long insertConfigDO(ConfigDO configDO) {insertLock.lock();try {long id 1;List<Con…

【EI会议征稿通知】第六届人工智能技术与应用国际学术会议(ICAITA 2024)

第六届人工智能技术与应用国际学术会议(ICAITA 2024) 2024 6th International Conference on Artificial Intelligence Technologies and Applications 第六届人工智能技术与应用国际学术会议(ICAITA 2024)&#xff0c;由长春理工大学主办&#xff0c;长春理工大学电子信息工…