前沿分享|阿里云数据库高级技术专家宋利兵:阿里云企业级自治数据库rds详解

阿里云开发者 阿里云开发者     2023-02-05     127

关键词:

简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库高级技术专家 宋利兵关于“阿里云企业级自治数据库RDS详解”的分享。


本文将从2方面为大家介绍企业级的自治的数据库系统。


  • RDS MySQL 产品
  • RDS MySQL 自研内核



一、RDS MySQL 产品


1)阿里云RDS - 云原生自治数据库



阿里云RDS是国内起步最早的RDS服务,基于阿里巴巴的MySQL分支AliSQL。在阿里巴巴完成IOE目标后,阿里巴巴整个电商业务由RDS支撑。RDS的可靠性和稳定性是经过了双十一这样极其苛刻的现实场景的验证的。经过十几年的发展,除了在稳定性、性能等方面有长足的发展之外,阿里云RDS也在坚定的向云原生和智能化的方向迈进,现在RDS整体架构基于云原生K8S进行部署和管理,底层依托于阿里云的高性能ECS和高吞吐的ESSD分布式云存储,真正做到了计算和存储的分离。基于人工智能的技术和专家的经验,实现DAS的 RDS自治能力。


2)RDS MySQL 产品 - 服务高可用



从产品层面看,高可用是MySQL生态里经典的架构,通过binlog进行复制,RDS提供跨可用区的高可用,可以做到4个9的可用性和秒级的切换。



除了经典的两节点架构,RDS还基于多数派协议提供了三节点高可架构。在三节点高可用架构中,包括主和备两个数据节点和一个日志节点,让用户的数据0丢失做到RPO等于0。这个复制不是用MySQL原生binlog复制,而是采用自己实现的多数派协议(Consensuse)进行binlog的分发。



除了热备、RDS也提供了冷备的能力。RDS可以周期性做全量数据备份、以及实时binlog的备份,并把数据上传到OSS上。如果有数据恢复需求时,可以快速通过OSS进行数据恢复。


3)RDS MySQL 产品 – 资源池化和云原生



在计算与存储分离的架构下,RDS实例可以提供高达32TiB的存储量。全量数据备份采用的是快照的方式进行的,无论用户数据有多大,都可以做到秒级备份,真正做到用户无感。基于秒级的数据快照能力,RDS做到了分钟级的实例创建。创建只读实例大概在两三分钟就可以完成。


4)RDS MySQL 产品 – 自动读写分离

只读节点是MySQL里经典的架构,通过创建只读实例扩展读的能力,阿里云的RDS上提供中间介让用户应用不做修改自动实现读写分离。提供多地址的读写分离可以把不同的业务用不同的地址访问,好处是业务之间不会互相影响和地址的隔离性能非常好。


5)RDS MySQL 产品 – 企业级数据安全



现在安全越来越被重视,云上有很多用户有合规、审计等需求,RDS为用户提供了全链路加密的能力、以及审计日志等安全能力,除此之外,用户还能享受到阿里云网络层面和操作系统层面的安全设施。从整体看,可以做事前、事中、事后非常严格的安全合规要求。


6)RDS MySQL 产品 - 整体架构



RDS不只有MySQL的内核还有很多模块一起为用户服务,用户只需通过控制台进行控制,或者通过OpenAPI来创建或者管理实例就可以了,剩下的工作由RDS自动完成。

二、RDS MySQL 自研内核


1)实用性:在线固化SQL执行计划



