在DTCC 2019大会上,阿里云智能数据库产品事业部高级产品专家萧少聪作了题为《如何构建云时代DBA的知识体系》的演讲,进行云时代之后,IT行业各工种的职责都在发生变化,云数据库使得平常DBA管理实现更多的自动化,大大提升平常管理效率,同时也对于企业总体投资产出能够更快得到成效。面对云数据库的发展趋势,DBA应如何避免“踩坑”呢?本文就为你们揭晓答案。数据库
专家简介:萧少聪(花名:铁庵),阿里云智能数据库产品事业部高级产品专家,PostgreSQL中国社区常委。后端
连接:https://yq.aliyun.com/live/1046缓存
https://yq.aliyun.com/download/3562安全
本文将主要围绕如下四个方面进行分享:服务器
对于数据库技术而言,“云”已经成为你们没法忽视的技术趋势。在Gartner 2018年的数据库魔力四象限里面,云计算数据库厂商已经占LEADERS及VISIONARIES领域的绝对比例,这也表明了业界对于云的承认。架构
那么,云和传统架构有什么不一样呢?对于传统数据库系统而言,须要搭建不少的硬件,链接不少的网线,在本身搭建的私有云里面可能会有一些虚拟化或者容器化的架构,再往上对于DBA而言其实须要的就是一个数据库,须要可以链接进去进行操做。固然了,在传统架构下,DBA可以对数据库有更多的操做和配置,可是在云上可能只会提供一部分数据库配置文件的修改权限,并不会容许修改所有配置,这是由于云为DBA提供的是SLA,也就是说云数据库提供的是服务。针对于服务而言,不太可能容许DBA去对操做系统进行改变,由于这样可能会破坏HA,所以会有一些限制,可是对于数据库操做而言,依旧是经过一个端口就链接进去的。运维
除了数据库架构设计以外,传统架构和云架构在作安装配置的时候也会有所不一样。在传统架构下,DBA须要去规划数据库全部的一切,包括操做系统、硬件以及各类安装准备以及验收、切换等一系列演练。在云架构之下,总体的配置、安装以及部署是不须要DBA敲各类命令或者安装各类业务系统的,操做系统、参数优化以及总体的HA只须要在云控制台上点击几下就能够配置完成,不管使用阿里的公共云仍是私有云都是这样的状态。这些就是在管理模式方面或者在系统建立过程当中已经可以看到的变化。分布式
有不少人存在这样一个疑问。那就是“云数据库和自建数据库有哪些区别?”。这里首先澄清一个概念,在阿里巴巴看来,真正云托管的数据库才是云数据库,而若是只是使用ECS云服务器来自行搭建的数据库并不算是真正的云数据库。工具
实际上,云数据库最终提供的是一个服务,其包括了系统的可靠性、可用性、安全、备份等一系列的东西,当创建完云数据库这些都是配置完成的,无需DBA进行二次配置。固然,若是DBA有本身配置的需求,阿里云所提供的云数据库服务也会提供API接口进行调配,或者也能够经过阿里云的管理平台进行操做,而不像传统状况下须要很是高的数据库初始建设费用。性能
成本模式的变迁
对于成本而言,传统状况下本身建设数据中心须要规划好将来3到5年到底须要多少资源,因此成本是一次性提供的。此外,对于DBA而言,通常将其分为业务DBA和运维DBA,前者为数据库业务解决问题,发挥功用,后者纯粹地负责运维工做,好比安装、部署、按期进行各类类型的巡检。将来,运维DBA会由于云架构的体现慢慢地减小,而业务DBA却不会消亡,所以DBA应该更加关注于企业在作什么业务,数据架构应该如何优化,帮助企业改变自己的运营状态。
以往成本的开支,一会儿就是一台服务器,可是现在在云上或者互联网上有不少的创业公司,所谓的“独角兽”就是从很小规模开始起步,忽然之间变成很大。当这些创业公司小的时候或许并不须要购买一台服务器,经过云架构,就能够从很小开始,逐渐弹性上去,这样的弹性能力使得IT实现资源的释放。若是今天还在使用传统的数据库服务器购买方式,而竞争对手或许就可以将节省下来的资金用于技术人员或者业务上去,由于没有了固定资产初期的开销,对于创业公司而言,其运行的资金链也会更加健康,发展的速度也会更快。
随着数据库技术的发展,企业对于DBA的需求也不断提升。从对于OLTP这样的SQL数据库和NoSQL数据的掌握,进一步演进,为了解决性能问题可能须要Key-Value缓存数据库,以后创建OLAP数据仓库,再以后实现大数据离线分析。
而对于初创公司而言,就会发如今最开始可能三两台机器就搞定了,只须要一个兼职的DBA。
进一步当开始使用Key-Value缓存数据库以后,业务愈来愈重,单台服务器没法搞定,须要实现HA。此时就比较困难了,所以须要一个比较神奇的DBA,须要DBA什么都懂。
当企业进一步发展到更大的时候,可能不只仅须要解决一套系统的问题,可能须要解决多套系统的问题。此时可能须要一个DBA团队,分工会变得更为细致,不只有专业的DBA,还应该有顶尖的架构级别DBA来解决总体问题。
更进一步,可能须要作数据仓库和大数据,那么整个DBA团队的分工就会更加明细。
在企业的实际运行过程当中,DBA须要作大量的工做,有的时候甚至是操做系统的各类细节都须要了解清楚才能将数据库调优好。
云数据库的理论基础
而当进入云数据库时代,须要看到的是另一种景象。这里有一些云计算的新名词,好比Region地域、AZ可用区、VPC以及VSwith等,这些都是云DBA须要了解和掌握的。从数据库的角度来看,云数据库的确出现了不少新名词,可是数据库基础理论依然是不变的,依然会有实例、高可用、分布式、SQL、ACID和CAP等理论。
运维简化:自动化部署
以往都会说须要部署一个主备集群,而今天若是想要部署主备集群也会在一个IDC中心进行部署。若是想要部署跨IDC的主备集群,在传统架构下每每须要购买光纤、光缆,而且须要肯定光纤、光缆的延迟状况,判断其所形成的延迟是否可以接受。而在云数据库架构之下,这些信息都不须要进行管理,所须要管理的就是在购买云数据库时进行选择,好比选择跨中心的主备就能够直接创建起来,所以这种复杂架构的构建并不须要本身来规划,能够节省DBA去作传统底层业务处理的时间。
运维简化:跨地域部署及切换
除了对于传统架构比较容易的同一个城市跨AZ以外,其实若是想要实现跨省就会变得很是复杂了。然而,在云上就会变得很是容易,若是想要实现跨Region的搭建就能够利用阿里云上的DTS工具将数据拉过去,须要进行数据复制的时候才会收费,平时不用的时候甚至能够直接将其关闭掉。
当搭建了跨Region的数据中心以后,后面就会有更多的事情。好比到底敢不敢进行主备切换,以往作主备切换的时候都须要配置一大堆的DNS,本身写不少脚本作确认,而在云架构底下,只须要经过一个按钮就能够实现。所以,你们必定要清楚,做为云DBA应该去学习哪些东西,同时须要放弃哪些东西的学习。所以当有云架构以后,DBA能够将重心放到学习如何优化SQL以及各类不一样的数据库特性以及它们之间的组合架构如何解决业务上的问题,而底层的业务架构能够交给云去作。
运维简化:按期全/增量备份
在云上面,若是须要作按期增量备份也仅仅须要点击几个按钮进行构建便可。
运维简化:恢复到时间点
不管针对于哪一个数据库,阿里云的服务均可以作到任意时间点的秒级恢复。这一功能并不仅是为了帮助用户找回数据,不少用户的DBA和开发的互动愈来愈频繁,若是开发收到某个时间段系统运行较慢的反馈,就能够直接克隆一个那个时间段的新实例出来,而且只须要按需购买便可,克隆出来实例调试完程序以后直接将其关闭掉便可,一切的成本都在DBA的掌握之中。
运维简化:按需横向扩展
DBA对于数据库的横向扩展也会作不少动做,传统的方式经过只读实例能够作相应的扩展,同时还有像阿里云的DRDS分布式数据库分片的运行方案,也可以比较容易地搭建出来,进一步地还能够走向PolarDB,经过分布式的一写多读来简化业务规则。将来,DBA须要重点关注的点在于何时使用什么样的架构。举例而言,若是须要解决某个大促时间段大量的读请求问题,应该经过只读实例来实现。而若是老旧业务彻底能够基于互联网改写,就能够选择直接经过DRDS作整个系统的分库分表操做。若是须要很是强的与关系型数据库一致性的业务,而且与此同时数据量很是大,可能须要选择PolarDB的架构,所以DBA须要对于不一样的数据库架构以及其背后原理有本身的理解。
运维简化:自动读写分离
阿里云数据库帮助用户实现了读写分离,DBA不须要再进行应用程序上的业务改写,好比对于读写分离的设置均可以实现自动化。经过对于请求的分析来判断应该分发到读实例仍是写实例。
以上这些都是云数据库可以提供的能力,你们会发现以往的管理模型已经都覆盖到了。将来运维方面的DBA工做可能减轻,所以DBA应该跳到业务方向上进行发展。
在云数据库的背景下,DBA是否还须要学习每一部分的数据库管理知识呢?由于人的时间是有限的,将来除非真的要作相似于阿里云的总体管控系统时须要深刻底层进行分析,而若是不是,那么这些数据库管理就能够交给云管控平台来实现。可是数据库优化却须要DBA知道和掌握,这里并非指修改哪些参数可以优化成什么样子,由于这些在云平台上就已经配置好了,可是DBA须要知道的是针对于某个数据库,什么样的索引对它更加有效,表与表之间的关系应该如何创建才能使得数据库性能更好。
云数据库提供了不少的集群架构,也并不必定须要所有学习。不管是单节点、双节点仍是三节点,经过阿里云均可以实现一键式部署。所以做为DBA更加须要了解不一样的数据库实例之间应该如何进行互动,从而产生对业务有效的架构方案和规划方案,这正是DBA须要深刻思考的,而不是天天都在备份服务器,部署数据库,检修各类硬件。
云服务支持边界
基于云的运行环境,云数据库服务和DBA的边界会发生改变。资源调度、基础优化、平台能力以及准确输出都是由云来提供的,而企业的DBA须要作这样几件事情:对于表结构须要花费更多的时间来规划,定义本身企业的SQL标准来规范开发模型,对于SQL以及结构进行优化来提高业务性能。此外,DBA不只应该关注于数据库,实际上也应该作企业成本的控制,经过不一样的数据模型组合来解决不一样的业务问题,也须要了解云数据库日志的不一样,并经过故障检测自查或者发起服务需求。
性能问题甄别
对于云DBA而言,若是出现了数据库性能问题应该怎么作呢?其实任何的云厂商都会有本身成熟的一整套监控以及性能分析方案,好比阿里云的方案就源自于阿里巴巴内部的经验,可以帮助DBA发现故障并提供解决方案,使用起来很是方便。
云服务支持边界
此外,阿里云也提供了一种能力,就是阿里云后端的DBA会帮助用户解决数据库相关的问题。以往状况下,若是数据库出现了问题,须要打电话给服务商来约时间解决,存在必定的延迟。而今天在阿里云上面,DBA随时能够进入。而且阿里云还提供了安全保障,具备完善的受权机制,只有用户受权阿里云的DBA访问用户数据库或者进行服务的时候,阿里云的DBA才有权限为用户提供服务,而若是没有获得受权,阿里云的DBA是不可以进入的。
高危SQL预防
阿里巴巴具备本身的一整套数据库开发规范,而用户的DBA也能够本身定义一套数据库开发规范,好比能够定义某一个字段是否能够以某种方式编写,这样就从系统设计和规范的层面避免烂SQL进入系统,进而形成系统故障。
跨云管理
今天,阿里云自己在运营云,而其实阿里云也会提供跨云的管理工具。不管用户使用的是哪里的云,只要管理的是MySQL、MongoDB、Redis数据库都会提供HDM工具来协助用户管理跨云数据库。
总结一下,云数据库带来了标准化部署、自动化运维、按需扩容以及工具化调优等优点。对于企业而言,不要再让DBA为部署和备份等琐碎的运维工做所缠绕了,他们应该将精力投入到优化架构、写好SQL以及作好数据库的总体构造上,进而为企业输出核心技术生产力。
原文连接 本文为云栖社区原创内容,未经容许不得转载。