当前位置: 首页 > news >正文

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.lryc.cn/news/624437.html

相关文章:

  • 项目实战——矿物识别系统(利用机器学习从化学元素数据中识别矿物,从数据到分类模型)
  • 把 AI 编程助手塞进「离线 U 盘」——零依赖的 LLM-Coder 随行编译器
  • 8.18 打卡 DAY 45 Tensorboard使用介绍
  • Nextcloud 私有云部署:cpolar 内网穿透服务实现安全远程文件访问
  • lamp架构部署wordpress
  • 直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化
  • 【前端进阶】UI渲染优化 - 骨架屏技术详解与多框架实现方案
  • 【自动化运维神器Ansible】Ansible Roles详解:层次化、结构化组织Playbook的最佳实践
  • CMIP6 气候模式核心特性解析
  • 项目失败的常见原因及应对措施分析
  • 《红色脉-络:一部PLMN在中国的演进史诗 (1G-6G)》 第6篇 | 专题:核心网的第一次革命——从电路交换到“用户/控制面分离”
  • kali linux从入门到精通教程
  • 20. 云计算-多租户
  • apisix负载均衡测试
  • 一些常见的聚类算法原理解析与实践
  • 20. 云计算-云服务模型
  • VSCode REST Client 使用总结
  • OSCP - Proving Grounds - Vanity
  • 云计算学习100天-第21天
  • 从 UI 角度剖析蔬菜批发小程序的设计之道——仙盟创梦IDE
  • 3D 一览通 SDK 集成,企业轻量化看图新选择
  • Flink Stream API - 源码开发需求描述
  • 用 Python 实现一个“小型 ReAct 智能体”:思维链 + 工具调用 + 环境交互
  • 开发避坑指南(28):Spring Boot端点检查禁用失效解决方案
  • 零基础数据结构与算法——第七章:算法实践与工程应用-图像处理
  • Qt5核心模块详细讲解
  • Docker学习--认识Docker
  • 图论Day5学习心得
  • 码上爬第十八题【协程+webpack】
  • IDE开发系列(1)基于QT的简易IDE框架设计