软件开发进阶技能之数据库进阶(五)

简介: 教程来源 https://zlpow.cn/ 本节详解数据库高可用核心方案:主从复制(异步/半同步原理、搭建与延迟治理)、自动故障转移(MHA/Orchestrator)及读写分离实践,并涵盖监控指标、慢查询分析与配置调优,助力系统稳定扛住高并发。

第五部分:数据库高可用与复制 —— 让系统永不掉线

单机数据库存在单点故障风险。生产环境必须配置高可用方案,常见的有主从复制、集群和分布式数据库。

5.1 主从复制(Replication)
主从复制是最基础的冗余方案:主库处理写请求,一个或多个从库异步或半同步复制主库的数据变更,从库处理读请求(读写分离)。

5.1.1 MySQL 复制原理
主库将数据变更写入二进制日志(Binary Log, binlog)。

从库的 I/O 线程连接到主库,请求 binlog 并保存到本地的中继日志(Relay Log)。

从库的 SQL 线程读取中继日志,重放 SQL 操作。

复制模式:

异步复制:主库不等待从库确认,性能好但可能丢数据(主库宕机时未发送的日志丢失)。

半同步复制:主库至少等待一个从库确认收到 binlog 才返回提交成功,降低丢失风险,但增加延迟。

全同步复制:所有从库确认后才提交,基本无数据丢失,但性能极差,极少使用。

5.1.2 搭建简单的 MySQL 主从(步骤概要)

-- 主库配置 my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=mydb

-- 创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 从库配置
server-id=2

-- 从库执行
CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=0;
START SLAVE;

5.1.3 主从延迟问题与解决
主从延迟(Seconds_Behind_Master)过大时,从库读到旧数据,影响读写分离的正确性。

延迟原因:

从库硬件较差。

主库写并发高,从库 SQL 线程单线程重放(MySQL 5.6 后支持多线程复制,需配置 slave_parallel_workers)。

大事务(如一次删除百万行)导致 binlog 生成慢且重放慢。

从库上有耗时的读查询(锁冲突)。

对策:

提升从库硬件,使用 SSD。

拆分大事务。

开启并行复制。

读写分离时,对于要求强一致性的读,强制走主库。

5.2 高可用切换与故障转移
当主库故障时,需要将一个从库提升为新主库。手动切换慢且易错,通常使用自动化工具:

MHA(MySQL Master High Availability)

Orchestrator

ProxySQL + 自动探测

现代数据库如 Galera Cluster(MySQL 多主同步集群)提供强一致性高可用,但写冲突需要处理。PostgreSQL 有 Patroni + etcd 实现自动故障转移。

5.3 读写分离架构
在应用层实现读写分离:写操作走主库,读操作走从库池(负载均衡)。需要注意:

从库延迟导致刚写入的数据读不到。可以采取“写后读主”策略(关键读走主库)。

使用中间件如 ShardingSphere-Proxy、Mycat、MaxScale 对应用透明。

第六部分:数据库监控与调优 —— 持续的战斗力

即使初期设计和索引都合理,随着数据量和访问模式变化,性能也会逐渐下降。建立监控和持续调优机制至关重要。

6.1 关键性能指标(KPI)
QPS/TPS:每秒查询数/事务数,衡量吞吐量。

慢查询数量:超过阈值的 SQL 数量,慢查询日志分析的基础。

InnoDB 缓冲池命中率:SHOW ENGINE INNODB STATUS 中 Buffer pool hit rate,低于 95% 说明内存不足或热数据太大。

锁等待与死锁:Innodb_row_lock_waits、Innodb_deadlocks。

复制延迟:Seconds_Behind_Master。

连接数使用率:接近 max_connections 时需要扩容或优化连接池。

6.2 慢查询日志与分析
开启慢查询日志(MySQL):

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;  -- 超过2秒记录
SET GLOBAL log_queries_not_using_indexes = ON;  -- 记录未使用索引的查询

使用 pt-query-digest(Percona Toolkit)分析慢日志,它会把相似的 SQL 聚合,按时间、锁等排序,输出最耗时的查询。

6.3 数据库配置调优
不同数据库的配置差异很大,以下是一些通用原则:
image.png
注意:修改参数前必须基准测试;在云数据库(RDS)上,许多参数是默认优化好的。

6.4 使用 Explain 进行持续审查
建立 SQL 审核机制:所有上线 SQL 必须经过 Explain 检查,避免全表扫描、无索引排序等。
来源:
https://rvtst.cn/

