概述
vivo数据库运维经历了从2018年到2021年的发展,从起步阶段到拓展阶段,数据库实例数量从2700增长到62000,运维规模和复杂度显著提升。vivo采用"可用性管理四部曲"(故障发现、预防、复盘、治愈)的方法论,结合平台能力建设和标准化管理,有效保障了大规模数据库的可用性。
一、vivo数据库运维简介
- 存储产品:涵盖MySQL、Redis、MongoDB、ES、TiDB、磁盘KV、对象/文件存储、MySQL-Proxy等。
- 运维规模:2018年物理机数量2700,实例数量11000;2021年物理机数量62000,实例数量30000。
- 业务SLA等级:
- 核心业务:99.99%<53分钟
- 重要业务:99.99%<53分钟
- 一般业务:99.95%<262分钟
- 可用性管理四部曲:
- 故障发现:100%发现故障,准确定位问题。
- 故障预防:通过架构优化、上下游管理、数据增长监控等手段提前消除隐患。
- 故障复盘:分析故障原因,挖掘根因,制定长效解决方案。
- 故障治愈:先止损,再调查;丰富自愈场景,建设故障预案。
二、可用性管理方法论和管理实践
- 故障预防:
- 架构优化:消除天然缺陷,如主备同物理机、无自动更新等。
- 上下游管理:解决业务配置与数据库配置不匹配问题。
- 数据增长监控:提前处理主键ID越界等问题。
- 平台化转型:从80%手工操作降低到<20%人工操作。
- 故障发现:平台告警延时58.25秒,故障召回率100%,报警准确率100%。
- 自愈场景:包括主机故障自动切换、MySQL/Redis连接数自动扩容、ES进程自动拉起等。
- 故障预案:MySQL/Redis/ES/磁盘KV/对象存储共26个场景预案。
- 故障复盘:建立标准化的复盘流程,记录故障背景、影响、原因、改进措施等。
三、业务规模&可用性管理挑战
- 起步阶段(2018年):5人团队,平台能力5%,元数据10%,标准5%,通过MHA、表格管理、标准编写等初步建设。
- 建设阶段(2019年):6人团队,平台能力60%,元数据80%,标准70%,通过系统建设、架构优化、机房迁移等提升能力。
- 稳固阶段(2020年):8人团队,平台能力80%,元数据90%,标准整治,推动业务适配,DBA接手线下实例。
- 拓展阶段(2021年):10人团队,平台能力85%,引入自研数据库,云资源全部打通,加强故障排查和预案建设。
- 管理心得:
- 辨证看待历史包袱,利用机房迁移等客观条件推动改进。
- 统一标准,包括架构、部署、版本、开发规范等。
- 平台能力是大规模运维的基石,能提升效率并保障可用性。
四、平台能力对可用性的影响
- 业务场景覆盖:MySQL/TiDB/MySQL-Proxy、MongoDB/ES、Redis/Redis-Proxy/磁盘KV、对象存储等。
- 平台功能:数据变更/查询/归档、预算申请/服务申请/监控、主机/实例/业务/Proxy监控。
- 运维效率提升:通过标准化流程和自助服务,降低DBA工作负担,提升可用性保障能力。
五、可用性和成本的冲突和调和
- 可用性优先阶段:以最优解为目标,收集运营数据,提升管理能力。
- 精细化运营阶段:
- 核心业务:一主多从、独立物理机部署、延迟从库、跨机房灾备、独立计算资源。
- 其他业务:一主两从、混合部署、延迟从库、部分跨机房灾备、计算资源混部。
- 核心观点:平台能力建设是平衡可用性与成本的关键,通过标准化和自动化降低不确定性,实现高效运维。