在线上使用RDS的时候会用户会遇到SQL特别慢的情况,因为一些原因SQL可能没有选择到最优执行计划,MySQL提供hint的功能,用户可以在SQL语句里加hint来提示MySQL是否要使用索引,或者是否开启某一项优化器的策略。通过Hint来提高SQL的执行效率。 为什么这个功能用户用得很少?因为当发现SQL慢的时候,应用已经在线运行了。这时修改应用里的SQL、可能需要一个漫长的过程、甚至不可能修改。SQL Outline让用户可以在RDS服务器侧为SQL语句添加Hint。只需要调用一个存储过程。比如加一个Index Hint,只需在add_index_outline中指定这个SQL语句,以及对应的索引策略即可。在做规则匹配时,Where条件中的值会自动忽略掉,同样的语句不同的值,都会匹配到这条规则。用户的应用不需要做任何变化,加上规则后会立即生效,这是非常实用的功能 。


2)实用性:可诊断、可度量



我们加了大量的监控和诊断信息,可分为实例级别、对象级别、语句级别三大类。



实例级别的指标非常多,把MySQL和系统里的指标以秒为单位存储到表里去,让用户非常方便地通过MySQL语句查询。包括实例的CPU使用情况、内存使用情况、磁盘IO情况、Server层连接数量、网络访问情况,已经InnoDB中的大量状态信息。RDS把这些状态信息以秒为单位记录下来,出现问题时很容易通过状态的变化准确地定位出问题。



对象级别添加加了对表使用和Index使用的统计,为我们做数据结构的调整提供了依据。



语句级别MySQL有一个语句级别的统计信息表,RDS在这个表里添加了一些非常实用的信息。比如:语句使用CPU的时间,MDL、InnoDB锁等待的时间,Mutex的spin、wait的统计信息,Read/Write IO的统计信息。这些统计项帮助用户准快速精准的定位SQL的问题。


3)稳定性:Buffer Pool优化



云原生下需要能够做到在线规格的调整,Buffer Pool就是很重要的资源。当规格、内存变化的时候Buffer Pool也需要跟着变化,MySQL提供在线调整Buffer Pool大小的能力。在测试中,我们发现MySQL Buffer Pool Resize会对业务流量造成一定的影响。业务流量抖动的频率和幅度都很大(绿色线条)。阿里云RDS在Buffer Pool Resize上做了优化,优化后、Buffer Pool Resize对业务流量的影响就好了很多(蓝色线条).


4)稳定性:并发控制



线上经常碰到某些SQL语句会使用大量的CPU资源或者内存资源。如果不做限制,可能会耗光CPU、内存资源,导致整个实例不稳定。并发控制这个功能可以用来限制特定SQL的并发数量。并发控制的策略可以分为三个维度:操作类型、操作对象、关键字。操作类型指的是SELECT、INSERT、UPDATE、DELETE四种类型。操作对象指的是库、表。并发控制和SQL Outline差不多,都是在RDS服务侧配置的。


5)安全性:透明数据加密



透明加密支持AES加密算法和国秘算法SM4。因为有些单位有合规要求,必须使用国密算法。


6)安全性:回收站



回收站是表级的数据快速找回的工具。当用户删除表或者Truncate表的时候,表不是直接从磁盘上删除,而是放到回收站里。用户可以设置多长时间后自动在后台把表真正删除,当发生了误操作,错误的删除或者清空了表时,能快速从回收站中找回表。


7)安全性:Flashback Query



Flashback Query提供了快速找回数据行的能力。行级数据找回的功能利用了Undo里面的历史数据。RDS可以以秒为单位,为历史数据建立快照。RDS提供了基于时间的快照查询机制,通过Undo的记录回溯到指定时间的历史数据。当发生了误操作、或者有回档需求时,用户可以通过SELECT查询到指定时间点的历史数据。


8)高性能 – Binlog In Redo



MySQL在事务提交时要持久化Redo和Binlog文件,为了保证Crash Safe两个文件必须顺序进行持久化对性能影响很大。RDS会把Binlog同时写到Redo里面去,因此事务提交时,只要持久化Redo文件。Binlog文件只需要在后台异步持久化就可以了。这个功能在保证数据一致性的同时,对写性能有显著的提升。



上图是这个功能的性能测试结果,有30%-40%性能峰值的提升,在小并发的情况下甚至能超过百分之百的性能提升。


