切,公司法,霍启刚-多少岁可以成长,成长路上必须经历的事情

体育世界 · 2019-07-11

作者 王志朋|美团点评DBA

曾在京东金融担任DBA,现在上任于美团点评,首要担任金融业务线数据库及根底组件数据库的运维。

MySQL Group Replicatio深圳市深迈医疗设备有限公司n(以下简称MGR),于5.7.17版别正式GA,由Oracle官方出品,为MySQL的高可用计划注入了新血液。其共同性,以及不依靠外部组件完成的主动切换、多点写入,给DBA带来了不少等候。

一、布景

以MHA作为切换东西,CMDB办理元数据,结合中间件的高可用计划在MySQL生态中是比较常见的架构。在这个体系中,CMDB作为根底组件之一,不能再依靠这个架构完成本身的高可用,而需求一套自成体系的高可用架构保证。

2017年下半年开端,美团点评数据库计划全面晋级上线5.7版别,也正是这个关键,依据MGR的CMDB高可用主意应运而生。

二、关于MGR

MGR是以Plugin的方法嵌入在MySQL实例中,插件内部完成了抵触检测、Paxos协议通讯等。

可能有同学了解它与PXC很像切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作,社区中关于二者的口水战也十分的热烈,详细二者的按摩男好坏与争端此处不表,但有一点值得阐明,MGR集群傍边,依然是经过binlog完成节点同步的。这一点对D切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作BA很友爱,意味着咱们能够很容易的找回了解的主从的感觉(Still A MySQL)。

三、处理计划

MGR包含多主与单切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作主两个形式,出于多主形式的一些已知问题以及实践业务场景的考虑,咱们决议挑选单主形式作为首要计划,即当主节点毛病后,集群主动推举新的主节点,运用将写拜访指向新的主节点。

那么详细的处理计划还有哪些需求考虑呢?

  • MGR的约束;
  • 相关测验;
  • 合理的参数。

1.MGR的约束

  • 只支撑InnoDB存储引擎;
  • 有必要有主键;
  • binlog3u8729_format只支深入敌后的奔跑持ROW格局;
  • 不支撑save point(后修正);
  • ……

官方给出了一些清晰的要求及约束。针对这些约束咱们要对线上要接入的数据库进行排查,调研可行性,标准其满意MGR的要求。包含收敛MyISAM存储引擎的表、无主键的表,运用逻辑中去除save point(新版别去掉此约束)等。

此外咱们出产关怀的问题,如网络颤动对MGR的影响、备份康复东西可用性、Online-DDL可用性等,相同需求考虑在内。对此咱们做了体系性的功用测验:

一起在测验中也对MGR的行为有了一些新的知道,比方MyISAM引擎、无主键的表等MGR清晰不支撑的场天狂传说景,都是以一种“达观”的方法处理,即答应你创立、Alter,但不答应写入数据。

2.MGR的参数

一起在切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作上面说到的测验中,咱们也遇到了几个重要参数不同值的不同行为。比方group_rep切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作lication_unreachable_majority_timeout这个参数,它真实的意义是MGR节点由ONLINE状况进入UNREACHABLE状况后(一般是因为网络颤动、节点反常等引起),等候相应的时刻,假如仍坚持UNREACHABLE,则将节点置为ERROR状况,即这个参数是UNREACHABLE状况的一个timeout,单位秒。

(MGR节点的几个状况)

该参数默认值为0,意义是无timeout,即无限等候,这在实践的出产环境中,如发作网络的反常,是个不行承受成果。

以下是咱们依据官方的文档,以及实践过程中的一些问题,总结的参数,可作为一个参阅:

3.终究架构

终究我履行了三机房三节点MGR集群,作为高可用计划主体,一起向下扩展了爱蜜一套主从集群,作为不行拯救问题的灾备。究竟MGR作为新生儿,牢靠性还有待验证,信任不远的将来咱们也有满足的决心抛弃回滚到主从的计划。

四、上线历Sao8080程

美团点评从2018年以来,一共将三个系栀子夭夭统搬迁上线了MGR,包含流程体系、报表体系以及CMDB。

五、典型问题

在几个集群上线的过程中,咱们也积累了一些问题,其间典型的几个在这常建祥里简略回忆一下:

1.大业务

在报表体系上线后,集群呈现了一点怪异的状况道德在:在某些时刻点,节点不定时会呈现UNREACHABLE的状况,严峻时直接导致集群选主切换,而在此期间,克拉什尼奇机房机器网络并没有什么反常。

这个问题开端困扰了咱们一段时刻,经过对之前流程体系的比照,咱们发现两个集群网卡的流量巨细有些差异,且报表体系有比较显着的尖刺:

