视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
GitHubAvailabilityIssue总结_MySQL
2020-11-09 18:04:40 责编:小采
文档


基于这三点总结就抛出了三个问题:

1. 现有的HA软件是否可靠,可信?是否在正确的时候做了正确的判断和操作?

2. 没有集中管理机的HA架构(即内部投票)是否可靠?

3. HA的Failover过程是否要考虑数据预热?

以下是对于这三个问题的一些分析和个人看法:

问题一:现有的HA软件是否可靠,可信?是否在正确的时候做了正确的判断和操作?

GitHub团队认为:The automated failover of our main production database could be described as the root cause of both of these downtime events.

而对于这个问题,我的想法和 Xaprd的观点 一致:事故的关键在于现有的HA软件都没法照顾到所有可能发生的情况,以至于在某些情况下的行为是不可预测的,或者非我们所想的。

因此一味的将切换操作置成手工模式,虽然避免了风险,但显然没有很好的使用HA软件所提供的service。

个人想法是,对于一些原因明确且有明确cookbook的事故,可以让HA去完成failover。而对于那些需要人工介入分析故障原因的事故,做手工切换,如果github遇到的timeout等。

问题二: 没有集中管理机的HA架构(即内部投票)是否可靠?

从目前的流行程度来看,MMM,MHA这些使用Manager管理模式的架构,已经逐渐替代 Heartbeat + LVS/ Pacemaker 等投票模式的架构。

其主要原因就是在没有仲裁机的情况下,发生网络partition会造成脑裂,从而导致active角色的互相争抢,最后使整个cluster瘫痪。

Github再次用血的教训告诉我们脑裂是无仲裁架构的致命缺陷。

问题三:HA的Failover过程是否要考虑数据预热?

这个问题显然是引起本次问题的关键:没有预热的切换才是万恶之源。脑裂只是连锁反应而已。

而貌似整个社区的blog中对于这个问题的讨论却是少之又少,也许是重视程度不够?

会造成切换后压力剧增可能的情况,我总结为以下三种:

1. stand-by-master完全作为冗余,BufferPool 基本没有热点数据

2. stand-by-master提供read-only服务,但read-only 和 acitve master 的请求业务类型不同,导致热点数据不同

3. 原本active的MySQL宕机后重新回归,此时重启后的MySQL是处于完全Cold 状态

但目前众多HA软件中都没有考虑预热的因素,毕竟所有的failover都希望尽快的将业务转移至stand-by master,而预热则需要尽可能多的时间来获取业务的请求。

也许这是一个无解命题?

bitsCN.com

下载本文
显示全文
专题