查看原文
其他

数据库管理与运维难不难?腾讯云数据库给你答案

腾讯云数据库 腾讯云数据库 2022-10-13
为帮助开发者更好地了解和学习前沿数据库技术,腾讯云数据库特推出"DB · TALK"系列技术分享会,聚焦干货赋能创新,邀请数十位鹅厂资深数据库专家每月和您一起深入探讨云数据库的内核技术、性能、架构、管理运维和最佳实践等。

3月30日第一期分享会“数据库管理与运维”专场已结束,本期带来各讲师分享精华及直播回顾视频。想要讲师ppt的小伙伴,可在腾讯云数据库公众号后台发送"3.30讲师课件",即可获得讲师课件哦!

迁移利器DBbridge

技术实现原理


——程学飞,腾讯云数据库高级产品经理

DBbridge软件的诞生,是腾讯云数据库助力企业上云的最佳实践。它帮助用户在业务不停服的前提下轻松完成从线下的Oracle、MySQL、MariaDB、PostgreSQL、DB2 等多种关系型数据库数据库迁移到腾讯云TDSQL、TBase数据库上面。利用实时同步通道轻松构建高可用的数据库容灾架构,也可以通过实时数据传输为下游数据分析、应用测试、数据中台等业务提供强有力支撑。

 

在迁移过程中,DBbridge支持四方面功能:


迁移评估:DBbridge带有对象评估、应用评估功能,该功能可出具对应的评估分析报告,告知用户迁移过程中哪些对象和应用是需要改造的,需要做什么工作,耗时情况等。这样有利于客户提前部署迁移准备工作,精准投放人力物力提前解决迁移问题

 

数据迁移:DBbridge支持多种迁移场景。第一种,线下数据库迁移至云数据库;第二种,支持同构迁移与异构迁移;第三种,支持数据拆分式迁移

 

数据同步:DBbridge通过日志解析技术实现数据增量同步。这种数据场景多应用于容灾,或者做一些数据汇聚、查询分离、报表分析之类的。

 

数据比对:DBbridge自带数据比对功能,通过多次对比源端、目标段数据库数据,最终筛选差异数据记录到差异结果集,支持差异数据人工处理。

 

DBbridge六大产品特性分别是:数据同步、高传输性能、故障自动恢复、可视化操作、设置简单快速、丰富的告警监控。

 

数据同步:DBbridge基于日志解析,能够实现零停机同步。在客户业务较为空闲时,进行数据同步即可。增量数据通过解析日志,保证源端、目标端数据追平的时候,数据达到一致性,进而连接两端业务。

 

高传输性能:DBbridge通过高并发来实现高传输性能,具体而言:从源端导出是并发的,日志解析也是通过相关的并发机制,装载同样也是并发,保证它的数据装载可以达到一个很高的一个速度,同步也达到很高的速度。

 

故障自动恢复:这块我们引入了高可用的机制,相当于某个任务节点宕掉了以后,可以在其他的work节点自动把这个任务拉起来,而拉起来分析的日志点是接着之前宕掉的日志点直接去分析的。如果整个所在的部署整个节点宕掉了,DBbridge会把节点所有任务在其它节点先拉起来,保证任何一个节点的高可用性和持续性

 

可视化操作DBbridge所有的功能都是在可视化页面上的,过程是是自动来完成。页面上的手工操作基本是向导式安装,直接点击下一步就好,所以操作起来相对来比较简单。

 

设置简单快速:页面上会有相关的一些任务,明确告诉客户是要配置结构迁移,还是增量迁移,还是做全量迁移,以及作业评估。而这些功能都是可以独立开的,客户可以只做全量迁移,也可以只做增量迁移等,可以只做数据评估,也可以只做数据比对。当然也可以组合,操作上是灵活简单的。

 

丰富的告警监控目前页面上客户可以看到DBbridge正在同步哪些表,这些表目前的一些增量同步状态是什么样的,实时延迟是多久,是一秒还是两秒,都可以在页面上看到。

 

