使用 Amazon RDS 运维托管数据库 - Multi-AZ 与只读副本设计
通过 Multi-AZ 确保高可用性,利用只读副本分散读取负载。介绍 Blue/Green Deployments 与 RDS Proxy 的使用模式。
RDS 概述
RDS 是以托管方式提供关系型数据库的服务。与在 EC2 上安装数据库相比,OS 补丁、DB 补丁、备份和故障转移均已自动化。支持 MySQL、PostgreSQL、MariaDB、Oracle、SQL Server、Db2 共 6 种引擎,现有代码和工具几乎可以直接迁移。Aurora 是 RDS 兼容的 AWS 自研引擎,与标准 MySQL/PostgreSQL 相比可提供最高 5 倍的吞吐量,存储自动在 3 个 AZ 中复制 6 份副本,耐久性极高。RDS 标准提供自动备份 (时间点恢复),保留期可配置为 1-35 天。手动快照无保留期限制,可用于长期保存或跨区域复制。
Multi-AZ 与只读副本
Multi-AZ 部署将主实例和备用实例放置在不同 AZ,通过同步复制复制数据。主实例故障时自动执行故障转移,DNS 端点切换到备用实例。故障转移通常在 1-2 分钟内完成,但如有大量未提交的事务则恢复时间可能更长。Multi-AZ Cluster (MySQL 和 PostgreSQL 可用) 在不同 AZ 部署 2 个读取实例,将故障转移时间缩短至 35 秒以内,同时支持从读取实例进行读操作。只读副本通过异步复制创建只读副本,将报表查询和分析查询导向只读副本以减轻主实例负载。同一区域最多可部署 15 台,也可跨区域部署用于灾难恢复或地理分散的读取访问优化。Performance Insights 按等待事件和 SQL 可视化数据库负载,快速定位慢查询和锁竞争。
Blue/Green 部署与代理
RDS Blue/Green Deployments 可安全执行主版本升级和参数变更。创建 Green 环境 (新版本),通过复制同步数据后,在 1 分钟内通过切换完成流量切换。切换后若发现问题,旧环境仍然存在可手动回滚。RDS Proxy 提供数据库连接池和加速故障转移。对于 Lambda 等大量短生命周期连接的场景,Proxy 复用空闲连接,降低达到 max_connections 上限的风险。应用只需连接 Proxy 端点无需修改代码,且通过 IAM 认证和 Secrets Manager 集成实现凭据轮换自动化。 关于数据库设计的详细解析,可参考Amazon 相关书籍。
RDS 成本优化
RDS 费用由实例小时、存储 (gp3:每 GB 月费约 0.08 美元)、备份存储和数据传输构成。预留实例可享受最高 72% 折扣。Multi-AZ 会增加备用实例费用,需根据可用性要求选择。gp3 存储比 gp2 便宜 20%,可独立设置 IOPS 和吞吐量,按需分配性能。
与 Aurora 的比较和选择
选择 RDS 标准引擎 (MySQL/PostgreSQL) 还是 Aurora,取决于成本结构和扩展需求。Aurora 的存储自动扩展 (最大 128 TiB) 无需预配置 IOPS,适合增长难以预测的工作负载。另一方面,RDS 标准引擎的 gp3 存储 GB 单价更低,对于基线 3,000 IOPS 即可满足的中小规模数据库更具成本优势。故障转移时间:Aurora 30 秒以内,RDS Multi-AZ 为 1-2 分钟,RDS Multi-AZ Cluster 为 35 秒以内。Aurora 的读取端点自动在多个读取实例间进行负载均衡,而 RDS 只读副本需要应用侧或负载均衡器进行分发。成本方面 Aurora 实例单价高于 RDS,因此对于规模较小且可用性要求宽松的系统,RDS 标准引擎 + Multi-AZ 往往是最优选择。
设计陷阱与运维注意事项
以下汇总 RDS 运维中常见的问题。第一,参数组变更的应用时机:dynamic 参数立即生效,但 static 参数需要重启 DB 实例,重启期间会产生停机。生产环境应使用 Blue/Green Deployments 安全应用参数变更。第二,即使启用了存储自动扩展,扩展之间存在冷却期,急剧的数据增长可能耗尽可用空间。建议对 CloudWatch 的 FreeStorageSpace 指标设置告警,在剩余容量低于 20% 时触发通知。第三,只读副本的延迟 (ReplicaLag) 增大会损害数据一致性。注意长时间运行的 DDL 操作或备份窗口期间的延迟增大,设计应用侧在副本延迟超过阈值时回退到主实例的机制。第四,维护窗口应设置在流量最低的时段,且需考虑到即使是 Multi-AZ 配置在故障转移时也会出现短暂的连接中断。
总结
RDS 是自动化关系型数据库运维的托管服务。通过 Multi-AZ 确保高可用性,利用只读副本分散读取负载。Blue/Green Deployments 安全执行主版本升级,RDS Proxy 为 Lambda 的大量连接提供连接池。根据成本结构和扩展需求在 Aurora 和标准引擎间做出选择,掌握参数组、存储和副本延迟的运维注意事项,即可维护稳定的数据库基础设施。