MyCAT完整实验报告

MyCAT完整实验报告

前言

刚刚看了一下前面的那篇MyCAT的文章 感觉有一些问题 所以拿出一篇文章再说一下 单独构建了完整的实验环境 这样会全面一点

安装MyCAT

#跳过

主从配置

#不多追溯 因为我们选择的主从 也可以做双主机 但我们后边再说

环境搭建

一、环境规划

服务器角色IP 地址部署服务说明
server_1192.168.3.168MySQL + MyCATMyCAT 中间件节点
server_2(主库)192.168.3.135MySQL主库(MASTER)
server_3(从库)192.168.3.159MySQL从库(SLAVE)
(用于下一个实验 目前无需在意) 备用主库192.168.3.160MySQL双主架构备用主库

修改配置文件

vim m1.datasource.json #PS:文件名是 *****.datasource.json
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"m1","password":"123","queryTimeout":0,"type":"JDBC","url":"jdbc:mysql://192.168.3.135:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true","user":"aa","weight":0
}
----------------------------------------------------
vim m2.datasource.json
{"dbType":"mysql","idleTimeout":60000,"initSqls":[],"initSqlsGetConnection":true,"instanceType":"READ_WRITE","maxCon":1000,"maxConnectTimeout":3000,"maxRetryCount":5,"minCon":1,"name":"m2","password":"123","queryTimeout":0,"type":"JDBC","url":"jdbc:mysql://192.168.3.160:3306?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true","user":"bb","weight":0
}#PS:
#1> MyCat 2 要求每个数据源必须单独放在一个 JSON 文件中,一个 JSON 文件只能定义一个数据源,不能在一个文件中同时定义多个数据源(如 m1 和 m2)。
#2> MyCat 2 加载数据源时,会扫描 conf/datasources 目录下的所有 JSON 文件,每个文件被视为一个独立的数据源配置。
#3> 如果在一个文件中定义多个数据源(即使格式正确),MyCat 会解析失败,导致启动报错。#PS:以下为命令配置/*+ mycat:createDataSource
{"dbType": "mysql","idleTimeout": 60000,"initSqls": [],"initSqlsGetConnection": true,"instanceType": "READ_WRITE","maxCon": 1000,"maxConnectTimeout": 3000,"maxRetryCount": 5,"minCon": 1,"name": "m1","password": "123","type": "JDBC","url": "jdbc:mysql://192.168.3.135:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8","user": "root","weight": 0
}
*/-- 更多操作添加读的数据源/*+ mycat:createDataSource
{"dbType": "mysql","idleTimeout": 60000,"initSqls": [],"initSqlsGetConnection": true,"instanceType": "READ","maxCon": 1000,"maxConnectTimeout": 3000,"maxRetryCount": 5,"minCon": 1,"name": "m2","password": "123","type": "JDBC","url": "jdbc:mysql://192.168.3.159:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8","user": "root","weight": 0
}
*/

集群配置(conf/clusters/prototype.cluster.json)

vim ../clusters/prototype.cluster.json
{"clusterType":"MASTER_SLAVE","heartbeat":{"heartbeatTimeout":1000,"maxRetryCount":0,"minSwitchTimeInterval":300,"showLog":true,"slaveThreshold":0.0},"masters":["m1"],"maxCon":2000,"name":"prototype","readBalanceType":"BALANCE_ALL","replicas":["m1"],"switchType":"SWITCH"
}#PS:双主机
{"clusterType":"MASTER_MASTER",  // 双主架构,部分版本也支持用 MASTER_SLAVE(但需将双主都放 masters)"heartbeat":{"heartbeatTimeout":1000,"maxRetry":3,"minSwitchTimeInterval":300,"slaveThreshold":0},"masters":["m1",   // 主库1(读写)"m1s1"  // 主库2(读写,原从库升级为双主)],"maxCon":2000,"name":"prototype","readBalanceType":"BALANCE_ALL",  // 读请求在两个主库间均衡分配"switchType":"SWITCH",  // 支持故障切换"weight":{  // 可选:给两个主库配置权重,控制请求分配比例"m1":1,"m1s1":1}
}

1. 主从集群构建与高可用基础

  • 定义主从角色:明确集群中 m1主库(Master)m2从库(Replica/Slave) ,MyCat 会基于此角色维护主从关系。
  • 主从心跳检测:通过配置的 heartbeat 机制(超时 1000ms、重试 3 次、最小切换间隔 300ms),实时检测主库 m1 和从库 m2 的存活状态,为后续故障切换打基础。