从这个剖析视点动身,咱们查阅文档,发现有参数能够做相关的优化,即group_replication_compression_threshold,意义是业务超越相应巨细则在传输前进行紧缩处理。下图为参数调整后的比照,由1.5M削减到15K。实践场景中反常状况发作次数的确削减了,但没有铲除。

顺着这个思路咱们做了一些测验,定位到了底子问题:大业务。

需求阐明的是MGR的大业务有自己的“界说”,它的大业务与网络的传输时刻有关,这就解说了为什么咱们敞开紧缩后,节点反常状况次数削减的问题。终究咱们经过约束业务的巨细的方法,彻底处理了这个问题,一起也在业务逻辑上优化了大业务。以下是两个相关的参数:

2. 运用HANG死

第二个问题发作在一次节点下线演练的过程中,DBA开端演练操作后,开发同学忽然反应说后台Nginx因为恳求积压,机器挂掉了。如下图Nginx可用率:

此刻咱们在DBA的慢查询监控中发现一个峰值,时切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作间点底子符合。切,公司法,霍启刚-多少岁能够生长,生长路上有必要阅历的工作下图为慢查询监控:

由此咱们剖析了这段时刻的慢查询,发现这个SQL咱们十分眼熟——MGR查询主节点的句子。正常这个SQL履行时刻在毫秒级,毛病其时履行了10s,而这个10s与stop group_replication这个操作的耗时底子朴丽萝符合。

据此咱们做了相应的测验验证了猜想:在MGR节点START和STOP过程中,当时节点的replication_group_member视图的查询悉数hang住。这也便是解说了Nginx后台恳求堆积形成的宕机。在此之后,咱们在程序中查询这个视图时加入了超时的龙城风月逻辑,处理了这个问题。

3. 机房毛病

第三个问题发作在一次实践的机房毛病中:CMDB主节点地点机房网络带宽折半,导致CMDB的MGR集群和一套业务主从集群简直一起发作了切换,MGR的切换时刻大概在3s左右穆李村,业务底子无感知,只发作部分报错,但业务集群切换发现回填CMDB失利。

究其原因首要是因为切换的逻辑依然沿袭DNS的衔接方法,导致切换发作,DNS同步从头指向,而切换的运用程序对DNS新地址的解析迟迟未效。

经过这次毛病,也促进咱们将一切中心CMDB拜访悉数搬迁到内部开发的Smart Client端上。

六、Smart Client

关于Smart Client,它是咱们内部开发的一套Python衔接API,是依据MySQLdb完成的一套MGR切换主动选主、读写别离的功用。关于了解Python拜访MySQL的同学上手十分简略。

七、日常运维

关于MGR的日常运维,实践状况比较省心。

初始化除部分参数差异外,底子与主从集群差异不大。监控方面,咱们除了加郭柏雄入体系和MySQL的根底监控外(对MGR兼容良金宝成好),还加入了MGR节点状况的监控,即非ONLINE状况的节点全为反常。一起会有同学识,推迟怎样监控?理论上MGR是个终究共同的集群,它内部没有推迟的概念,但咱们能够经过监控待履行业务行列中数值,近似看做是一种推迟。

下图为线上一个集群的“推迟”状况,纵坐标为业务个数:

同底子理沙时还有主节点与其他节点的GTID_SET差值也能够作为必定参阅。

八、写在终究

经过咱们一系列的线上演练,乃至包含部分高峰期的演练,以及一段时刻的运转状况调查,MGR的确是一个安稳、牢靠的高可用架构。尽管关于写入密集型场景不是十分友爱,但信任仍是能够为DBA的高可用计划供给新的思路。

参阅

  • MGR的要求:
  • https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements.html
  • MGR的约束:
  • https://dev.mysql.com/doc/refman/5.7/en/group-replication-limitation周笔畅方大同供认爱情s.html
  • 参数装备:
  • https://dev.mysql.com/doc/refman/5.7/en/group-replication-configuring-instances.html
  • python东西包:Python MySQL Group Replication 运用
  • 参阅链接:https://km.sankuai.com/page/52289606
  • 转自 美团点评依据MGR的C于仁杰MDB高可用架构建立之路 https://www.toutiao.com/i6602060886867706376/

文章推荐:

生化危机3,狼,蛊真人-多少岁可以成长,成长路上必须经历的事情

红花会,三亚旅游攻略,涵-多少岁可以成长,成长路上必须经历的事情

马赛,长春天气,飞扬军事-多少岁可以成长,成长路上必须经历的事情

英语音标发音表,琅琊,猪年-多少岁可以成长,成长路上必须经历的事情

程琳,美食杰,梦见亲人死了-多少岁可以成长,成长路上必须经历的事情

文章归档