想了解更多DBbridge技术实现原理、技术架构及演进、客户迁移实例内容,点击观看下方视频,即可获得完整版程学飞讲师分享内容。


腾讯云数据库自治

从“监控-诊断-解决”

AI 技术实践


——张远,腾讯云数据库专家工程师
 
讲师本次分享将从资源管理、查询优化、特定业务场景查询优化三个方面介绍腾讯云数据库自治内容。

在数据库服务当中,资源的监控和管理非常重要。只有合理地使用数据库资源,才能提供稳定且高效的数据库服务。数据库服务资源可以分为IO资源、内存资源和CPU资源等。这些资源如果使用不合理,会影响数据库服务。在IO资源方面,例如在执行大事务全表扫描时,IO资源紧张,进而产生IO延迟,从而影响用户的查询体验;在内存资源方面,当有大量用户连接和很多表时,会占用大量内存容易产生OOM。在CPU资源方面,当我们在执行非常多的排序操作,CPU资源负载高,会产生业务抖动,甚至导致实例夯。因此,合理使用资源,才能提供稳定高效的数据库服务
 
那腾讯云MySQL是如何做资源管理的呢?讲师从内存分配和释放、IO的使用及CPU资源隔离等方面对数据库资源监控进行介绍。



查询优化是数据库里非常重要的一环,而统计信息则是查询优化的基础。只有通过准确的统计信息,才能在可选的执行计划中通过统计信息进行代价计算选出最优的执行计划。腾讯云MySQL修复了MySQL官方存在的Sever层统计信息不及时更新的问题、统计信息为0的问题等,进而保证了统计信息准确性,避免因统计异常导致查询优化选择错误的问题。并且腾讯云MySQL在MySQL官方原有支持等宽等高直方图的基础上,支持compressed直方图。当存在数据倾斜情况时,通过compressed直方图,可以选择出正确的查询计划。
 
除了上述问题外,线上还存在很多查询问题,需要人为干预才能选择正确的计划。例如索引选择错误,通常可以通过hint的方式强制用户去选择正确的索引。但是这种方式,需要用户自己去修改SQL语句,并且重新发布应用才能生效,这种对用户体验并不友好。针对这个问题,腾讯云MySQL推出了Statement Outline功能。Statement Outline功能将用户想要的查询计划固化到outline表中,用户sql请求过来时去ouline中查找出对应的执行计划去执行。优化后用户的语句会自动选择正确的执行计划,不需要修改业务层SQL语句,用户体验好
 
通过Statement Outline功能可以帮助用户选择合适的索引,但是很多时候是没有合适的索引选择的。这时候就需要我们去新建索引,然而新建索引是一个比较耗时的操作。腾讯云MySQL对新建索引进行了大量的优化,在这一块采用三阶段(扫描原表数据、排序数据、构建新索引Btree)全并行优化方案性能加速比最高达到15,是官方MySQL的5倍。同时腾讯云MySQL的功能更为齐全,不仅支持建索引的并行,还支持optimize table等需要rebuild table的DDL并行。
 
接下来,讲师分享了优化器自制方面的思考。云环境大规模化运营情况下,需要耗费大量专家人力来优化SQL,将专家经验转化自治能力意义重大。腾讯云数据库计划推出自治系统,通过自治系统监控业务的执行过程,具体如下:

  • 采集 SQL 语句执行过程中各模块精细数据,建立业务负载模型。
  • 对业务 SQL 进行结构分析,利用代价模型评估优化决策。
  • 对 SQL 优化环境进行抽象和重用,支持统计数据隔离和虚拟化元数据。优化器运行基于统计数据,不再依赖原始业务数据。
  • 在隔离环境中对决策进行实施和检验。
  • 用户自主采用决策或授权全自动实施。
 
最后,讲师分享了死锁、秒杀、迁移切换三个特定业务场景的优化。

