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

news2024/12/23 12:45:07

先搭载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.coloradmin.cn/o/1489987.html

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

相关文章

【C语言】linux内核netif_receive_skb

一、中文注释 /*** netif_receive_skb - 从网络处理接收缓冲区* skb: 要处理的缓冲区** netif_receive_skb() 是主要的数据接收处理函数。* 它总是成功的。由于拥塞控制或协议层的原因,缓冲区可能在处理过程中被丢弃。** 这个函数只能在软中断(softirq&…

MATLAB知识点:while-end循环语句

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自​第4章:MATLAB程序流程控制 除了for-end语…

S5---FPGA-K7板级电源硬件实战

视频链接 FPGA-K7板级电源硬件实战01_哔哩哔哩_bilibili FPGA-K7板级电源硬件实战 基于K7 板级的系统框图 2、基于K7 板级的电源设计细则 2.1、K7 FPGA功耗评估 KINTEX-7 FPGA电源有数字电源VCCINT, VCCBRAM, VCCAUX, VCCAUX_IO ,VCCO和模拟电源VMGTAVCC ,VMGTAV…

uniapp 项目 浏览器chrome使用vue devtool 识别不了 in not detect

问题 uniapp的项目,vue2, chrome 分析 添加了运行时,指定模板h5.html 指定的h5.html重置了运行根目录,导致了vue dev tool在运行时,chrome上识别不了。 解决: 方法1: 只能调试的时候,不加sati…

AI EARTH——1972-2019全球不透水面30米分辨率产品(GISA-2.0)

1972-2019全球不透水面30米分辨率产品(GISA-2.0) 武汉大学Landsat全球地物识别年度产品前言 – 人工智能教程 时相: 1972-2019 范围: 全球 数据来源: 武汉大学(黄昕教授团队) 引用代码: dataset …

CRMCHAT修复获取客户ip信息,地区信息

CRMCHAT修复获取客户ip信息,地区信息-TP源码网原因: 因pv.sohu.com/cityjson?ieutf-8接口已无法正确获取ip信息,导致后台站点统计无法正确获取用户ip信息,无法获取地区信息 修改 注释掉无用接口地址 修复ip信息 也可以使用&…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏:http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…

XUbuntu22.04之如何找到.so库所在的软件包?(二百一十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Jupyter Notebook的安装和使用(windows环境)

一、jupyter notebook 安装 前提条件:安装python环境 安装python环境步骤: 1.下载官方python解释器 2.安装python 3.命令行窗口敲击命令pip install jupyter 4.安装jupyter之后,直接启动命令jupyter notebook,在默认浏览器中打开jupyte…

C/C++ 乘积尾零问题(蓝桥杯)

如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650,4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899…

stressapptest源码剖析:主函数main解析和sat类头文件分析

主函数main解析和sat类头文件分析 一、简介二、入口函数main.cc剖析三、SAT压力测试对象接口和数据结构总结 一、简介 stressapptest(简称SAT)是一种用于在Linux系统上测试系统稳定性和可靠性的工具,通过产生CPU、内存、磁盘等各种负载来测试…

web小游戏,蜘蛛纸牌

H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的订阅后,私信本人,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、贪吃蛇、飞机大战、坦克大战、开心消消乐、扑鱼达人、扫雷、打地鼠、斗地主等等。 <!DOCTYPE h…

智能驾驶规划控制理论学习06-基于优化的规划方法之数值优化基础

目录 一、优化概念 1、一般优化问题 2、全局最优和局部最优 二、无约束优化 1、无约束优化概述 2、梯度方法 通用框架 线性搜索 回溯搜索 3、梯度下降 基本思想 实现流程 ​4、牛顿法 基本思想 实现流程 5、高斯牛顿法 6、LM法&#xff08;Le…

甲类,乙类,甲乙类,D类功放

功率放大器&#xff1a; 简称功放,分为甲类&#xff0c;已类&#xff0c;甲乙类和D类。 首先要认识三极管&#xff0c;三极管最简单的理解为B极向E极流过一个较小的电流的时候&#xff0c;C极可以向E极流过一个较大的电流&#xff0c;而且两个电流之间呈现倍数关系&#xff0…

STM32启动过程及反汇编

STM32从Flash启动的过程&#xff0c;主要是从上电复位到main函数的过程&#xff0c;主要有以下步骤&#xff1a; 1.初始化堆栈指针 SP_initial_sp&#xff0c;初始化 PC 指针Reset_Handler 2.初始化中断向量表 3.配置系统时钟 4.调用 C 库函数_main 初始化用户堆栈&#xf…

Linux网络编程 ——UDP 通信

Linux网络编程 ——UDP 通信 1. UDP1.1 UDP 通信1.2 广播1.3 组播&#xff08;多播&#xff09; 2. 本地套接字 1. UDP 1.1 UDP 通信 输入 man 2 sendto 查看说明文档 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf…

内存安全的编程语言

美国政府新颁布《回归基础构件&#xff1a;通往安全软件之路》 《回归基础构件&#xff1a;通往安全软件之路》中&#xff0c;白宫国家网络主任办公室&#xff08;ONCD&#xff09;呼吁开发者使用「内存安全的编程语言」 内存安全的编程语言 根据NSA的建议&#xff0c;内存…

线程的同步互斥机制3月4日

题目&#xff1a; 代码&#xff1a; #include <stdio.h> #include <pthread.h> #include <string.h> #include <semaphore.h> #include <unistd.h>sem_t sem1,sem2;void* callback1(void*arg) {while(1){if(sem_wait(&sem1)<0) //等待…

keycloak-操作keycloak数据库添加用户及密码

一、环境描述 keycloak连接本地数据库的方法&#xff1a;keycloak-连接本地数据库-CSDN博客 连接数据库后&#xff0c; 用户数据表&#xff1a;user_entity 密码数据表&#xff1a;credential keycloak版本&#xff1a;23.0.7 二、开始干活 1、插入数据到用户表(user_entit…

使用 gulp-cleanwxss 清除小程序无用样式代码

小程序在迭代中&#xff0c;因没有及时清理无用样式&#xff0c;造成包体积越来越大。而通过人工判断清除工作量大&#xff0c;因而使用 gulp-cleanwxss 实现脚本清除。 一、Demo 演示 二、实现步骤 1、全局安装 gulp 命令行工具 yarn global add gulp-cli2、局部安装依赖 gu…