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测试读写分离
相关推荐
冉冰学姐15 分钟前
SSM校园二手交易平台系统o86a5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·校园二手交易平台·ssm 框架
于归pro18 分钟前
Redis 基础命令、核心概念与安装验证完整指南
数据库·redis·缓存
程序猿202332 分钟前
索引的使用及设计规则
mysql
·云扬·34 分钟前
MySQL Join关联查询:从算法原理到实战优化
数据库·mysql·算法
码农水水1 小时前
小红书Java面试被问:SQL语句的执行过程解析
数据库·sql
TG:@yunlaoda360 云老大1 小时前
华为云国际站代理商TaurusDB的读写分离可以应用于哪些场景?
服务器·网络·数据库·华为云
youngqqcn1 小时前
SQL中联表查询深入分析
数据库·sql
TG:@yunlaoda360 云老大1 小时前
华为云国际站代理商CSBS主要有什么作用呢?
运维·服务器·数据库·华为云
Java&Develop1 小时前
PL/SQL Developer可视化修改数据
数据库·sql
星哥说事1 小时前
SSL/TLS 证书管理,文件与数据库加密技术
数据库·网络协议·ssl