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

简介: 教程来源 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/

相关文章
|
1月前
|
SQL 算法 程序员
程序员必备的十大技能(进阶版)之高性能数据库实战(二)
教程来源 http://bncne.cn/ 本节深入讲解SQL调优核心技巧:解析执行计划(EXPLAIN)、深分页优化、JOIN策略(驱动表选择/算法适配)、GROUP BY/ORDER BY索引优化,以及批量操作最佳实践,全面提升查询性能与系统稳定性。
|
29天前
|
SQL 安全 算法
软件开发进阶技能之性能与安全调优(四)
本节聚焦安全调优:严守最小权限原则,缩减攻击面。涵盖SQL注入(禁用拼接,用PreparedStatement/MyBatis #{})、XSS(输出编码+框架自动转义)、命令注入(白名单校验);JWT安全(强密钥、合理过期、防算法混淆);会话固定防护与bcrypt加盐哈希密码存储。
|
1月前
|
消息中间件 NoSQL 中间件
软件开发进阶技能之分布式与高并发(二)
教程来源 https://oplhc.cn/ 消息队列(MQ)是分布式系统核心中间件,以异步通信实现服务解耦、流量削峰与最终一致性。支持可靠投递、幂等消费与死信处理,广泛应用于秒杀、日志收集等高并发场景。
|
1月前
|
Prometheus 监控 NoSQL
软件开发进阶技能之分布式与高并发(五)
教程来源本节详解高并发秒杀系统设计与可观测性实践:通过CDN静态化、Redis原子扣减、MQ异步下单、唯一键防重等实现抗洪峰、零超卖;并集成Prometheus监控、SkyWalking链路追踪、ELK日志分析,构建完整可观测体系。
|
1月前
|
NoSQL Redis Nacos
软件开发进阶技能之分布式与高并发(三)
教程来源 本节详解分布式系统核心机制:第七部分聚焦分布式锁,对比Redis(含Redisson)、ZooKeeper、数据库三种实现,强调安全性与可靠性;第八部分阐述微服务治理,涵盖注册发现、配置中心、负载均衡及Sentinel熔断降级限流,助力构建高可用分布式架构。
|
4月前
|
人工智能 安全 测试技术
大模型时代,断言还管用吗?AI 系统测试的结构性变革
本文探讨AI系统测试的范式变革:大模型、RAG与Agent等新型系统具有概率性、黑盒性与非确定性,使传统“输入→输出→断言”模式失效。测试需从功能验证转向质量评估,构建分层模型与量化指标体系,测试工程师正升级为概率系统评测体系的设计者。
|
3月前
|
人工智能 安全 数据可视化
AI 智能体的开发技术
国内AI智能体开发已超越提示词工程,转向以“落地”“效率”为核心的代理解构。依托DeepSeek、Qwen等国产大模型,构建反思自纠、多智能体协作、高级RAG、工具调用与可视化编排等技术栈,并强化安全护栏与反馈优化,打造稳定可靠的“数字员工”。
|
存储 缓存 NoSQL
开源 | 阿里云 Tair KVCache Manager:企业级全局 KVCache 管理服务的架构设计与实现
阿里云 Tair 联合团队推出企业级全局 KVCache 管理服务 Tair KVCache Manager,通过中心化元数据管理与多后端存储池化,实现 KVCache 的跨实例共享与智能调度。该服务解耦算力与存储,支持弹性伸缩、多租户隔离及高可用保障,显著提升缓存命中率与资源利用率,重构大模型推理成本模型,支撑智能体时代的规模化推理需求。
|
6月前
|
存储 弹性计算 人工智能
2026年阿里云服务器租用价格表整理:配置体系、收费标准与优惠政策
阿里云服务器租用价格覆盖从 38 元 / 年的轻量配置到数万元 / 年的高性能实例,用户需根据业务负载(并发量、算力需求)与使用周期选择:个人 / 小微团队优先轻量服务器或经济型 e 实例,中小企业核心业务选通用算力型 u1 实例,高负载场景适配第八代高性能实例,AI / 渲染需求选择 GPU 服务器。选型时需结合优惠政策(如续费同价、长期折扣)与附加成本(带宽、存储),通过阿里云官方价格计算器精准核算,确保配置与需求匹配,实现性能与成本的平衡。