9)高性能 – DDL优化



当做非Instant DDL操作的时候,往往会处理DDL表的大量的Page。MySQL通过扫描Buffer Pool的LRU链表来完成这个操作。LRU包含了Buffer Pool中所有的数据页,特别是对大规格的实例,扫描一遍LRU的时间很长,还会影响其他SQL语句的执行。RDS做了优化后,DDL可以直接命中它的Page,不在需要扫描LRU。既能提高性能又能保持实例的稳定性。上图性能测试,是在有业务流量的情况下做一次Export Table。Export Table的执行时间从原来的80秒降低到了0.34秒。



上图是对Optimize Table的测试,在有业务流量的同时做Optimize Table,这个表有600MB数据,DDL的优化将OPTIMIZE TABLE的性能提升了十几倍,由原来的220秒降低到了17秒时间。


10)高性能 – Faster Query Cache



我们基于MySQL的Query Cache做了重构,对并发控制、内存管理、缓存机制都做了大量的修改,在命中率较高的情况下性能得到提升,在命中率较低的情况下对性能没什么影响,缺省的就能打开这个功能。


11)RDS MySQL自研内核: 企业级三节点



基于自研的多数派协议来传输Binlog。Leader负责把Binlog传输到日志节点或者Follower节点后,到达多数派后在Leader节点上做事务提交,三节点自己选主形成自治的系统,在整个的过程中没有数据丢失做到RTO为0。

原文链接:https://developer.aliyun.com/article/804399?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

前沿分享|阿里云资深技术专家魏闯先:analyticdbpostgresql年度新版本发布

简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云资深技术专家魏闯先关于“AnalyticDBPostgreSQL年度新版本发布”的分享。本篇内容将通过三个部分来介绍AnalyticDB PG年度新版本发布。... 查看详情

前沿分享|阿里云资深技术专家魏闯先:analyticdbpostgresql年度新版本发布

...。采用向量化计算以及列存储和智能索引,领先传统数据库引擎性能3x倍。新一代SQL优化器,实现复杂分析语句免调优。第二,稳定可靠简化运维。飞天平台基于阿里多年大规模集群系统构筑经验打造,智能硬件... 查看详情

前沿分享|阿里云数据库事业部资深技术专家生态工具产品部负责人陈长城:一站式在线数据管理平台dms技术解读

简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库事业部资深技术专家、生态工具产品部负责人陈长城关于“一站式在线数据管理平台DMS技术解读”的分享。本篇内容将从3个部分为读者... 查看详情

前沿分享|阿里云高级技术专家王若(百润):数据库游戏行业最佳实践

简介:在游戏的开发和运营当中,数据库的使用场景非常多。面对游戏访问压力、游戏合服场景、游戏排行榜等场景,阿里云为用户提供了最佳解决方案。本文从三个方面来为大家介绍数据库游戏行业最佳实践:游戏... 查看详情

云原生--数据和未来

...演讲议题:待定讲师简介:宋利兵,阿里云|高级技术专家2018年加入阿里云数据库团队从事RDSForMySQL内核的开发工作。议题介绍:待定演讲议题:待定讲师简介࿱ 查看详情

前沿分享|阿里云数据库资深技术专家姚奕玮:analyticdbmysql离在线一体化技术揭秘

...生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库资深技术专家姚奕玮关于“AnalyticDBMySQL离在线一体化技术揭秘”的分享。本篇内容将通过三个部分来介绍AnalyticDBMySQL离在线一体化技术。一、传统大数据架构面临的... 查看详情

前沿分享|阿里云数据库解决方案资深专家李圣陶:云原生数据库解决方案加速企业国产化升级

简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库解决方案资深专家李圣陶关于“云原生数据库解决方案加速企业国产化升级”的分享。本文从几大视角来解读云原生数据库如何加速企业... 查看详情

前沿分享|阿里云数据库解决方案架构师王宏宇:云原生数据仓库analyticdb在零售行业的深度应用和业务价值

