阿里数据库DevOps最佳实践

Posted 阿里云数据库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里数据库DevOps最佳实践相关的知识,希望对你有一定的参考价值。

DevOps已不再陌生,但目前业界主要集中在开发与运维的高效协作和快速发布上,而作为企业核心资产的数据库,其结构设计、SQL审核、变更发布已成为企业效率提升的主要瓶颈,这篇文章为杭州云栖大会的分享议题(文末有视频),将详细介绍阿里在数据库DevOps上遇到的挑战以及解决方案。


>>阿里数据库DevOps是什么

一句话定义: 阿里数据库DevOps是以数据库产品为核心,促进数据库研发自助化,提升研发效率,同时保证员工数据库访问安全及数据库高性能。

阿里数据库DevOps由3款产品组成,分别是阿里企业级数据管理服务iDB、数据库智能优化服务CloudDBA、阿里企业级数据库管控服务DBPaaS,本文会重点介绍阿里企业级数据管理服务iDB。


>>我们的挑战

近10年,阿里研发人数从几百人扩展到几万人,与此同时,不断对数据库服务提出挑战。回顾阿里数据库服务发展历程,包含以下几个阶段:

  • 2010年前,数据库账号直接开放给开发,自由查询数据

  • 2010年,为了解决数据查询安全问题,全面回收数据库账号,只能DBA查询数据

  • 2011年,为了解决数据查询低效问题,iDB1.0发布,开发在WEB平台上自助查询数据,但此时数据库变更尚需邮件提交给DBA

  • 2012年,为了解决数据库变更沟通问题,iDB2.0发布,数据库变更可以在线提交汇总,同时结构设计规范也可以自动应用到开发数据库设计中,但此时数据库变更还只能DBA执行

  • 2013年,为了解决数据库变更低效问题,iDB3.0发布,开发可以自助执行数据库变更

  • 2014年,为了满足阿里云用户对数据库管理安全、效率的需求,数据管理DMS发布,定位于个人数据管理云服务

  • 2015年,为了解决阿里业务暴涨DBA支撑瓶颈问题,iDB4.0发布,第一次做到数据库研发全自助

  • 2016年,为了解决业务数据库性能问题,数据库智能优化服务CloudDBA发布,定位于用户身边的数据库专家

  • 2017年,为了将多年实践/经验/沉淀分享给更多人,数据管理DMS企业版(iDB对应云上产品)发布,提供完整的数据库研发全自助流程、企业级数据库安全管控等服务

今天,我们(准确说是我们的产品)要解决阿里20,000开发人员高效的结构设计、SQL审核和变更发布,要解决每周上万条SQL发布无慢SQL漏网,要解决每周百万次数据查询分析的权限控制和操作审计,因此在效率、性能和安全上,阿里数据库DevOps正面临巨大挑战。


>>解决方案

当你感觉痛苦的时候,正是你成长的时候,阿里数据库DevOps应运而生。

  • 效率

数据库效率最终衡量体现在发布效率,而在发布前面还有结构设计、SQL设计、测试数据构建、库表同步、结构审核、SQL审核等工作,数据库发布自身也会细分成结构变更、数据订正和分库分表发布等。

阿里数据库DevOps在效率上的解决方案:全自助的数据库研发流程,覆盖上述数据库发布涉及的全部工作,如30+结构设计规范自动应用到开发结构设计中、多人设计冲突检测和DDL溯源、多环境的库表同步、百万级测试数据自助生成等等,最终让DBA无需参与具体项目的设计和评审,将主要精力投入到对业务架构理解,更加全局的看待业务和数据库的关系,促进企业效率最优。

效率解决方案涉及功能太多,这里仅以分库分表发布为例,希望大家能对全自助的数据库研发流程有所了解:

如果选择mysql作为数据存储,随着业务增长,大多数企业都会遇到单表容量瓶颈,其中大表DDL性能问题最为严重。业界普遍解法是将单表拆成分表,分库分表使得容量不再是瓶颈,但给维护管理带来很大挑战。

面对1024、4096个分表,如何加字段就是首要解决问题,经常遇到执行过快导致性能卡顿、一次性全量执行风险不可控、异常任务中断等一系列问题,最终让分库分表方案实际效果大打折扣。

阿里数据库DevOps在物理分库分表基础上封装出逻辑库、逻辑表,所有DDL都在逻辑库、逻辑表上操作,而在物理分库分表上的具体执行动作由产品来保证,目前可以做到数据库锁检测、实例/库级并行、自动灰度、执行限速、任务暂停重试等细粒度控制。

  • 性能