2. 读写分离(核心功能)

  • 读请求负载均衡readBalanceType: "BALANCE_ALL" 表示 所有从库(此处为 m1s1)都会参与读请求分发,MyCat 会将查询(SELECT)等读操作自动路由到从库,避免主库读压力过大;若从库故障,读请求会自动调整(如 fallback 到主库,具体依赖额外配置)。
  • 写请求路由到主库:所有写操作(INSERT/UPDATE/DELETE)会被 MyCat 强制路由到主库 m1,确保主库数据是最新的,再通过 MySQL 自身的主从同步(如 binlog 复制)将数据同步到从库 m2,保证主从数据一致性。

测试

重启MyCAT

cd /usr/local/mycat/bin
./mycat restart
netstat -anput | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      8834/java
mysql -u root -p123456 -h 127.0.0.1 -P 8066 

创建测试库和表

create database CATTEST; --创CATTEST库
mysql> 
mysql> use CATTEST;
Database changed
mysql> create table test(id int);
Query OK, 0 rows affected (0.38 sec)mysql> insert into test valuse(1);
ERROR 1064 (HY000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'valuse (valuse)' at line 1
mysql> insert into test values(1);
Query OK, 1 row affected (0.01 sec)mysql> 
 mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| CATTEST            |
| information_schema |
| mycat              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

总结

弥补了上一期的MyCAT的不完整 所以 这次 做了了一个相对来说完整的 包括怎么配置等等 其实还想写分库分表的 但理了一下思路 好像在这篇文章去说的话 就会很多了 所以 下篇文章去完整去说

好了 更新的评论越来越慢 但也没办法 博主尽量像写的详细易懂一点 OK 希望大家生活是幸福的 知道自己为了什么努力 下期再见!!!

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

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

相关文章

机器翻译论文阅读方法:顶会(ACL、EMNLP)论文解析技巧

更多内容请见: 机器翻译修炼-专栏介绍和目录 文章目录 一、论文选择:快速判断论文价值 1.1 关注核心会议与子领域 1.2 筛选标准 1.3 预读筛选 1.4 快速定位关键信息 二、精读解析 2.1 问题定义(5分钟) 2.2 方法解剖(15分钟) 2.3 实验深挖(20分钟) 2.4 批判性思考(10分…

Transformer模型实战篇

引入 基于Transformers的NLP解决方案的步骤如下:(以文本分类为例) 导入相关包,General,可以询问ai需要导什么包加载数据集,Data_loader,Datasets数据集划分,测试机,验证集…

深入(流批【牛批】框架)Flink的机制

flink本身是专注有状态的无限流处理,有限流处理【batch批次】是无限流处理的一中特殊情况!应用场景实时ETL 集成流计算现有的诸多数据通道和SQL灵活的加工能力,对流式数据进行实时清洗、归并和结构化 处理;同时,对离线…

Git 2.15.0 64位安装步骤Windows详细教程从下载到验证(附安装包下载)

一、下载后双击运行 安装包下载:https://pan.quark.cn/s/7200b32a1ecf,找到下载好的文件:​Git-2.15.0-64-bit.exe​双击这个文件,就会弹出安装向导窗口,点 ​​“Next”(下一步)​​ 二、选择…

在职老D渗透日记day23:sqli-labs靶场通关(第29关-31关)http参数过滤

5.29.第29关 http参数过滤 闭合5.29.1.手动注入(1)判断注入类型、注入点闭合(2)有回显,优先用联合查询注入,判读字段数?id1&id2 order by 3 -- ?id1&id2 order by 4 --(3)…

Spring Boot整合Amazon SNS实战:邮件订阅通知系统开发

Spring Boot整合Amazon SNS实战引言配置服务总结新用户可获得高达 200 美元的服务抵扣金 亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额…

LeetCode_动态规划1

动态规划1.动态规划总结1.1 01背1.1.1 二维数组1.1.2 一维数组1.2 完全背包2.斐波那契数(力扣509)3.爬楼梯(力扣70)4.使用最小花费爬楼梯(力扣746)5.不同路径(力扣62)6.不同路径 II(力扣63)7.整数拆分(力扣343)8.不同的二叉搜索树(力扣96)9.分割等和子集(力扣416)10.最后一块石…

【STM32】HAL库中的实现(九):SPI(串行外设接口)

SPI 接口通信原理 SPI(Serial Peripheral Interface)是全双工主从通信协议,特点是: 信号线功能SCK串行时钟MOSI主设备输出,从设备输入MISO主设备输入,从设备输出CS(NSS)片选信号&am…

Git常用操作大全(附git操作命令)

Git常用操作大全 一、基础配置 1.1 设置用户名和邮箱 git config --global user.name "你的名字" git config --global user.email "你的邮箱"1.2 查看配置 git config --list二、仓库管理 2.1 初始化本地仓库 git init2.2 克隆远程仓库 git clone <仓库…

详解flink table api基础(三)

文章目录1.使用flink的原因&#xff1a;2. Flink支持两种模式&#xff1a;3. flink table api工作原理&#xff1a;4. Flink table api 使用5. select语句&flink table api&#xff1a;6. 使用flink table api 创建table7. 使用flink table api 写流式数据输出到表或sink8.…

Vue2+Vue3前端开发_Day5

参考课程: 【黑马程序员 Vue2Vue3基础入门到实战项目】 [https://www.bilibili.com/video/BV1HV4y1a7n4] ZZHow(ZZHow1024) 自定义指令 基本语法&#xff08;全局 & 局部注册&#xff09; 介绍&#xff1a;自己定义的指令&#xff0c;可以封装一些 DOM 操作&#xff0c…

机器学习--决策树2

目录 第一代裁判&#xff1a;ID3 与信息增益的 “偏爱” 第二代裁判&#xff1a;C4.5 用 “增益率” 找平衡 第三代裁判&#xff1a;CART 的 “基尼指数” 新思路 遇到连续值&#xff1f;先 “砍几刀” 再说 给决策树 “减肥”&#xff1a;剪枝的学问 动手试试&#xff1…

yggjs_react使用教程 v0.1.1

yggjs_react是一个用于快速创建React项目的工具&#xff0c;它集成了Vite、TypeScript、Zustand和React Router等现代前端技术栈&#xff0c;帮助开发者快速搭建高质量的React应用。 快速入门 快速入门部分将指导您如何安装yggjs_react工具、创建新项目并启动开发服务器。 安…

vulhub可用的docker源

这一块不太容易找&#xff0c;我试了好几个源&#xff0c;下面是20250820测试可用源 编辑方法sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json 配置内容 [1] {"registry-mirrors" : ["https://docker.registry.cyou", "https://docker-…

基于YOLOv8-SEAttention与LLMs融合的农作物害虫智能诊断与防控决策系统

1. 引言 1.1 研究背景与意义 农作物虫害是制约农业产量与质量的重要因素。据FAO报告&#xff0c;全球每年因病虫害造成的粮食损失高达 20%–40%。传统人工巡查与经验诊断具有时效性差、成本高与专业人才不足等缺陷。近年来&#xff0c;计算机视觉特别是目标检测技术在农业检测…

从零开始构建GraphRAG红楼梦知识图谱问答项目(三)

文章结尾有CSDN官方提供的学长的联系方式&#xff01;&#xff01; 欢迎关注B站从零开始构建一个基于GraphRAG的红楼梦项目 第三集01 搭建后端服务 创建一个python文件server.py 完整源码放到文章最后了。 1.1 graphrag 相关导入 # GraphRAG 相关导入 from graphrag.query.cont…

S32K328(Arm Cortex-M7)适配CmBacktrace错误追踪

CmBacktrace 相当于重写了hard_fault函数&#xff0c;在hard_fault函数里面去分析SCB寄存器的信息和堆栈信息&#xff0c;然后把这些信息打印出来(或者写到flash)&#xff1b;通过使用串口输出产生hard_fault的堆栈信息&#xff0c;然后利用addr2line工具反推出具体的代码执行函…

AI研究引擎的简单技术实现步骤

产品愿景与核心功能 1.1 产品使命 “洞见 Weaver”是一个全栈AI Web应用,旨在将用户的复杂研究问题,通过AI驱动的动态思维导图和结构化报告,转化为一次沉浸式的、可追溯的视觉探索之旅。我们的使命是,将AI复杂的推理过程透明化,将人类的探索直觉与AI的分析能力无缝结合,…

open webui源码分析5-Tools

本文从最简单的时间工具入手&#xff0c;分析Tools相关的代码。一、安装工具git clone https://github.com/open-webui/openapi-servers cd openapi-servers# 进入时间工具目录 cd servers/timepip install -r requirements.txt# 启动服务 uvicorn main:app --host 0.0.0.0 --r…

windows下通过vscode远程调试linux c/cpp程序配置

windows下通过vscode远程调试linux c/cpp程序配置vscode插件配置linux依赖工具安装launch.json配置vscode插件配置 CodeLLDB插件需要提前下载&#xff1a; linux依赖工具安装 sudo apt update sudo apt install cmake clangdlaunch.json配置 {"version": "0…