...生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库解决方案架构师王宏宇关于“云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值”的分享。更多前沿分享,点击云栖大会视频回放链接即可获取。本篇内... 查看详情

阿里云容器技术专家莫源:乘风踏雪归来,仍是此间少年

...零开始参与多款云产品的研发。在1024开发者节之际,来分享下自己的成长故事。“平凡但不安分”的男孩我是一个来自北方的孩子,从小到大都是淹没在人群中无法分辨的那种。我叫刘中巍,花名莫源,是阿里云容器服务团队... 查看详情

阿里云企邮设置假期自动回复

1、 在IE或其他浏览器的地址栏中输入邮箱登陆地址:http://mail.riverstonefarm.cn,并登陆 2、展开右上角功能菜单,选择“邮箱设置” 3、 启用功能,并设置启用时间段和邮件正文内容,设置完成后,点击“保存”退出... 查看详情

全网首发|阿里资深技术专家数仓调优经验分享(上)(代码片段)

简介: 本篇文章总结了AnalyticDB表的设计的最佳经验、数据写入的最佳经验、高效查询的最佳实践,以及一些常见的问题。随着云原生数据仓库AnalyticDBforMySQL(下文统一简称:AnalyticDB)在阿里集团各个业务线... 查看详情

阿里云云效技术专家分享:云原生开发调测及可靠发布解决方案

简介: 高效开发、稳健发布。在云原生环境中,基于Kubernetes的工具链一方面简化了开发者的许多日常琐碎,另一方面也带来了许多新的概念和工作方式的改变。本篇文章将聚焦于云原生基础设施,谈谈如何在面... 查看详情

阿里云高级技术专家空见:cdn的数据化之路

...的CDN,在10月13日云栖大会视频多媒体分论坛上,阿里云高级技术专家空见为大家讲解了CDN服务过程中,数据处理、安全监测、日志分析、智能分析是如何为CDN赋能的。下面是演讲主要内容提炼:一、业务背景目前阿里云CDN的节... 查看详情

分享阿里云开源技术学习资源

阿里云数据库https://developer.aliyun.com/learning/roadmap/database阿里云Javahttps://developer.aliyun.com/learning/roadmap/java阿里云前端https://developer.aliyun.com/learning/roadmap/frontend阿里云Pythonhttps://develop 查看详情

驱动阿里云的高性能网络引擎-飞天洛神

...云专场峰会上,阿里云资深网络技术专家宗志刚先生首先分享了“驱动阿里云的高性能网络引擎-飞天洛神”主题演讲,深度探寻了洛神系统关键技术能力及未来应用方向。大家都知道阿里云部件的系统都是以神仙命名的,比如... 查看详情

阿里云高级技术专家周晶:基于融合与协同的边缘云原生体系实践

...原生体系。在近期的CCFTF48期研讨会上,阿里云边缘云高级技术专家周晶为现场技术专家们分享了阿里云边缘云原生体系构建过程中的思考与沉淀。周晶阿里云边缘计算高级技术专家高性能OpenResty开发框架Vanilla作者,WeiboM... 查看详情

深圳云栖大会阿里云弹性计算essd云盘产品全面解析

...闻做了主题为《百万级别IOPS云盘产品全面解析》的技术分享,主要就阿里云新一代ESSD云盘的产品特点、适用业务场景和对业务的实际性能提升进行了深度解读。2018年3月29日,在深圳云栖大会弹性计算技术专场上,来自阿里云弹... 查看详情

技术干货|阿里云基于hudi构建lakehouse实践探索

简介:阿里云高级技术专家王烨(萌豆)在ApacheHudi与ApachePulsar联合Meetup杭州站上的演讲整理稿件,本议题介绍了阿里云如何使用Hudi和OSS对象存储构建Lakehouse,为大家分享了什么是Lakehouse,阿里云数据库OLAP团队如何... 查看详情