news 2026/5/1 8:48:18

MySQL读写分离实验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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机器上创建一个数据表,写主机和读主机都会同步出来,成功

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:13:26

Incisive英文单词学习

1️、基本信息单词:incisive词性:形容词 (adjective)比较级/最高级:more incisive / most incisive发音: 🇬🇧 英式:/ɪnˈsaɪsɪv/🇺🇸 美式:/ɪnˈsaɪsɪ…

作者头像 李华
网站建设 2026/5/1 7:14:30

Zephyr RTOS实战性能揭秘:5大核心指标深度评测指南

Zephyr RTOS实战性能揭秘:5大核心指标深度评测指南 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/4/18 16:07:37

MD 基础学习2

这里我们选择带颜色的模式做一个裙摆然后按Z键 ,把两个点拉宽然后缝纫我们要确保衣服在裙子的内部我们需要用到这个层的功能 ,层是数字越大越靠外,我们把衣服直接改成 -1 层这样就到裙子的内部去了带有层的板片,会带有这个蓝色标线…

作者头像 李华
网站建设 2026/5/1 6:52:13

Daraz南亚电商平台研究指南:十款实用工具助力区域市场分析

在聚焦新兴市场的电商平台中,Daraz以其对南亚地区(巴基斯坦、孟加拉国、斯里兰卡、缅甸、尼泊尔)的深度覆盖,成为观察人口红利市场数字化进程、本地化运营挑战及跨文化电商策略的独特样本。该平台为研究区域性电商的崛起、移动端主…

作者头像 李华
网站建设 2026/4/27 23:34:46

全连接神经网络深度学习终极指南:从零基础到实战应用完整教程

全连接神经网络深度学习终极指南:从零基础到实战应用完整教程 【免费下载链接】全连接神经网络多层感知机PPT详细介绍 这份PPT资源是学习全连接神经网络(多层感知机,MLP)的绝佳指南,内容全面且易于理解。它从单层感知机…

作者头像 李华
网站建设 2026/5/1 8:14:10

21、恶意文档文件分析与PDF文件剖析

恶意文档文件分析与PDF文件剖析 在数字调查过程中,当对可疑文件进行分析时,可能会发现某些文件并非可执行文件,而是文档文件,这就需要运用特定的检查工具和技术。过去,恶意文档文件主要针对Windows系统,但如今,像Trojan - Dropper:OSX/Revir.A这类恶意软件已将目标扩展…

作者头像 李华