分布式数据库运营指南.docx
《分布式数据库运营指南.docx》由会员分享,可在线阅读,更多相关《分布式数据库运营指南.docx(6页珍藏版)》请在第一文库网上搜索。
1、分布式数据库运营指南前言在核心早已进入运维的时间节点,分享学习到的知识,是没有意义的。帮助大家认识已存在或可能会存在的棘手问题的解决办法,并且指明下一代智能运营方向,是没有问题的。监控往深里做,做到真正能在关键时候帮助定位解决问题,并不是一个简单的课题。简单的来说,部个普罗米修斯,吐出常见指标,貌似就很好看了。而我们真正想要的监控系统,是要能智能高效地帮助DBA分析解决棘手问题的。我们为什么需要这么深入的一个运营系统?只是尝试可能的交易成功率由99.8%到99.99%的提升。1 .关键监控指标1.1 锁等待常见现象1、SQ1单独执行很快2、负载很低,但是时快时慢3、偶尔出现1oCkWaitti
2、meout错误常见原因:1、事务未提交2、事务时耗长锁:事务未提交(应用异常等)请求响应时间二执行时间+锁等待时间MySQ1的information_schema库下有3张表(innodb_trx,innodb_1ock_waits,innodb_1oCkS)记录了会话之间锁等待的依赖关系.我们监控可以通过分析这三张表锁等待关系,找出当前持有锁的领头的会话。在我们实际联调中已出现不少次的1OCkWaittimeout报错,重跑无法解决,只能手动登陆对应分片(前提为报错了具体哪个分片)检查是否有执行了很长时间的会话,然后找出ki11掉该会话(当然应用故障断开连接这种情况下,为什么PrOXy没有透
3、传ki11query的操作下到DB后面还得分析)。锁:事务时耗长1、事务持锁时间长2、其他会话等锁时间长,执行时间并不长3、等锁时间超过innodbOCk_wait_timeout(默认50s,我们改成了15s)会返回锁超时错误这个时候,我们GO1denDB的日志云(DBProxy+DB两种index)所记录的慢日志是不会记录下来其中的SQ1(后面的慢SQ1也会说明)。如何找出这些SQ1,又如何高效的找出SessionA和sessionB的历史交错会话信息,是个困难点。TDSQ1扁鹊的做法或许值得参考。扁鹊实现了一个事务模拟器,可以通过按客户端执行记录的IP:PORT分组并结合语法解析回放用户
4、执行过的SQ1来提取所有事务信息,如事务的开始,结束时间,事务中访问了哪些表,事务的影响行数,事务的总时耗等等,这样我们就可以通过设定过滤条件以事务为单位来找出某个事务具体的执行信息。都涉及多表的情况下,事务模拟开发是困难的。当然审计日志也是一种做法,记录SQ1,耗时,源IP和端口等,分析审计日志来提取会话的事务信息。不过,使用插件(商业版MySQ1也有)预计会带来超过15%的性能损耗,不一定值得。1.2 可用性诊断处理我们Go1denDB探测主DB是否健康也不只是ping或者se1ect1这种操作。我们会事先在MySQ1上自建一个心跳表,DBAgent模块连接DB,定期向DB心跳表中写入数据
5、,这样无论是磁盘坏块,磁盘满了还是DB重启导致DB不可用,DBAgent都能准确的判断出来,当agent连续一段时间写入心跳失败或超时就会触发切换的逻辑,在这期间DB会处于短暂的秒级不可用状态,从用户侧可能会收到DB只读(groupdisab1ed),连接断开等异常。这种情况,业务是需要清楚地知道切换的原因是什么,如何避免切换再次发生。我们现在是通过告警去发生切换的DB分片上查看错误日志来进行定位,但是所追溯出来的根因其实不精确。之前的文章有介绍,触发DB切换的原因很多,有DB意外重启;内核bug引起系统hang住;文件系统或磁盘故障;资源竞争(10耗尽,CPU好紧,bin1og写入紧张)。要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 数据库 运营 指南