MySQL高可用主从复制原理及常见问题

前言

MySQL高可用的最常见方案就是主从复制,而所有的⾼可 ⽤架构,都直接依赖于binlog,这次我主要分享主备的基本原理,帮助同志们更好的理解高可用的关键

目录

主从复制介绍

主从一致性

主从延迟的常见原因

部署主节点的机器和部署从节点的机器性能差距大

从节点的压力大

数据库中频繁有大的事务操作

解决方案

并行复制加快主从一致性

实时性要求高的查询强制走主库

判断没延迟在进行查询

主从切换

可靠性优先策略

可用性优先策略

总结

判断主库是否出问题


主从复制介绍

主从复制是将一个MySQL主节点的数据自动同步到一个或多个从节点,实现数据冗余、读写分离和负载均衡

主从一致性

MySQL通过binlog日志保证了主从一致性,这里的一致性是最终一致性,因为从主节点到从节点的binlog传递是由延迟的

即使从节点宕机,等它重新启动的时候,binlog日志也会自动补全前面因宕机而没有同步好的数据,所以,只要保证binlog日志不丢失,基本上就是保证了主从的最终一致性

主从延迟的常见原因

部署主节点的机器和部署从节点的机器性能差距大

从节点的压力大

因为一般来说对主节点比较小心,从节点比较随便,最终会导致压力都给了从节点,从节点资源都消耗到业务上面了,影响了同步速度

数据库中频繁有大的事务操作

比如,一个事务执行10分钟,那么MySQL进行主从同步的时候也需要执行10分钟,,这就造成了10分钟延迟

解决方案

并行复制加快主从一致性

除了减缓延迟原因之外,还可以考虑使用并行对从节点进行复制,原则上来说,并行复制只要不是复制的同一张表,基本上是不会又冲突的

实时性要求高的查询强制走主库

对于读写分离架构中,因为读取的都是从节点并且主从可能会出现延迟,所以遇到实时性高的数据读取不准确,此时可以考虑这小部分查询强制走主库来解决实时性要求高的查询

判断没延迟在进行查询

通过判断主从延迟,判断出没有延迟了再进行查询

主从切换

一般来说,,从节点只负责读,主节点可以读写

主从切换常见有两种策略

可靠性优先策略

1、操作主节点和从节点都为只读,就是把主节点的读写,转化为只读

2、判断主从延迟是否结束,即确保同步

3、将从节点改为可以读写

特点: 保证了可靠性,但是会有一段时间用户只能读取数据

可用性优先策略

直接把从节点改成可以读写,直接切库,不管数据的一致性问题,只保证用户可以一直使用

特点: 保证了可用性,但是因主从数据延迟导致数据丢失

总结

实战中建议使用可靠性优先的策略

判断主库是否出问题

主从切换有两种场景,⼀种是主动切换,⼀种是被动切换。⽽其中被动切换,往往是因为主库出问 题了,前面已经介绍了如何切换,接下来我们来搞明白怎么判断主库出问题

判断主库是否出问题需结合多种方法,不能仅依赖SELECT 1这类简单查询,需从进程状态、并发查询、磁盘空间、IO性能、主从状态等多维度综合检测

1、select如果可以执行成功,说明MySQL进程、接口联通性等基础方面正常

2、在mysql库中建立一个简单的表进行定期查询,查看数据库故障 是否因为查询的并行线程达到上线导致的无法执行SQL语句的情况

在mysql库中建立表的原因: 高优先级、资源消耗低、执行快、没有缓存干扰,可以很准确反应问题

如果是因为并发查询线程达到上线导致的数据库无法执行SQL语句出现问题,临时切换主从分担流量可以解决,但是如果需要根治肯定要加服务器配置和增大并发查询线程数量

相关推荐
这个DBA有点耶11 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
这个DBA有点耶14 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码14 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
SelectDB18 小时前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence19 小时前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops
发霉的馒头19 小时前
ORA-00845: MEMORY_TARGET not supported on this system的解决方法
数据库
草莓熊Lotso21 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
煎饼皮皮侠1 天前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_1 天前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
九皇叔叔1 天前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构