企业运维训练营之数据库原理与实践—RDS常见问题排除及DAS自动弹性伸缩—RDS常见问题排除及DAS自动弹性伸缩(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云解析 DNS,旗舰版 1个月
简介: 企业运维训练营之数据库原理与实践—RDS常见问题排除及DAS自动弹性伸缩—RDS常见问题排除及DAS自动弹性伸缩(上)

一、 RDS常见问题排除及DAS自动弹性伸缩

 

image.png

 

通过对日常大量客户反馈的问题的分析,我们提炼了使用云上RDS数据库过程中3比较突出的问题。本文将围绕此三场景介绍问题的自助排查以及定位问题的方法。

 

image.png

 

对于连接类的问题,首先要明确访问链路的细节,包括客户端、客户端到RDS之间的网络以及RDS三个方面。比如客户端侧包含从哪里发起连接、用的什么RDS连接地址、客户端在哪里、网络的连通性或是否做了额外的限制导致无法连通。RDS侧包含是否添加安全组或白名单、连接数、连接地址等。另外,还包括数据库的账号密码是否正确、数据库的连接数是否有相应的限制等。

 

总结来说,客户端、客户端到RDS之间的网络以及RDS三者任意一者的配置不合理,都会导致连接可能出现问题。除了上图列出的因素,还有一些更细的影响因子,比如客户可能走的VPN方式访问,设置的MTU不匹配也可能会导致连接之后命令无响应。

 

如果一直连接不上,需要重点检查网络的连通性,比如连接地址是否正确、网络连接是否做了相关配置打通。

 

如果突然连接不上,也需要检测网络连通性;网络不通时,需要检查比如安全组、白名单的变更;网络连通的情况下,需要检查客户端与服务端的情况,比如实例的负载、客户端配置的连接池是否耗尽、服务端的连接数是否打满等。

 

如果是偶尔连接不上,则网络连通性大概率没有问题,更有可能是网络上或客户端和服务端的配置上出现了问题,比如服务端配置的timeout参数不合理,导致空闲太久被断开,客户端再次得到连接时可能会出现报错。

 

对于3种连接异常,可以使用ping、telnet、traceroute、mtr、tcpdump命令来诊断网络连通性、稳定性与连接报错。

 

一直连接不上或突然连接不上,首选ping与telnet来确认网络连通性;如果是偶尔连接不上,则推荐使用traceroute、mtr、tcpdump判断网络情况。

 

image.png

 

对于偶尔连接报错,一定要提前部署好抓包。复现问题后应第一时间将报文反馈给我们进行确认。

 

ping可以确认是否能够正常解析域名网络以及网络时延是多少。ping域名地址时,可以获取到对应的解析IP地址,判断IP地址是否正确。比如做了本地解析后,RDS变更导致底层的VIP发生了变化,如果还在本地做硬解析,则ping的地址还是之前的IP,导致连接不上。

 

Redis等内存型数据库对网络时延特别敏感,实例从ECS到RDS的SLB再到后端的DB,如果出现跨可用区访问,则时延会增加3ms左右。

 

连接不上时,可以用telnet查看端口是否通。使用telnet时,域名的后面要跟上数据库的端口,比如RDS默认端口为3306,如果在RDS控制台做了端口修改,也需要将此处的端口指定为修改后的端口。

 

在RDS侧做白名单拦截一般有两种方式,一种是在SLB做的,一种是在DB上做。在SLB上可能会出现telnet能通但实际连接不上的情况。

 

mtr用于追踪数据包的传输,判断路径中间是否出现丢包。一般会加上-n来避免反解析,-c用于指定发送的数据包数,-report可以以报告的形式输出,后面需要接上域名。输出结果的第一列为节点,第二列为节点对应的解析IP地址,第三列为丢包率,第四列为每秒发送的数据包,第五列为最近探测的延时值,第七列为标准方差,值越大证明节点的稳定性越差。

 

traceroute可以追踪数据包传输时的全部路径与时延。在一条路径上,每个设备会traceroute测试三次,输出结果包含每次测试的时间与设备的名称,一般也会加上-n反解析,-t表示走TCP协议,也可以指定为-i走ICMP协议,-p用于指定具体端口号。

 

image.png

 

网络重传、网络连接抖动等问题抓取,在Linux环境下一般使用tcpdumpwindows环境下可以使用wiresarck,实际使用场景多为Linux环境部署的程序。

 

第一类使用场景为客户端程序报错日志指向不明确,没有将原始的MySQL报错信息展示出来,可以通过抓包的方式定位问题。第二类使用场景为偶尔连接不上或比较疑难的场景中,通常也推荐使用tcpdump。

 

tcpdump的使用步骤分为两步:

 

第一步,抓取报文

 

第二步,分析报文。

 

抓取问题需要自己部署抓包命令,后续如果不具备分析报文的能力,可以将关报文在提交工单时与一并反馈,由我们助对报文进行分析。

 

抓取报文时需要注意3点:

 

tcpdump要部署在存在连接问题的主机上。

 

出现问题前开始抓包,出现问题后停止抓包,要保证报文中出现异常时的报文。另外,程序最好将报错时间精确到秒级的日志打印出来,能够方便定位问题。

 

对低频报错的场景应提前部署循环抓包,但要避免单报文过大导致将磁盘打满。-i是指定端口,-s为0表示自动选择合适的长度抓取数据包,-w指将抓取的报文输出存放到该文件里,-c可以指定文件大小(-c 100表示文件大小为100M),-W指定文件数量 ,(-W 5表示循环写5个文件)。

 

过滤报文时会先进行快速过滤,一般对于有明显MySQL错误码的报文,可以通过mysql.error_code>0快速过滤;连接被重置的问题可以使用tcp.flags.reset=1的方式快速过滤。

 

image.png

 

如上图红框,服务端3306端口给客户端发的fin结束连接的报文与上一个时间相差了30秒。客户端在服务端设置了wait_timeout=30,空闲连接达到30秒后,服务端会进行回收连接。

 

image.png

 

如上面截图执行ping命令,如果能连通则可以获取到时延、IP;如果无法连通,则需要检查网络问题,比如网络连通性、域名解析正确性等。像做了本地解析后当底层VIP发生变化,此时如果再连接RDS实例,则必然连接不上。

 

image.png

 

如果此时进行telnet,也会显示不通,因为进行了本地解析。将1.1.1.1修改后再做telnet即可。


image.png

执行mtr命令时,会在全部探测完之后才以报告的形式输出。重点关注是否从某一跳以后持续性地出现丢包,如果是,再从标准偏差的数值进行具体判断。如走到外部网络运营商环境,则需要向网络运营商反馈。

 

image.png

 

traceroute时中间出现若干行并无大碍,可能是由于网络运营商做了屏蔽,不会返回数据。最后目标端的数据正常则说明没有问题。

接下篇:https://developer.aliyun.com/article/new/supportservice?spm=a2c6h.12873639.article-detail.6.21741b67F3verg&publish=1224221#/?_k=6u4bk3

相关文章
|
2月前
|
运维 监控 Devops
DevOps文化下的企业运维转型
【8月更文挑战第22天】在数字化转型的浪潮中,DevOps不仅仅是一种技术实践,更是一种企业文化。本文将探讨如何在DevOps文化的引导下,实现企业运维的高效转型,包括理念更新、流程优化和团队协作等方面。我们将一起思考如何打破传统壁垒,构建一个更加灵活、高效和协同的运维体系,以应对不断变化的市场和技术挑战。
39 1
|
2月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
22天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
29 3
|
2月前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
47 6
|
18天前
|
运维 监控 安全
高效运维管理:提升企业IT系统稳定性与性能
在当今信息化时代,高效的运维管理对于企业IT系统的稳定性和性能至关重要。本文将探讨如何通过优化运维流程、引入自动化工具和建立完善的监控体系等措施,实现高效运维管理,从而提升企业的核心竞争力。
|
2月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
56 0
|
2月前
|
运维 监控 测试技术
运维自动化:提升企业效率的关键技术
【8月更文挑战第19天】在数字化时代,企业面临着日益增长的技术挑战。运维自动化作为解决这些挑战的一种有效手段,不仅能够提高企业的运营效率,还能确保系统的稳定性和安全性。本文将探讨运维自动化的核心价值,分析其在现代企业中的作用,并讨论实施运维自动化时可能遇到的挑战及应对策略。通过深入理解运维自动化,企业可以更好地利用这一技术,以实现业务目标和提升竞争力。
|
2月前
|
运维 监控 安全
运维自动化:提升企业效率的关键策略
【8月更文挑战第18天】在数字化时代,企业的技术架构变得日益复杂。面对这种复杂性,传统的手动运维方式已难以满足快速、高效、可靠的业务需求。因此,运维自动化成为提升企业效率、保障系统稳定性的重要策略。本文将探讨运维自动化的核心价值、实施步骤以及面临的挑战,旨在为企业实现运维自动化提供一套清晰的指导思路。
|
2月前
|
运维 监控 数据安全/隐私保护
运维自动化:提升企业IT效率的关键
【8月更文挑战第18天】在数字化时代的浪潮中,企业对于信息技术(IT)的依赖程度日益加深。高效的IT运维成为支撑企业快速发展的基石。本文深入探讨了运维自动化的重要性,分析了其在现代企业中的应用价值,并提出了实施运维自动化的策略与建议,旨在帮助企业提升IT运维效率,保障业务连续性和数据安全。
|
5月前
|
弹性计算 监控 开发工具
【阿里云弹性计算】实战教程:如何高效利用阿里云ECS弹性伸缩应对业务高峰
【5月更文挑战第20天】本文介绍了如何使用阿里云ECS弹性伸缩服务应对业务高峰。通过自动调整云资源规模,弹性伸缩在流量增加时扩展实例,流量减少时收缩实例,实现成本与性能的优化。步骤包括开通服务、创建伸缩组、设定规则和监控指标。文中还提供了一个Python脚本示例,并强调了优化策略,如应用无状态设计、考虑冷却时间和结合云监控。通过实践和调整,企业可以有效应对业务波动。
145 5
下一篇
无影云桌面