相关文章
|
20小时前
|
消息中间件 NoSQL 中间件
软件开发进阶技能之分布式与高并发(二)
教程来源 https://oplhc.cn/ 消息队列(MQ)是分布式系统核心中间件,以异步通信实现服务解耦、流量削峰与最终一致性。支持可靠投递、幂等消费与死信处理,广泛应用于秒杀、日志收集等高并发场景。
|
10天前
|
算法 IDE 搜索推荐
软件开发新手入门五大核心技能之基础编程能力(五)
教程来源 http://fndvx.cn/ 本章涵盖算法思维与调试能力:详解冒泡、快排、归并等经典排序及线性、二分查找算法;介绍打印调试、断点调试、断言验证等实用技巧;剖析空指针、索引越界等常见错误及解决方案;最后通过学生成绩管理系统实战,综合运用面向对象编程与数据处理能力。
|
10天前
|
消息中间件 存储 资源调度
软件开发新手入门五大核心技能之计算机基础常识(四)
教程来源 http://uklgy.cn/ 本章介绍操作系统核心机制:进程/线程模型、IPC通信方式;并发控制中的竞态条件、锁与死锁;虚拟内存与分页机制;文件系统结构及权限管理。辅以Java、Python、C语言实例,深入浅出解析资源调度与内存管理原理。
|
10天前
软件开发新手入门五大核心技能之计算机基础常识(二)
教程来源 http://htnus.cn/ 本章详解计算机底层语言——二进制:从物理实现优势出发,讲解二进制与十进制互转、原反补码原理(含-128特例)、IEEE 754浮点数标准(解释0.1+0.2≠0.3),以及ASCII到Unicode/UTF-8的字符编码演进与乱码修复。
|
2月前
|
人工智能 安全 数据可视化
AI 智能体的开发技术
国内AI智能体开发已超越提示词工程,转向以“落地”“效率”为核心的代理解构。依托DeepSeek、Qwen等国产大模型,构建反思自纠、多智能体协作、高级RAG、工具调用与可视化编排等技术栈,并强化安全护栏与反馈优化,打造稳定可靠的“数字员工”。
|
8天前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
194 16
|
5天前
|
人工智能 安全 关系型数据库
RDS Agent可观测能力正式邀测!全面支持Qoder、Codex、Claude Code、OpenClaw等主流研发Agent
阿里云RDS Agent可观测平台正式发布!面向Qoder、Codex等多类AI Agent,提供统一接入、Token/成本归因、ROI分析、风险回溯与全链路Trace下钻能力,基于RDS MySQL+DuckDB列式分析底座,助力团队从“使用Agent”迈向“治理Agent”。
148 6
|
2天前
|
人工智能 弹性计算 前端开发
2026年阿里云618活动期间有什么优惠?云服务器、AI产品和大模型、优惠券活动介绍
阿里云2026年618活动已全面开启,涵盖云服务器、AI产品及优惠券等。云服务器方面,轻量应用服务器2核2G低至38元/年,2核4G仅9.9元/月;经济型e实例99元/年,u1实例199元/年,u2i实例3折起,c9i/g9i服务器6.4折起。AI产品方面:QoderWork CN首月0元,Qwen3.7限时5折,秒悟新注册送1万积分,HappyHorse视频生成8折,OPC创新助力计划至高补贴100万Token。大模型方面,百炼平台享1亿+免费tokens,AI通用型节省计划最高5.3折。叠加AI加速季权益礼包(个人360元/企业1728元)及百炼先用后返最高200元。
|
8天前
|
存储 运维 监控
《告别日志排查:OpenClaw如何修复工具错误指南》
传统工具调用系统依赖预先枚举的错误码,面对异构工具的指数级参数组合和隐蔽语义错误时彻底失效,只能靠人工排查海量日志救火。本文深入拆解OpenClaw的革命性设计,它彻底抛弃被动防御思路,构建了语法校验、语义验证、目标对齐三层递进的语义自愈体系。通过异常语义化建模、工具间协同纠错、动态粒度控制和自学习闭环,将异常转化为系统进化的养分,实现95%以上常见异常的自主修复。这套机制为通用智能体的鲁棒性提供了全新技术路径,重新定义了工具调用的可靠性标准。
164 9
|
9天前
|
机器学习/深度学习 人工智能 应用服务中间件
别再被误导了!一文讲透 MCP 与 Function Calling 的真实关系
AI圈热议MCP能否取代Function Calling?实则二者定位迥异:Function Calling是大模型的“决策层”,负责选工具、生成参数;MCP是后端与工具间的“执行协议”,统一调用标准。二者分属不同链路环节,非替代关系,而是协同互补的“黄金搭档”。
189 5