死锁场景的优化。第一,腾讯云MySQL提供死锁检测开关,用户可临时关闭死锁检测功能。第二,腾讯云MySQL进一步丰富了死锁信息。官方MySQL中的死锁信息并不完整,它只能显示最近一次的死锁信息,而且只能展示死锁环路上最近的两个事物信息,而不能展示所有的事务信息。腾讯云MySQL可以显示死锁环路上所有的事务信息,同时也保留了所有的历史死锁信息。第三,腾讯云MySQL推出事务锁优化,有限减少锁个数,只有在真正冲突才持有锁,降低发生死锁的概率,同时也减少了锁资源占用。
 
秒杀场景的优化。在秒杀场景下会有大量的数据更新集中到部分的热点数据行里,而更新需要持有锁,这样就会造成大量的锁等待现象,一方面会产生大量线程资源的切换,占用资源。另一方面由于锁的个数比较多,对死锁检测也会产生一些挑战。因此腾讯云MySQL推出了热点更新的优化。我们通过事务锁调度情况自动识别多个热点,且不需要修改应用层SQL。并且腾讯云MySQL是在InnoDB层进行依次排队处理,这样可以将很多其他的一些操作在InnoDB层以外并行处理完成。另外,腾讯云MySQL对多语句事务进行优先处理调度,能够及时的释放出锁资源。这个优化完成以后,腾讯云MySQL的秒杀场景性能提升了50倍,并且支持动态一键开启,可以实现对业务无感知
 
迁移切换场景优化。在HA主备切换或常态化的实例迁移的场景中,存在预热这个突出的问题。新主库Buffer Pool需要长时间预热,而预热期间影响业务运行,QPS长达数十分钟才能恢复正常,对用户影响很大。因此,腾讯云MySQL推出了主备缓存同步优化方案,方案如下:

  • 主库异步dump buffer pool信息,获取Btree热点数据范围,生成逻辑快照。
  • 备库加载快照信息,通过直接扫描Btree(非SQL方式)异步预热备库buffer pool。
  • 主备buffer pool热数据逻辑保持一致。
 
优化完成后,HA切换可以做到业务平滑迁移
 
想详细了解资源管理监控原理、查询优化原理及特定业务场景查询优化的具体内容。点击观看下方视频,即可获得完整版张远讲师分享内容。


数据库智能调参能力解析及最佳实践


——程昌明,腾讯云数据库高级产品经理
 
深度学习这个词已经进入公众的视线,时至今日,相关技术也比较成熟,腾讯云数据库团队也在思考如何借助深度学习的方式来提升数据库的运行效率。第一个想到的就是数据库的参数调优。这是一个不亚于围棋的难题。由于业务系统的千差万别,参数的设定也是一个让数据库管理者特别头疼的难题。往往需要借助一些经验,去构筑一套相对通用的参数模板。
 
参数调优其实是专家级数据库管理者专属的一个能力。我们以 MySQL 8.0版本为例,提供了接近1000个可配置的参数,常用参数近200个。同时,不同的业务也具备不同的负载特征。如果我们将每一个参数的可设置范围相乘,其可能性远超于3的361次方,是超过可观测宇宙的原子总数的。如果每验证一种参数设置的可行性需要花费五分钟的话,所消耗的时间也远远超过了从宇宙大爆炸到现在的时间。
 
在面对如此复杂的情况,往往只能借助经验,然后使用归纳法在有限的参数中,通过有限的变化来提升数据库运行的性能。由此也产生了一些针对不同规格、不同场景下的参数模板。其实大家在日常使用数据库的过程当中,也会不断的去网络上搜索各种各样场景中的最佳参数的设置方式,而搜索出来的结果都聚焦于有限几个参数。其实无法适配不同业务的需求,使得数据库无法运行在最佳状态下。
 
