裸机服务器读副本,扩展数据库工作负载指南
读副本是从主数据库重放变更、并处理只读查询的次要数据库实例。企业可以把报表、搜索、仪表板和应用程序读取流量分散到副本,而不必改变主数据库的写入路径。
在裸机服务器上,团队可以控制数据库节点的 CPU、内存、NVMe 存储、网络路径和操作系统设置,有助于按实际负载进行较可预测的容量规划;但读副本仍需要路由、一致性规则、延迟监测、故障切换流程和独立备份。
读副本如何扩展数据库工作负载
主数据库继续负责写入,而一个或多个副本则重放事务日志并处理合适的读取请求。把指定查询移离主数据库,可以减少资源竞争、保护写入延迟,并为报表工作提供独立的容量路径。
数据库密集型工作负载不只取决于核心数量。Dataplugs 的高 IOPS 数据库工作负载服务器设计指南文章说明工作负载分析、IOPS、读写比例,以及读副本如何分担分析查询。
- 需要实时数据时,把写入及写入后立即读取的操作留在主数据库
- 通过应用程序或路由层,把合适的只读请求传送到副本
- 把报表、搜索和仪表板流量与交易查询分开处理
- 当读取需求超出单一节点的实际容量时,再增加副本
- 除非数据库及路由设计另有保证,否则应把副本视为最终一致
读取路由和一致性选择
只有在应用程序把安全的查询传送到副本时,副本才会带来效益。路由可以在应用程序、数据库代理或连接池进行,但必须清楚区分只读操作,并订定可接受的数据延迟程度。
路由决定也会影响响应时间目标。Dataplugs 的如何优化交易密集型应用的存储延迟文章说明调整交易密集型系统时,应把存储延迟、读副本及查询行为一并考虑。
- 先定义每项请求是否需要强一致性,或可以容许短暂延迟
- 读取后立即写入的流程应留在主数据库,或等待副本追上进度
- 使用连接池,避免路由变化建立过多不必要的数据库连接
- 避免长时间报表与低延迟读取在同一副本上互相竞争
- 测试副本延迟、维护及节点移出路由池时的流量处理
裸机服务器读副本的容量规划
副本同时需要处理事务日志重放及分配到的读取查询,因此容量应按读写比例、数据集、工作集大小、查询组合、峰值连接数及恢复目标规划,而不能只看平均 CPU 使用率。
活动或报表时段可能令读取需求突然增加。Dataplugs 的季节性网站流量高峰的资源分配优化文章说明应以测量所得的 CPU、内存、存储和带宽需求规划独立基础设施,而不是只按平均值估算。
- 为查询执行、事务日志重放及维护工作预留 CPU 余量
- 为工作集、数据库缓存、连接池和操作系统缓存分配内存
- 数据文件、事务日志及临时工作使用低延迟 NVMe 存储
- 带宽需要应付复制、客户端读取、备份和副本重建
- 为故障切换、重建索引、vacuum 和突然的读取高峰保留容量余量
Tip: 应使用最大而合理的数据集和查询高峰进行测试。副本在平均负载下看似充足,仍可能在重放、报表或重建期间落后。
复制延迟和数据新鲜度监测
复制延迟不只是基础设施指标,也会直接影响用户看到的数据。副本即使保持连接,已应用的数据仍可能不够新,未能支持仪表板、搜索结果或运营决策。因此应同时监测复制流程,以及应用程序实际取得的数据新鲜度。
- 可以利用事务日志位置、重放时间、队列大小、查询延迟及错误率找出副本落后的原因。告警门槛应按工作负载设定:分析查询可以接受几秒延迟,但库存或账户流程可能不能接受。
- 在数据库支持的情况下,同时以时间和日志数量测量延迟
- 追踪重放速度、队列增长、存储延迟和副本 CPU 饱和情况
- 按不同应用程序流程设置数据新鲜度告警,而不是使用单一门槛
- 副本落后时先将其移出路由或降低优先级,避免返回误导性结果
- 记录触发流量调整、修复或提升副本决定的延迟门槛
故障切换、提升和流量路由
读副本可以提升为可写入的主数据库,但复制本身不会决定何时适合提升。故障切换设计需要清楚的提升权限、隔离旧主数据库的方法,以及转移写入流量和连接池的受控流程。
裸机服务器架构应演练完整流程:检测故障、选择正确副本、进行提升、更新写入端点、重建过时连接,并确认没有两个同时写入的 split-brain 主数据库。故障恢复和副本重建步骤也应记录在同一份操作手册内。
- 清楚定义谁或什么工具有权提升副本
- 允许新写入者运行前,先隔离或围堵旧主数据库
- 使用稳定的应用程序端点、代理或受控 DNS 变更
- 以退避方式重连,避免故障后出现连接风暴
- 记录故障恢复、数据验证和重建旧主数据库的流程
备份和日常安全措施
读副本不是备份。误删数据、错误迁移及已损坏的写入都可能同步到所有副本。应独立保留基础备份和事务日志归档,让团队可以恢复到事故发生前的指定时间点。
恢复副本应存放在主数据库及副本之外的故障范围,并限制访问权限,在独立容量上测试还原。恢复计划需要写明保留期、加密、还原顺序、重建时间,以及恢复节点重新投入服务前的检查。
- 独立于副本健康状况,定期建立并验证基础备份
- 持续归档事务日志,并监测归档失败
- 以受保护的方式保留服务器外或跨站副本
- 使用时间点恢复处理操作员、应用程序和迁移错误
- 按订定的 RPO 和 RTO 进行还原、提升及副本重建演练
总结
裸机服务器上的读副本可以提高数据库读取容量,同时保持资源分配较为可预测。要让设计可靠,必须一并定义路由、一致性、延迟门槛、服务器容量、故障切换权限、备份和监测。
如果工作负载需要数据库及相关服务的可预测单租户容量,Dataplugs 提供具备可配置 CPU、内存、存储和网络选项的独立服务器方案。
如需了解更多,欢迎浏览 Dataplugs 或联系 sales@dataplugs.com。