麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
747
2023-06-27
本文讲了打开思路,数据库的全场景高可用性架构长什么样?数据库智能管家的创新与探索。
数据库是企业核心业务运行的重要组成部分,数据是企业的生命线,如果数据库出现宕机、数据丢失或不可用等问题,将会对企业的生产、营销和决策产生难以预估的影响,因此,一套高可用的数据库架构对于企业来说至关重要,可以最大化保证业务稳定性和数据可靠性。
架构概述
数据库的架构就好比房屋建造结构,如果一个房子只有一扇门和一片玻璃窗,那么一旦遭到攻击或破坏,整个房子就处于危险状态。同样,一个没有高可用架构的应用程序,在面临硬件设备故障、网络瘫痪、自然灾害以及人为错误等问题时,也很容易受到威胁。高可用架构就像房屋加固结构和消防系统,在故障发生时实现快速恢复,最大化降低损失。
但是,我国业内尚未给出一套完整的全场景高可用性架构解决方案。该架构基于跨可用区部署、异地备份保障,搭配数据库代理和弹性CPU能力,结合配套生态工具共同打造,可有效提高系统稳定性和可用性、减少业务停机时间和数据丢失率、提高故障诊断和恢复效率、提升数据处理能力和响应速度等,全方位全流程保障业务稳定运行。
全场景高可用性架构可为用户的实际业务带来诸多帮助,主要包括以下方面:
1. 提升稳定性:云数据库MySQL全场景高可用性架构的可扩展性强,在突发流量场景和热点场景下优势更为明显,通过新增实例或数据库代理节点,均衡各个实例之间的负载,实现系统的快速扩容;支持CPU自动弹性扩缩容,保障业务平稳运行的同时轻松应对流量高峰;在跨可用区部署架构中,就近访问能力也可帮助用户降低网络延时,助力前端业务丝滑体验;
2. 保障可用性:云数据库MySQL全组件实现跨可用区/跨地域部署,降低单点故障风险,即某个可用区或某个实例出现故障,可自动切换到其他可用区上的备用节点,整个系统仍可以保持稳定运行;其次,通过将数据库部署在多地数据中心,可以实现跨区域容灾,从而降低故障发生的概率。此外,通过备份、数据同步(三节点支持强同步)等机制,可以减少业务停机时间和数据丢失率,提高了业务的容灾性和数据可靠性、完整性;
3.提高数据处理能力和响应速度:通过数据库代理将负载分布到多个数据库节点上,从而提高数据处理能力和响应速度。同时,可自动将流量切换到正常运行的节点上,避免了数据库节点故障导致的数据访问异常;
4.提高故障诊断和恢复效率:通过数据库智能管家DBbrain 7*24h监控,帮助DBA快速定位问题解决问题;同时,备份、数据同步等机制也有助于故障恢复和数据恢复,缩短故障修复时间;
综上所述,
配置细节
在新版控制台界面上,云数据库MySQL从可用性、性能、安全三个方面出发,提供给用户数据库功能配置详情。用户可根据业务情况,选择可用性级别,参考对应配置。此处,我们选择全场景高可用性架构配置,用户可参考各配置项状态栏查看当前实例是否已具备该能力。
2.1 高可用架构部署
全场景高可用性架构部署包含跨可用区主实例、异地跨可用区灾备实例以及跨地域备份组成。跨可用区部署是指将数据库系统分布在多个可用区中,以提高系统的可用性和容错性。简单来说,就是将数据库备份到不同的可用区,从而保证在某个可用区发生故障时,其他可用区中的数据库可以继续服务。
跨可用区部署的优点在于提高了数据库系统的可用性和容错性,从而降低了系统的单点故障风险。另外,它还能降低访问延迟,提高了用户请求响应速度,从而保证业务更加稳定和可靠。
全场景高可用性架构建议用户选择三节点进行配置,三节点采用一主两备架构,支持强同步复制方式,能为用户提供金融级的可靠性和高可用性。以图1为例,全场景高可用性架构支持业务的跨可用区部署,具体方案如下:
主实例部署在广州三区,主要负责读写操作,提供主要的服务访问入口;
备节点分别部署在广州三区和广州六区,从主实例处同步数据,并实现数据备份和灾备故障转移;
备份中心可以同时部署在广州三区和北京地域中,以保证数据的安全可靠性;
灾备实例部署在上海地域,灾备主实例和灾备备节点分别部署在上海八区和上海五区,负责备份主实例的数据,并在灾难恢复期间提供主要数据处理和服务能力,从而保证数据库的高可用性和稳定性;
数据库的跨可用区部署可以通过数据库代理将请求转发到不同的数据库实例,并保证请求可靠到达和响应,从而提高系统的响应速度和可用性。同时,可在多个可用区内设置只读实例,实现读写分离,降低主实例读负载压力;
如果广州三区的主实例不幸宕机,全场景高可用性架构可提供三重保障机制,确保业务在主实例宕机后的快速恢复和无缝切换,减少由此带来的损失,方案如下:
1. 备节点接管:当主实例宕机后,备节点可以在数秒内自动接管为主实例,成为新的主节点,并提供读写服务。此时,业务可以无需任何手动干预,无缝切换到新的主节点上继续提供服务;
2. 灾备节点接管:如果备节点也无法正常提供服务,灾备节点被快速拉起接管为主节点,以保证业务的无缝切换和高可用性;
3. 备份中心及时恢复数据:此外,备份中心也会及时备份主实例的数据,并在主实例不可恢复的情况下,恢复数据到可用实例上,以保证业务的完整性和稳定性;
2.2 数据库代理(proxy)
数据库代理是介于数据库应用程序和数据库服务器之间的中间层,主要是用于处理数据库请求和响应等工作。云数据库MySQL提供的数据库代理具体支持以下能力:
1. 读写分离
数据库代理相当于是个中转站,可以将所有请求按权重分发给数据库的主从节点、只读实例,以此实现读写分离,从而降低主库负载,提高整个系统的性能和可用性,尤其适用于请求量高、连接数多的业务。同时,proxy支持开启事物拆分能力,可将一个事物内的读和写分发到不同实例上去执行,以此降低主实例负载。同时,数据库代理采用集群架构部署,多节点可保证故障平滑转移。
2. 独立访问
云数据库MySQL提供的数据库代理服务可独立于主实例访问,即数据库代理拥有独立的访问地址,最大程度降低网络安全风险和维护成本。更高级的,用户可根据业务的需要通过不同的代理节点进行负载分配,给到不同业务相应的代理地址即可。
3. 跨可用部署+就近访问
基于云数据库MySQL跨可用区部署特性,proxy也支持跨可用区挂载,就近的客户端流量自动路由到相应的代理节点上(即就近访问功能),以提高访问效率和降低延迟。
在默认权重配置下,全场景高可用性架构会自动选择最短访问路径。
以图3为例,当客户端从北京七区发送读写访问请求时,系统会优先将读写请求送往北京七区的数据库代理节点,北京七区的数据库代理节点会进行读写分离操作,将读请求优先送往同可用区的只读实例,将写请求送往主实例。
4. 防闪断能力
在数据库运维中,会根据业务的需要经常对实例进行调整,例如配置变更、计划内HA切换、计划内重启等,此类操作往往会中断会话,导致连接闪断、新建连接失败等问题。proxy提供的防闪断能力就是用来解决此类场景下可能出现的连接问题。当proxy感知到计划内的有损行为时,就会与切换前的主节点断开连接,将客户端到proxy上的连接恢复至切换后主节点的连接上,通过 session track 能力将会话相关的系统变量、用户变量、字符集编码信息转移至新的后端连接上,实现对应用程序端无损切换。
经过测试,在主备切换、内核小版本升级、调整实例规格的场景下,云数据库MySQL可保持100%的连接保活率。
2.3 CPU弹性扩容
CPU弹性扩容是云数据库MySQL最新推出的能力项,指的是基于云环境通过动态分配CPU资源,可实现CPU资源的手动/自动调整和弹性扩展,主打一个快速响应和变更。当数据库访问量增加或CPU资源占用率上升时,可以自动添加更多的CPU资源,并在高峰期结束后自动缩减。这种弹性扩容的方式,能够使用户根据业务的需求和业务量动态地配置数据库的CPU资源,从而确保更好的数据库性能、可用性和稳定性,提高平台的弹性和可靠性。
使用CPU弹性扩容的好处主要体现在:
1. 弹性控制成本:CPU弹性扩容可以保证在高峰期为用户提供更加稳定的服务,避免由于CPU资源瓶颈造成的性能下降和不可用性问题,同时在业务需求下降时又可以自动缩减资源,减少浪费和费用;
2. 提高灵活性:弹性扩容可以根据业务需求和用户量自动调整CPU资源,大大提高平台的灵活性和可扩展性。使用弹性扩容功能的数据库系统,在弹性调整过程中能够更好地适应不断变化的业务需求和用户数量,从而可以快速扩展或缩小规模;
3. 提高性能和可用性:弹性扩容功能可以根据实时的CPU使用情况,动态地调整CPU资源的分配,以加快数据库的响应速度和提高数据库的可用性,从而更好地满足业务需求;
2.4 配套生态工具
1. DBbrain智能管家,7*24h全方位监测,第一时间发现问题定位问题
云数据库MySQL全面接入DBbrain,可实现数据库性能监控、安全检测和优化诊断,通过智能分析和建议,协助用户快速解决数据库性能和安全问题,提升数据库效率和用户体验。具体地,DBbrain可提供KILL会话功能、SQL限流能力、热点更新保护能力,并且可开启自治服务,无需人工干预;在诊断分析能力上,DBbrain可提供慢SQL分析、空间分析、SQL优化、审计日志分析等能力,7*24h全方位诊断优化。
2. 混沌演练平台,全真模拟真实业务场景,提前预知应用情况
演练平台可以帮助用户模拟各种突发事件和异常场景,提高系统的容错能力和可靠性。搭建好真实的数据库架构后,平台会对业务进行全方位的压力测试,对传统的异常场景进行模拟并进行自动化部署管理,从而能够更好地发现和诊断系统中的潜在问题,以提升业务的质量和可靠性。
就近访问能力
性能测试
为了更好的向读者展现全场景高可用性架构的性能情况,在测试环境保持一致的条件下,我们做了三组对比测试:
3.1 测试环境
地域:北京 - 北京六区、北京七区;
客户端规格:CVM,4C16G;
客户端操作系统:TencentOS Server 3.2;
测试实例规格:主实例通用型4C16G,只读实例4C16G,数据库代理1.3.5 2核4000MB;
测试实例版本:MySQL 8.0;
测试工具:SysBench 1.0.20;
测试数据量:10 tables 100t;
3.2 测试详情
三组对比测试主要用于比较同可用区部署和跨可用区部署之间的性能差异,以及数据库代理提供的就近访问功能的性能情况。
第一组:同可用区部署
部署搭配为:CVM(七区)+主实例(七区)+数据库代理(七区)+只读实例(七区)
第二组:跨可用区部署
部署搭配为:CVM(六区)+主实例(七区)+数据库代理(七区)+只读实例(七区)
第三组:跨可用区部署就近访问
部署搭配为:CVM(六区)+主实例(七区)+数据库代理(六区、七区)+只读实例(六区、七区)
3.3 测试结果
由于全场景高可用架构中的就近访问能力最突出的性能表现就是降低跨可用区访问的响应时间(Response Time,RT),我们重点关注时延的测试结果。测试结果如下图所示,可以看出:就近访问能力使得跨可用区部署也能有更低的网络延迟,在低并发下效果更加显著,就近访问的响应时长最佳可达到跨可用区访问响应时长的17%。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。