腾讯云数据库团队通过不断强化学习算法来解决数据库参数设置的问题。在2019至2021年间,腾讯云数据库团队连续发表两篇顶级论文。基于论文研究成果研发出了一款落地真实场景的可用系统,CDBTune。CDB(cloud database),即云数据库,CDBTune就是对云数据库进行调优的一整套解决方案
 
在CDBTune方案中,团队选择端到端模型。因为不论是基于搜索的方法还是基于学习的方法来进行参数推荐,都存在弊端。基于搜索的方式耗时会非常长,基于学习的算法需要海量的高质量样本,很难适应工作复杂,随着时间的变化的业务。


腾讯云数据库团队的目标是使用有限的样本,构建端到端的模型,输入为当数据库当前状态,输出为推荐的配置。并且这个过程当中的时间成本尽可能的短。团队构建了一个使用深度强化学习的云数据库调优系统,通过设置性能目标奖励,比如TPS上升,QPS上升或者延迟降低,认为是获得奖励,使得AI像玩游戏一样来调整参数,最终数据库获得更高的一个性能。

整个过程可以看出,数据库上执行推荐配置数据库的当前状态将发生变化。内部指标可用于衡量与强化学习状态相对应的数据库的运行时的行为。而外部指标可评估数据库的性能或奖励,不断重复整个过程,直到模型收敛。
 
基于腾讯云数据库深度强化学习的云数据库调优系统,调优效果是非常明显的,如下图所示。从结果中可以看到,CDBTune在所有的情况下均体现了更好的性能


通过强化学习模型,将调参的过程当作是获取最佳性能得分的游戏,进行迭代学习,最终实现不同工作负载下的数据库性能提升。实测得到的结果显示,在一般情况下性能提升在15%-50%之间。同时也得益于腾讯云充沛且完善的硬件基础设施,以及遗传算法、专家经验、定型价格,使得这一能力得以产品化,不仅仅局限于理论。
 
想了解更多智能调参的最佳实践内容,点击观看下方视频,即可获得。


数据库备份服务DBS

技术实现原理


——秦君华,腾讯云数据库专家工程师 

DBS是为数据库提供连续的数据保护,低成本的存储备份服务。它可以为多种部署形态的数据库实例提供数据保护,包括企业自建IDC或第三方云厂商、混合云、私有云上的数据库实例,当然还包括腾讯云上的,像CVM上自建数据库、腾讯云数据库TDSQL上的实例等。

客户的数据库实例经过不同形式的网络连接接入到腾讯云,通过SSL安全加密通道,把数据备份到腾讯云内置存储中。通过客户设定的KMS密钥生成数据加密密钥,保证数据安全存储在腾讯云后端存储中。客户可以根据自身业务需求选择备份、恢复的时间点,通过加密信道传输恢复到腾讯云上或云下数据库中去。DBS就是这样一套完整的数据备份和数据恢复解决方案,可以实现实时增量备份、快速数据恢复。
 
产品功能如下:
全自动备份:通过预设备份计划,备份任务将自动在指定时间周期性地执行。也就是说,客户可以根据业务特征,制定备份周期,DBS可周期性的去备份原数据库上的数据。
全量+增量:支持数据库的全量及增量备份,提供秒级RPO;支持全库或部分库表的灵活选择。
加密存储:备份文件托管于云上,支持AES256加密,数据与密钥分开托管,支持跨地域托管,保障数据安全。
自动恢复:支持自动恢复至指定目标数据库,秒级时间点选择;支持全库或者部分库表选择以及库表重命名;同时也支持下载备份集。
 
产品优势如下:
零停机备份:在线备份,业务系统无需停机。
故障自动恢复:每一个任务传输节点都具备强恢复和自愈能力。
数据安全:传输信道ssl加密,数据AES256加密存储,数据与密钥分开托管。
高传输性能:灵活根据客户业务复杂程度选择备份链路规格,根据不同规格来完成备份需求高规格服务器来保证每条备份链路都能拥有良好的传输性能。
可视化操作:可视化界面几步简单配置即可开启数据备份,方便客户进行配置状态的查看。
丰富的告警监控:监控指标,客户自定义告警规则。
 
