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

MySQL读写分离实验

MyCAT 核心作用

MyCAT 是一款基于 MySQL 协议的开源分布式数据库中间件,核心定位为 “数据库代理”,主要解决单库单表性能瓶颈、数据量过载、高并发访问等问题,对应用端透明(无需大幅改造应用即可接入),是分布式数据库架构的核心组件,核心作用如下:

1. 分库分表(数据分片)—— 核心核心能力

当单 MySQL 数据库数据量达到千万 / 亿级、或并发压力过高时,单库性能急剧下降。MyCAT 支持:

  • 水平分片:按行拆分数据(如按用户 ID、时间范围、地区等维度),将海量数据分散到多个物理数据库节点;
  • 垂直分片:按业务模块 / 列拆分(如订单表、用户表分至不同库);
  • 自动处理分片路由、跨分片聚合查询(如跨节点 count/sum 计算),突破单库存储和性能上限。

2. 读写分离

针对 “读多写少” 的业务场同时可配置主从数据同步策略,保障数据一致性。景,MyCAT 可将写操作(insert/update/delete)路由到主库,读操作(select)分发到多个从库,实现读写请求分流,提升整体并发处理能力,

3. 负载均衡

对分片后的多数据库节点、读写分离的从库节点实现请求负载均衡,避免单个节点因请求过载宕机,提升数据库集群的可用性和稳定性。

4. 故障自动切换

内置数据库节点健康检测机制,当主库 / 从库节点故障时,MyCAT 可自动将请求路由到备用节点,实现故障 “无感切换”,减少业务中断时间,提升系统高可用。

5. 统一数据访问入口

对应用端屏蔽底层分布式数据库的复杂架构,应用只需连接 MyCAT 一个入口,即可访问分散在多个节点的分片数据,无需关注数据物理存储位置,降低应用开发和维护成本。

6. 权限与安全管控

集中管理数据库访问权限,细粒度控制不同应用对不同分片数据的读写权限,避免直接暴露底层数据库节点,提升数据安全;同时支持 SQL 拦截、优化,降低非法 / 低效 SQL 对集群的影响。

适用场景

广泛应用于电商、金融、政务、互联网等数据量大、高并发的业务系统,也可适配国产化数据库生态(如结合达梦、人大金仓等国产数据库实现分布式部署)。

用到了mycat中间件,gtid主从复制

读写分离步骤

  1. 【mycat】vim /etc/my.cnf关闭binlog日志

  2. 【mycat】解压jdk-8u压缩包到/usr/local目录下

  3. 【mycat】解压Mycatserver压缩包到/usr/local目录下

  4. 【mycat】/usr/local目录下使用vim编辑/etc/profile

  5. 【mycat】source重新加载/etc/profile

  6. 【mycat】检查Java版本

  7. 【mycat】到/usr/local/mycat木录下开启mycat

  8. 【写主机】进入本机mysql

  9. 【写主机】grant授权让mycat主机能登录写主机数据库

  10. 【写主机】刷新授权

  11. 【写主机】创建一个实体数据库

  12. 【读主机】进入本机MySQL

  13. 【读主机】grant授权让所有主机能登录读主机数据库

  14. 【读主机】刷新授权

  15. 【读主机】创建实体库

  16. 【mycat】回到mycat机器

  17. 【mycat】进入/usr/local/mycat/conf,找到.server.xml,schema.xml,备份

  18. 【mycat】vim编辑server.xml

  19. 【mycat】vim编辑schema.xml

  20. 【mycat】pkill -9杀死Java有关的进程

  21. 【mycat】重启mycat /usr/local/mycat/bin/mycat,查看8066端口是否运行

  22. 【mycat】登录mycat数据库,验证虚拟数据库是否存在

主从复制步骤(gtid方式)

  1. 【主】配置域名解析

  2. 【主】配置/etc/my.cnf

  3. 【主】创建目录:/var/log/mysqld,更改目录权限

  4. 【主】重启mysqld服务

  5. 【主】进入数据库,授权某个用户主从复制的权限

  6. 【主】刷新授权

  7. 【从】配置/etc/my.cnf

  8. 【从】重启mysqld服务

  9. 【从】进入数据库做change master主从复制权限

  10. 【从】开启slave

  11. 【从】查看slave状态有没有双yes

前提条件

centos7操作系统,三台部署MySQL5.7的机器,mycat机器,写机器,读机器

Mycat机器:

[root@mycat ~]# vim /etc/my.cnf #关闭binlog日志,log-bin=/var/log/mysql/mysql-bin注释掉 [root@mycat ~]# tar xf jdk-8u211-linux-x64.tar.gz -C /usr/local #解压jdk文件 [root@mycat ~]# cd /usr/local/ [root@mycat local]# ls jdk1.8.0_211/bin/ |grep java [root@mycat local]# vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_211/bin export PATH=$PATH:/usr/local/jdk1.8.0_211/bin [root@mycat local]# source /etc/profile #重新加载 /etc/profile 配置文件 [root@mycat local]java -version [root@mycat ~]# tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ [root@mycat ~]# cd /usr/local/mycat [root@mycat mycat]# /usr/local/mycat/bin/mycat start

