您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

MySQL的consul配置这么设计就完整了

时间:2019-09-09 11:34:38  来源:  作者:

最近在梳理Consul健康检查逻辑的时候,也发现了一些潜在的问题,这些问题虽然不会直接造成业务故障,但是在故障发生的时候还是存在较高的概率导致一些意料之外的影响。

从解耦的设计思路来看,我们希望很多事情能够做到多重校验,即设计一个组件的时候,如何涉及外部环节,我们需要从故障设计的角度来进行考量,即认为我们的服务或者组件是存在故障的风险,按照这个来设计,就能够导致一些后续设计中的尴尬。

对于Consul的逻辑检查,说简单也可以,说复杂确实需要补充很多的内容,以下是在之前整理的一版基础上进行细化得到的。

MySQL在Consul服务中的健康检查逻辑

整体上脚本分为两个部分,第一个部分是判断数据库的角色,第二个部分根据读写策略进行补充。

数据库角色判断的逻辑如下:

 

MySQL的consul配置这么设计就完整了

 

 

第二个部分是根据角色和读写策略完成健康检查,如果正常返回0,否则返回2

 

MySQL的consul配置这么设计就完整了

 

 

我来做一下解释,目前的读写分离如果是主库,则为write,如果是查询操作主从库均可读,则为Mixed_Read,如果查询只在从库可行,则为Read_only.

 

MySQL的consul配置这么设计就完整了

 

 

在这个基础上我们来梳理一下这种策略的潜在风险。

 

MySQL的consul配置这么设计就完整了

 

 

既然设置了健康检查,我们就不能指望服务状态始终不变,如果发生了服务宕机,在服务重启后,如果因为健康检查策略导致主从混写,那这个问题就严重了。

所以在目前的检查模式下,如果主库宕机,在重启服务前需要暂时停止健康检查逻辑,否则就会造成数据错乱的严重问题。

如果从库宕机,则健康检查逻辑还是比较稳定,除了原本的读混合模式会漂移到主库之外,其他的部分没有变化。

如果是主从复制失败,则问题依然是可控的。

 

MySQL的consul配置这么设计就完整了

 

 

MySQL的consul配置这么设计就完整了

 

 

做完这些分析之后,我觉得目前的健康检查逻辑是存在潜在风险的,因为有些环节需要依赖人工的检查,因为一旦失误,就会造成数据问题。所以在这一点上我觉得健康检查的逻辑需要进行补充和整改。

我们可以换一个角度来考虑,就是什么时候应该会发生健康检查状态的变化,目前梳理了下主要有以下几种。

 

MySQL的consul配置这么设计就完整了

 

 

除非主库宕机,其实我们是不希望域名频繁的做切换的,如果发生切换,主要有两个场景,一个是异常宕机,另外一个就是基于ACL的key-value检测。

 

MySQL的consul配置这么设计就完整了

 

 

从这个角度来看,域名服务是相对恒定的,实时的检测其实都对于每一次检测都是实时的,如果出现超时,连接异常等情况,其实是尽可能希望在当前域名范围内处理,毕竟这个时候域名和IP仅仅的连接的形式不同而已,如果要建立更加稳定的健康检查,应该是ACL+实时检测组合的方案,基本思路就是ACL检测优先,在服务故障切换之后,会补充检测健康检查的逻辑,把这两个部分整合起来处理,就会避免那些意料之外的异常域名切换。

相关链接:

个人新书 《MySQL DBA工作笔记》



Tags:consul   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary一、前言伴随着Eurka2.0版本已停止维护,开始要考虑使用微服务新一代的开源的注册中心...【详细内容】
2020-11-13  Tags: consul  点击:(159)  评论:(0)  加入收藏
最近在梳理Consul健康检查逻辑的时候,也发现了一些潜在的问题,这些问题虽然不会直接造成业务故障,但是在故障发生的时候还是存在较高的概率导致一些意料之外的影响。从解耦的设...【详细内容】
2019-09-09  Tags: consul  点击:(222)  评论:(0)  加入收藏
在计算机技术日新月异的今天, Docker 在国内发展的如火如荼。特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,那么今天我们继续关于Dock...【详细内容】
2019-08-28  Tags: consul  点击:(188)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(7)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条