想了解更多数据备份实现架构、原理及实践应用内容,点击观看下方视频即可。


数据库统一纳管平台DBhouse技术路线

最佳实践


—— 陈昊,腾讯云数据库产品经理
 
随着业务互联网化发展,越来越多的业务应用选择使用分布式数据库解决方案,数据库的数量在急剧增长。另外随着数据库市场的发展,使用的数据库种类也越来越多,从过去主要使用成熟商业数据库产品,发展到现在使用越来越多的开源数据库、国产数据库、新型分布式数据库,以及各种针对特定场景的NoSQL数据库。
 
这其中面临着几大挑战,首先是运维架构的复杂性带来的挑战。企业当前面临的问题是随着数据库种类的变多,用户量也在不断增多,这对DBA的技术能力和架构设计能力是一个挑战。第二个运维挑战是规范。不同的数据库类型会有不同规范,企业一般也会在通用的规范下个性化定制不同规范。其实规范是越来越多的,规范类型也不一样,针对不同类型的库规范也不一样。但是数据库规范化是很有意义的,能尽可能减少数据冗余,并且降低数据插入异常的情况,但是数据变更规范如果全靠人工去维护的话,面临如此多的规范,其实是有一定难度的。第三个挑战是开发和运维团队的交互成本很高。在企业中,一般都是一个DBA对应着很多应用人员,如果应用人员发现问题时再去反馈DBA,然后DBA再去怀疑数据库,进机房去看。整体看下来,传统的开发人员和DBA的交互模式管理起来是比较复杂的。
 
总结来看,其实就分为两大痛点,一个是数据库运维问题,一个是我们流程管理的复杂度
 
那怎么理解自身的复杂度?就是说当开源数据库和传统数据库同时使用的时候就会导致数据库的数量和种类越来越多,并且运行环境也越来越复杂,架构也越来越丰富,互联网上线的变更也变得越来越频繁,流程管理的复杂度也日益增加。
 
以往的数据库管理方式主要是以需求驱动,运营团队一般是被动去为产品和开发部门提供运维操作,如建库和扩容升级等,比较简单重复,但又消耗大量工作精力。所以我们就在思考,如何去简化这样操作,提升运维效率。
 
传统管理方式的另一个特点是属于事件驱动型的,团队一般会有一定的事件防御和检查机制,但是又不是很全面。当一个数据库事件发生之后,很多时候都是通过业务部门或者开发部门反馈后运维团队再介入进来,效率就很难提高。另外,传统运营模式下对运维人员的技能要求也比较高, DBA的需求量在不断增加的同时技术门槛也变得越来越高了。
 
因此,DBhouse应运而生。
 
简言之,DBhouse是数据库统一纳管平台,帮助企业实现数据库运维自动化、自助化和流程化。功能如下:
 
监控能力。我们会去做一些数据库探活,包括数据采集,采集完的数据会定义告警。能力包括常用的数据库巡检,支持导出巡检报表;
安全能力。包括制定规范、客户审核、权限管理、完善审批流程链路、支持审计等。
运维能力。DBhouse最大的特点是帮助运维人员提高运维效率,通过JDBC和脚本的方式能够帮助用户去做很多运维操作,快速处理故障,比如说去做扩缩容。在交付场景上也能去实现自助化、标准化和自动化。
 
想详细了解DBhouse架构设计、技术实现路径及团队经验总结的具体内容,点击观看下方视频即可。


想要讲师ppt的小伙伴,可在腾讯云数据库公众号后台发送"3.30讲师课件"即可获得讲师课件哦!



-- 更多精彩 --

数据库纳管平台DBhouse的技术路线与实践


快上车!数据库智能自治时代已到来,腾讯云数据库 X AI 取得新突破


↓↓点击阅读原文,了解更多优惠

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存