写主机

[root@write ~]# mysql -pst #登录数据库 mysql> grant all on testdb.* to xie@'%' identified by 'xie@123'; #只能让mycat主机登录,%写成IP地址 mysql> flush privileges; mysql> create database testdb;

读主机

登录本机数据库 mysql> grant all on testdb.* to du@'%' identified by 'Du@123'; mysql> flush privileges; mysql> create database testdb;

mycat主机

[root@mycat mycat]# cd conf [root@mycat conf]# ls #查看是否有server.xml和schema.xml [root@mycat conf]# cp server.xml server.xml.bak [root@mycat conf]# cp schema.xml schema.xml.bak [root@mycat conf]# vim server.xml

[root@mycat conf]# vim schema.xml

[root@mycat conf]# pkill -9 java [root@mycat conf]# /usr/local/mycat/bin/mycat start [root@mycat conf]# ss -tanlp | grep 8066 #查看8066端口是否启用 [root@mycat conf]# mysql -h 192.168.200.30 -u root -p123456 -P 8066 #登录Mycat用户的数据库(虚拟数据库) 查看数据库,尝试使用数据库,查看的快了就是成功了,查看的延迟三十秒左右就是失败了

此时,mycat主机创建一个表,写主机也会同步出一个表

接下来做复制

写主机

vim /etc/hosts #配置域名解析

[root@read ~]# vim /etc/my.cnf #设置数据库的主从复制

mkdir /var/log/mysqld #创建log-bin的目录 chown -R mysql.mysql /var/log/mysqld #更改目录属于mysql [root@read ~]# systemctl restart mysqld mysql -pstp mysql> grant replication slave on *.* to alan@"%" identified by 'alan'; #创建一个名为 alan 的数据库用户,并授予该用户进行主从复制(replication)的权限 mysql> flush privileges; #刷新权限

读主机

[root@read ~]# vim /etc/my.cnf #做slave配置

[root@read ~]# systemctl restart mysqld [root@read ~]# mysql -pst [root@read ~]\e

mysql> start slave; mysql> show slave status\G #显示出两个yes Slave_IO_Running: Yes Slave_SQL_Running: Yes

最后,在Mycat机器上创建一个数据表,写主机和读主机都会同步出来,成功

http://www.cnnetsun.cn/news/21618.html

相关文章:

  • Obsidian个人知识管理(PKM)工具
  • CFD: NASA OVERFLOW(Overset Grid Solver for Flow Simulation)求解器
  • Apollo红外反射成像技术穿透木质屏风表面退化颜料与清漆层,破解褪色密码穿透表层窥见历史
  • 为你的STM32毕设项目加点“料”:“AI厨房安全卫士“火情监测与语音报警系统
  • heatmap.js v2.0终极迁移指南:快速升级你的热力图项目
  • 从英文困扰到建筑大师:我的Masa模组汉化蜕变之旅
  • Windows 11圆角禁用工具:一键回归经典直角窗口
  • Calamari OCR终极指南:如何快速掌握高效文字识别技术
  • 鸿蒙技术干货10:鸿蒙图形渲染基础,Canvas绘图与自定义组件实战
  • 5分钟急救指南:让DBeaver搜索功能满血复活的秘密技巧
  • 6、恶意软件事件响应工具指南
  • 70亿参数玩转全模态交互:Qwen2.5-Omni-7B-GPTQ-Int4如何重塑AI部署门槛
  • 22、微软 Office 文件分析与恶意检测指南
  • 24、恶意软件样本分析全流程指南
  • PCB缺陷检测实战指南:DeepPCB数据集避坑手册与高效部署方案
  • 27、恶意软件分类与系统发育分析指南
  • 20、网站服务器安全防护全攻略
  • 时间过半,目标依然遥远?OKR如何让团队找回“冲刺感”
  • 【JavaSE】十一、Stack Queue Deque PriorityQueue Map Set
  • 蚌埠住了,Java面试居然卷到了JDK源码级别!
  • 别再白忙活!数电发票不能作废,红冲这些要点要注意!
  • ComfyUI-MultiGPU分布式显存优化实战指南
  • B站缓存转换神器:一键解锁本地视频播放新体验
  • 客户端连接Clickhouse连不上解决方案
  • 从“查重焦虑”到“逻辑自洽”:一个本科生如何用智能工具重建论文写作的底层信心
  • LIO-SAM Ouster 128线激光雷达实战配置指南:从入门到性能提升
  • 从“憋不出引言”到“理清逻辑链”:一位本科生如何用智能工具重构毕业论文写作路径
  • 从“焦虑选题”到“逻辑闭环”:一名本科生如何在毕业季用智能工具完成学术初体验的华丽转身
  • 【MWORKS使用技巧72】1分钟带你了解在Sysblock中如何定义函数及算法
  • 借JAVA之力,解锁旅行攻略与搭子新玩法