开发工具:
文件大小: 932kb
下载次数: 0
上传时间: 2019-06-29
详细说明:本文介绍了由运维痛点催生智能运维平台的需求背景,以及智能运维平台的层次结构,组成元素,还有主备切换,锁等待分析等关键技术的诊断原理,实践经验。智能运维平台整合了我们 DBA 多年的运营经验和 AI、机器学习等技术,能够覆盖更多的异常场景,做到将大部分异常在发生前就预测到,为客户提供更安心的运营环境。2.1系统分层结构
展示层
健康报表
/性能/化建议
分析层圭备切换
主备延迟
QL优化
哪事务信息
素索引层(元数
等待
慢询
空聋源
会话
存储层
控库
ELK
栗集层
DB状态
DB系烷信息
系统资源
资源层
D实
⊥D实例
实例在
宿主机
下图展示了扁鹊更细化的结构,可以看到扁鹊具备」哪些功能,这些功能需要哪些元数据,元数据又
从哪些层面获取,各模块之间如何交互等,如果大家要做类似的功能可以基于这个做一个很好的参考。
2.2功能分解
目上巴目
三、智能诊断原理与实践
我们将客户经常咨询的DB问题大体分为三类,可用性问题、性能问题、可靠性问题
下面我们具体看一下扁鹊是怎样针对这三类问题进行分析并解决的。搜索关注腾讯云数据库官方微信,
获取更多数据库技术干货分享,体验移动端一键管理数据库
1.可用性问题
可用性问题主要是指DB在一段时间内无法响应用户的请求
TDSQL作为金融级数据库本身是做了高可用的,当主机出现异常无法继续提供服务时会自动选则新
主切换。这里我们探测主是否存活的方法是利用^ agent模块定期的连接DB并向 TDSQL自建
的一个心跳表中写入数据,这样无论是磁盘坏块,磁盘满了还是DB重启导致DB不可用, agent都
能准确的判断出来,当 agent连续一段时间写入心跳失败或超时就会触发切换的逻辑,在这期间DB
会处于短暂的秒级不可用状态,从用户侧可能会收到DB只读,连接断开等异常。对于这种情况,
业务往往需要清楚地知道切换的原因是什么,如何避免切换再次发生。
311主备切换的诊断
仲裁
L程拟户空连
2数据库过行读写作
心跪
3将结果上报别
主
探测
心
DB实例
心影
主备同步
主同步
Agent
备
gent
探测
探测
DB实例
D例
引起切换的原因有很多,这里我们列举了一些常见因素,如触发了内核某个bug导致DB重启
hung住,磁盘故障导致DB无法写入。也有可能是由于用户的一些SQL过度的占用一些CPU、IO
等资源导致的,如大事务,慢査询并发影响到用户或心跳线程写入等等
3.12触发主备切换常见因素
DB意外重启
内核BUG引起系统hang住等
磁盘故障,文件系统故障等
资源竞争引起DB异常
1O耗尽
innodb并发线程耗尽
a binlog写入竟争
要分析岀切换问题的原因,我们首先要做的就是保留必要的现场信息,为我们后续的诊断提供线索
这里我们实现了针对top, ioop, iostat等宿主机资源状态信息的秒级采集以及切换前DB内部
processlist, innodbstatus等快照信息。我们上面列举的异常原因基本都可以在这些信息中反映出来
下面我们详细的解释一下如何利用这些信息分析切换原因,扁鹊针对这个问题的分析又达到了怎样的
效果。
313解决方案
采集DB的启动时间,监控DB是否重启
●每分钟采集 show processlist信息
每秒采集宿主机各种状态信息
切换前,保存系统状态信息
erwEn一x产x2 Foot rhaL4BAr288 ee dstat1eg
5184 innodb status_ 20190428 198
drwxr-xr-x 2 root root 4.eK Apr 28 ea: ee iostatlog
5188 threadpool_28198428. og
trex产“X2 mat re4,Apr2888⊥etpg
5168ma比k_26194428.1。g
drwxr-xr-x 2 root root 4.ex Apr 28 ea: ee reminfo
5100 innodb trx_ 20190428 log
drwxr-xr-x 2 nat root 4, ek Apr 28 00:01 toplog
5100 innodb lock waits 2019842810g
drier-xr-x2。rt4. eK Apr28:日1mta
s1a8 innodb locks 201s8428log
519n6pr126190428,12
5108 lock analysis_ 20198428log
51 ae syscon28196428.1g
从我们自身的运维经验来看,出DB故障导致的切换并不常见,更多的情况是由于用户的sQL占用
过多的系统资源引发的一些异常状况,主要可以分为慢查询并发和大事务两类,下面我们逐个分析两
种行为触发切换的原因
由慢查询并发引起的主备切换
TDSQL默认采用 innodb存储引擎,在 innodb中为了避免同时在 innodb中同时运行的线程过多
带来额外的性能开销, innodb提供了一个 innodb_concurrency的参数,用于限制同时在 innodb中
执行的线程数的最大值。搜索关注腾讯云数据库官方微信,获取更多数据库技术干货分亨,体验移动
端一键管理数据库。如果客户执行了用大量的并发连接执行慢查询,这些慢查询会不断地占用 innodb
的活跃线程,导致用户很多访问inob相关的操作简单插入}更新等操作也容易被阻塞,等待
innodb处理,冋样也会引起 agent心跳检测不断失败,从而触发主备切换。
当这种情况发生时,我们可以看到 innodb status信息中有大量的线程处于等待队列,并且有很多慢
査询在 processlist中执行和很长时间,这样我们就可以分析事先保存的 innodb status信息确认这
现象,再结合 processlist中找出ToP慢SQL就可以知道是哪些慢查询并发导致了这个问题。
31.4主备切换:高并发
● innodb状态日志看到活跃线程有64个(配置值就是64)
a Session状态看到大量查询处于执行或者等待状态
卖0 CPERATIE
64ueries inside Innops( S3ueries in queue
64 read views open inside InnoDB
3 R transactions csiye inside InnoDE
18s
gwr1695:57tC1咒
t. fF9
(a)
Wery 462 sanding to cliMat
((2)2187212
1895545
1 th Sensing to c1n电
工己t·f产
55
er163 SandRA E14和n
(224751
Query 107 sns:ng to cl iane
deet fre
动e
((1))1470》H
5可
大事务引发的主备切换原因
TDSQL为了保证主备数据的一致性默认采用row格式的 binlog,如果用户执行了一个 delete大表
的操作就可能产生一个非常大的 binlog写入,由于 binlog是顺序写入的,大事务的 binlog没有完
成写盘之前,后面一些小的写入操作如 TDSQL心跳写入也会被阻隼在写入 binlog的阶段等待大事
务 binlog写入完成,这个等待吋间过程会导致心跳写入频繁岀现超吋。从而触发切换的逻辑,这种
情况下我们会观察到 innodb status中有大量事务已经完成的在 innodb层的 prepared,等待写入
binlog,并且在 processlist中有大量的心跳写入被阻塞。
目前针对这种情况 TDSQL己经做了优化,比如默认限制 binlog一次写入的大小不超过1.5G禁止
大事务的产生
3.5主备切换:大 binlog事务
心跳探测线程被阻塞
●大量事务已经完成了 prepared,等待写入 binlog
广品n:的t1碱xP却
Bacoti
ML如wy1门
回xmaH7h7),p',的
时 ti tt wits rents int影,的的】H1米的si超5)1p”
breFpd-te+22
出m操共时计中品出界!:
uTRANSACU-ON 215851534, ACTIE IPREPARED)1 B4
61c4 StRuct),Hp136,3conl。eka, unda fet世r王
构QhP且8435,0比稳hn11417932632,ury且190316997
cetA
A。255》,A【 FRARED)1
y1 tables an u毒1,10ke1
2144kB,h目1236,1《)418垂图1
thread d13.9 cheng handle114是1的//id931h里ary·n
rp《nt。5y,3tua1 fErr see t:e7作备27:t重rnx(主777》p
扁鹊的自动化分析效果
结合上述分析流程,扁鹊会自动化的针对监控,切换前的DB快照等信息分析出切换的原因,并展
示详细的分析过程。
1).下图展小了扁鹊分析出由于DB发生不存活引发了主备切换
316扁鹊自动化诊断样例
●主机宕机引起切换
国害
图求上-2国主,由主到
:H?之科
夫为值师在直段
2).这一例展示了扁鹊自动结合切换前 innodb status的活跃线程已满和 processlist慢查询过多两
点判断岀是由于慢查询并发触发了主备切换,并且扁鹊将 processlist的sQL按照SQL指纹聚合起
来,方便用户快速定位到是哪条SQL导致了这个问题
317扁鹊自动化诊断样例
●大量慢§主切换详
工(
,可吧国时
1,句想的吗,机,有的
1 Tdet eatra温s,富:,d生
3).这里我们看到扁鹊定位到了由于大事务引发的主备切换,并找到了引发大事务的具体SQL
318扁鹊自动化诊断样例
●由大事务( binlog写入竞争)引发的主备切换
时起心船们
2.性能问题
接下来我们介绍DB的性能,哪些原因会导致性能问题
性能问题,从用户侧最直观的感受就是SQL的执行时耗过长,导致这个间题的常见原因有
1.网终因素,如延迟,丟包等
2.SQL自身执行较慢
3.资源饱和
4.锁等待
网终问题我们暂不在此深究,这里我们主要针对后三种情况展开分析一下:
32DB性能问题诊断
●通常表现为用户请求耗时较长
■网络因素,如延迟,丢包等
SQL自身执行较慢
■系统资源被其他慢SQL占用
钡等待
sQL自身执行较慢
对于SQL自身执行较慢通常是由于用户没有建立合适的索引,或者由于些SQL写法上的原因导
致没有利用到已有的索引,扁鹊针对这种sQL会自动的通过语法解析,SQL访问的表结构,数据分
布等信息进行分析,生成合适的索引优化建议反馈给用户。搜索关注腾讯云数据库官方微信,获取更
多数据库技术干货分享,体验移动端一键管理数据库。
321SQ执行慢的诊断与优化
●索引不合理,SQ写法效率低等原因导致SQL执行时耗较高
●对某个慢查询使用扁鹊的SQL优化分析,得优化建议
如果是 SELECT也可以建议采用读写分离
同译耻
资源饱和
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.