Mysql主从复制与读写分离测试

一、前言:

在企业应用中,成熟的业务通常数据量都比较大,单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求,配置多台主从数据库服务器以实现读写分离。

二、主从复制原理

2.1 MySQL的复制类型

  • 基于语句的复制(STATEMENT, MySQL默认类型)
  • 基于行的复制(ROW)
  • 混合类型的复制(MIXED)

2.2 MySQL主从复制的工作过程

主-从进行复制

1、为什么复制 ? 保证数据完整性

2、谁复制谁? slave角色复制master 角色的数据

3、数据放在哪?二进制文件中

4、 mysql-bin.000001 -> 混合类型的复制(MIXED) 记录完整的sql

5、slave 复制 二进制文件的日志到本地的节点,保存为中继日志方式

2.2.1核心重点

1、两个日志

① 二进制日志

② 中继日志

2、三个线程

① dump线程

② I/O 线程

③ sql线程

2.3 MySQL 有几种同步方式: 三种

1、异步复制(Async Replication)

2、同步复制(sync Replication)

3、半同步复制(Async Replication)

4、增强半同步复制(lossless Semi-Sync Replication)、无损复制

2.3.1、异步复制(Async Replication)
  • 特点 MySQL 默认的复制方式。主库执行事务后,仅将事务写入 binlog 就向客户端返回 "成功",不等待从库接收或应用 binlog
  • 优缺点 **:**性能最好,但主库宕机时可能丢失未同步的 binlog,数据一致性风险最高
2.3.2、同步复制(Sync Replication)
  • 特点 主库执行事务后,需等待至少一个从库完成 binlog 的应用(落地到磁盘),才向客户端返回 "成功"。
  • 优缺点 **:**数据一致性最强,但性能损耗最大,适用于对数据零丢失要求极高的场景。
2.3.3、半同步复制(Semi-Sync Replication)
  • 特点 主库执行事务后,需等待至少一个从库接收 binlog 并写入 relay log(且发送确认信号),才向客户端返回 "成功";若超时则降级为异步复制。
  • 优缺点 **:**数据一致性比异步高,性能略低于异步,避免了主库宕机导致的大量数据丢失。
2.3.4、增强半同步复制(lossless Semi-Sync Replication、无损复制)

三、主从复制测试

整个测试的环境 以及服务器信息

  • 环境部署 cetos7.7
  • 虚拟机服务环境
    • Master服务器:10.0.0.3mysql5.7
    • slave1服务器:10.0.0.21mysql5.7
    • Slave2服务器:10.0.0.22 mysql5.7

3.1、主从服务器时间同步

3.1.1 master服务器配置

环境前准备部署

① 安装ntp、修改配置文件

yum -y install ntpdate ntp #安装ntp软件

ntpdate ntp.aliyun.com #时间同步

② 开启NTP服务、关闭防火墙和增强性安全功能

systemctl start ntpd

3.1.2 两台SLAVE服务器配置

① 安装ntp、ntpdate服务

yum install ntp ntpdate -y

② 开启ntp服务,关闭防火墙、增强性安全功能

③ 时间同步master服务器

ntpdate 10.0.0.3

④ 两台slave服务器配置相同

ntpdate ntp.aliyun.com (外网)

ntpdate 10.0.0.3 (内网)

#周期性计划 每10分钟同步一次主机时间

crontable -e

*/10 * * * * /usr/sbin/ntpdate 192.168.10.16

3.2、配置主从同步

① master服务器修改配置文件

重启服务

systemctl restart mysqld

②进入mysql,给两个slave数据库权限

mysql > GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'10.0.0.%' IDENTIFIED BY '123456';

#刷新权限列表

mysql> flush privileges;

#查看master数据库状态

mysql> show master status;

  • 可见产生了master-bin.000001日志文件,定位为154
  • 从服务器需要定位到此处进行复制

③从服务器配置 10.0.0.21 10.0.0.22 设置都是一样的

④开启从服务器功能

mysql -uroot -p

四、读写分离测试

整个测试的环境以及服务器信息

  • 环境部署 cetos7.6
  • 虚拟机服务环境
    • Master服务器:10.0.0.3
    • slave1服务器:10.0.0.21
    • slave2服务器:10.0.0.22
    • Amoeba服务器:10.0.0.10 jdk1.6、Amoeba

客户端服务器:10.0.0.10 mysql 测试

注:做读写分离测试之前必须有一 主 两从 环境

4.1搭建 MySQL读写分离

4.1.1 Amoeba服务器配置----
4.1.2测试读写分离
相关推荐
广州灵眸科技有限公司5 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒8 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手8 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学8 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh10 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户713335851562411 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z1234567898611 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD11 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo11 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户713335851562412 小时前
MySQL - InnoDB 的 Buffer Pool
mysql