数据库性能,抛开数据库类型/版本选择、内核优化、硬件选型等方面,我们看到对业务感知最明显、最关注就是SQL(准确说是慢SQL),如何从根源上解决慢SQL,而不是每次出问题时救火,是阿里数据库DevOps一直努力的方向。

阿里数据库DevOps最佳实践

在一条SQL被设计出来,到其成为慢SQL前,它需要通过审核,这时开发提交SQL审核后,会自动抽取SVN/GIT代码中SQL并识别变化部分,这时阿里数据库智能优化服务CloudDBA会对有变化的SQL进行诊断,先基于规则对select *、动态SQL等给出审核建议,然后对通过规则校验的SQL进行优化,给出索引建议,整个SQL审核流程由产品完成,开发最终会看到SQL审核报告,包含SQL改写建议、索引建议。

在大多数业务场景中,一次性优化相对容易些,如何做到持续优化?这就需要我们的优化流程能做到闭环,自动打通从采集->分析->建议->采纳->跟踪->评估整条链路,而不是靠DBA人肉串联。

阿里数据库DevOps最佳实践

数据库性能话题很大,比如上面提到的SQL上线前审核和优化闭环,还有运行中SQL优化、空间优化、锁优化、全量SQL、性能成本度量等等方面,我这里不做展开,大家可以在阿里云数据管理DMS数据库优化服务(入口:DMS登录数据库-性能)找到你需要的答案。

  • 安全

在数据库领域,可以说数据安全是一切的基础。而大多数企业数据库都会存在以下几种数据安全风险:

  • 应用访问

  • 主机访问

  • 数据仓库

  • 备份

  • 员工访问

在企业初期,往往会关注在前四种的安全防护上,而忽略人的因素,但随着员工增多、角色增多,员工访问数据安全风险日益突显,而员工访问数据安全正是数据库DevOps要解决的重要课题。

阿里数据库DevOps从以下5大方面解决员工访问数据安全:

  • 查询管控

  • 变更管控

  • 权限管控

  • 数据分级

  • 安全审计

阿里数据库DevOps最佳实践

每个大方面又细化出很多功能点,如权限管控就包含库/表/列细粒度控制、物理库/物理表/逻辑库/逻辑表权限、查询/导出/变更权限分类、到期提醒回收等功能点。

 

>>云上:数据管理DMS

上面介绍的阿里数据库DevOps,对应到云上产品:数据管理DMS

阿里数据库DevOps最佳实践

数据管理DMS产品架构如下:

阿里数据库DevOps最佳实践

从产品架构图上可知, 数据管理DMS提供了企业版、高级版、免费版和移动版。

其中,数据管理DMS企业版为每个企业构建独有的数据库管理系统,包含每个企业独有的员工信息、流程、规则和元数据,如果企业研发人数大于20人,强烈推荐使用。

阿里数据库DevOps最佳实践

如果你是个人、创业团队或者小企业用户,我们推荐数据管理DMS高级版让你访问云端数据更安全。

阿里数据库DevOps最佳实践

另外,数据管理DMS最近还添加了新成员:移动版,一期支持云端数据管理,后续还会支持数据库诊断优化、数据库研发流程以及自建IDC数据库。

 

>>期待你的加入

  • 数据库产品专家/高级专家

  • 企业级数据库产品

  • 分布式数据库产品

  • BI数据分析产品

  • 研发专家/高级专家

  • Java后端开发

  • 前端开发

  • 移动端开发

Mail:peien.htg@taobao.com

钉钉:佩恩


作者简介:衡铁刚(佩恩),阿里数据库产品专家,负责阿里云数据管理DMS产品设计,先后从事过运维DBA、淘宝DBA等工作。


========================================

附:数据库事业部云栖大会回放视频

(本文内容可在企业级数据库最佳实践上半场中观看)

企业级数据库最佳实践上半场:https://tbm.alicdn.com/bi9MP9uK6irQKxHLOy7/SfryozlEdJCwTr2s07Y%40%40hd.mp4

企业级数据库最佳实践下半场:https://tbm.alicdn.com/bi9MP9uK6irQKxHLOy7/L2SShghR5OQfHy5Flrj%40%40hd.mp4

阿里数据库内核专场:http://yunqivod.xiaozhizuo.tv/mp4/0x0/4ebd498e8357693e9e2bd5fe45e510c8.mp4 



阿里数据库DevOps最佳实践




欢迎加入

阿里巴巴数据库技术









以上是关于阿里数据库DevOps最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

基于海量日志和时序数据的质量建设最佳实践

开放下载!《阿里巴巴 DevOps 实践手册》

开放下载!《阿里巴巴 DevOps 实践手册》

开放下载!《阿里巴巴 DevOps 实践手册》

DevOps最佳实践8大高招

markdown Devops最佳实践