阿里巴巴云时代的数据库管理_23页_10mb
报告摘要
阿里巴巴云时代的数据库管理总结
个人简介
- 阿里巴巴数据库团队高级专家,同时也是《高性能MySQL 第三版》的译者。
- 自2009年研究生毕业后加入阿里数据库团队,负责淘宝核心数据库的运维、管理、优化与配置,构建了淘宝数据库第一代MySQL运维监控系统。
- 2013年起支持阿里云数据库RDS的运维与线上故障处理,推动数据库服务产品化,提供数据库管理、数据传输、数据库优化等服务。
- 个人博客:http://www.orczhou.com,Google搜索关键词:orczone
阿里巴巴数据库技术团队概述
- 负责阿里旗下所有子公司的数据库管理。
- 承担历年双11、双12、春节红包等大型活动的数据库容量规划、架构升级与运行稳定性保障。
- 主导了“阿里去IOE”和“异地多活”等架构落地,负责阿里巴巴MySQL内核研发。
- 研发了多个云产品,包括iDB(企业数据库研发流程平台)、OceanBase云平台、数据管理DMS、数据传输DTS等。
数据库团队的进化
-
运维工具时代
- 使用Oracle、小型机、存储设备及脚本进行数据库运维。
-
平台与服务时代
- 聚焦双11、去IOE、异地多活等项目,推动数据库平台化与服务化。
-
云服务时代
- 引入云计算、Docker、DevOps等技术,实现自助式数据库运维。
来自业务的压力
- 2012年:某核心集群执行293亿次SQL/天,QPS达86万/秒,TPS为11万/秒,单机QPS高达6.5万/秒。
- 2015年:QPS增长至约500万。
- 这些数据反映出业务对数据库性能的极致需求,以及随之而来的高成本与高复杂度。
规模化与性能优化
- 简单的数学:
$5%$ 的性能提升意味着在10000台主机、每台主机5万次操作的情况下,可带来2500万次性能提升;$10%$ 的提升则可带来5000万次。 - 技术进化1:对性能极致的追求
- 针对电商库存场景,优化事务处理流程,提升系统吞吐量。
- 通过自动热点识别和批量提交等技术手段,减少锁竞争与事务冲突。
对性能极致的追求:电商库存场景
- 事务模型如下:
(1) begin;
(2) insert normal row;
(3) update hot row;
(4) select hot row;
(5) commit; - 优化目标是减少锁竞争,提高并发处理能力,尤其是在高并发的库存更新场景中。
- 引入了“commit_on_success rollback_on_fail”的机制,以减少事务失败带来的影响。
规模化与系统问题
- 简单的数学:
如果一个系统正常运行十年出一次故障,那么运行一万个该系统的实例,每个月将出现约83.33次故障。 - 标准化的重要性:
- 通过标准化提升系统稳定性。
- 上线前压测以提高系统健壮性。
- 实现自动化运维,降低人为错误。
- 解决系统问题的策略:
- 每次解决一个暴露的问题,实际上是在解决整个平台的问题。
- 修复如Bug#77572等关键问题,通过平台自动化处理,提升系统可靠性。
系统问题案例:Bug#77572
- 现象:在5.6版本的Online DDL过程中,若其他客户端写入数据导致UK冲突,则会导致DDL失败。
- 原因分析:
- Online DDL会记录所有对目标表PK的修改行为(Online Log)。
- 在Insert操作中,先插入PK,记录Insertlog;再插入UK,发现冲突后回滚,记录Delete log。
- 全量数据拷贝完成后,应用Incremental Online Log时,若发现UK冲突,将报错退出,导致DDL失败。
- 官方态度:
- 被视为一个明确的Limitation。
- 仅修改报错内容,未解决根本问题。
- 阿里数据库的应对:
- 修复该bug,通过平台自动化处理提升系统稳定性。
业务扩张与多样化
- 随着业务的扩张,数据库技术需要适应更加多样化的应用场景。
- 数据库的使用不仅限于传统业务,还扩展到移动端、云平台等新领域。
数据库技术与产品服务
- 阿里数据库技术团队不断推进技术产品化,提供全面的数据库服务,包括:
- 数据库管理
- 数据传输(DTS)
- 数据诊断与优化(DMS)
- 自动化运维(iDB)
目录
- 阿里数据库技术团队概述 & 个人简介
- 业务发展与规模化
- 挑战与机遇:性能与系统稳定性
- DBA的挑战与进化
- 云时代:让研发具备DBA的能力
DBA的挑战与进化
- 专职DBA将逐渐减少,平台将取代其基础能力。
- 专业的DBA将越来越稀缺,其专业能力将被平台放大。
- DBA的职责将向更高级的系统优化与架构设计方向发展。
云时代:让研发具备DBA的能力
- iDB:企业数据库研发流程平台,旨在提升研发效率与质量。
- 流程与规范:
- 引擎使用InnoDB,不使用外键。
- 表必须加上注释,尽量使用UNIGNED类型。
- 字符集使用UTF8,默认定义为NOT NULL。
- 表必须有数值主键(InnoDB)。
- 索引命名规范,避免过多使用单列索引,字符串尽量定义前缀。
- 尽量使用索引,使用索引覆盖,避免复杂逻辑和隐式转换。
- 建议使用合理的分页实现。
- 诊断与优化:
- 提供运维技术与实战峰会,帮助研发人员掌握数据库优化技巧。
- 内部用户使用iDB,云用户使用DMS,手机APP等场景也得到支持。
总结
阿里巴巴数据库技术团队在云时代背景下,持续推动数据库技术的创新与产品化,从传统的运维工具时代,逐步演进到平台与服务时代,再到云服务时代。面对业务的快速扩张与对性能的极致需求,团队通过性能优化、系统稳定性提升、流程标准化等手段,不断适应变化。同时,DBA的角色也在发生变化,平台化趋势使得DBA的基础能力被取代,但其专业能力则被进一步放大。未来,研发人员将具备一定的DBA能力,从而提升整体系统的效率与稳定性。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载