暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于高可用,我们关注得好像有点窄

一森咖记 2019-12-11
595

  之前关注了很多高可用方面的事情,但是似乎有一点我们忽略了,那就是我们所谓的高可用关注的更多是一种临界状态,更多是为了数据一致性和完整性努力,而对于切换时长存在一些问题,对于业务来说,这就会导致服务中断过长,服务不可用。对很多业务(除了一些交易系统)来说,能够最快恢复也许是重中之重,而在这个基础上能够延迟修复数据或者补数据,对于多方来说是一种性价比最高的事情。比如正常情况下,我们考虑了很多的异常,恢复业务需要10秒钟,但是如果我们采取最折中的方式,使得最快的切换方式保持在1秒或者毫秒,那么从这个层面我们可做的事情就很多了,所以有了这篇文章和两个相关方案,在此我们更多聊的是关于如何快速切换的方案。


1.方案概览

为了保证业务的可持续性,高可用方案主要覆盖三类场景:故障转移和主动切换和容灾切换。

分类

事件时间

切换预置条件

影响时长

适用场景

备注

故障切换

计划外,

不确定性

需要做故障预判和故障确认

秒级~分钟级

服务器故障,数据库宕机,网络异常

最大程度保证数据可用,可能存在部分数据丢失风险

主动切换

计划内

主动发起,故障预判和确认前置

秒级

更换OS硬件设备,更换存储,网络异常数据库重大配置变更(数据库重启)数据库升级,数据迁移

最大程度降低风险

容灾切换

重大决策

涉及前后端联动

分钟级+

机房故障

最大程度保证服务可用, 可能存在部分数据丢失风险

其中,

故障转移方案具有不确定性,需要做故障预判和故障确认后方可进行故障切换,预计影响时长在分钟级;

而快速切换可以作为高可用的补充方案,是主动发起的方案,属于计划内任务,预计影响时长可以控制在秒级;

容灾切换方案属于决策方案,在重大故障时需要前后端联动完成。


其中主动切换方案是该方案讨论的重点,主要有以下的一些预设条件

业务低峰期

数据延迟控制在1s以内

应用层具有自动重连机制

MySQL基于异步复制模式


切换前,整个服务状态如下,其中主库可读写,从库只读,通过Consul服务访问至主库




2.快速切换参考方案1


1)建立双向复制关系,主从均开启读写,但是从库无业务数据写入


2)主库置为Read_only状态,业务写入失败,业务读依然可用


3Consul域名服务切换到从库,取消之前的双向复制改为单向




3.快速切换参考方案2


1)将主库置为Read_only状态,业务数据写入失败,但是依然可以查询


2)检测从库的数据延迟,检测N次,偏移量稳定无变化


3)配置数据库双向复制,从库置为可写状态

4Consul域名切换到从库


小结:两个方案中,1个方案比第2个要少一个步骤,而且建立反向复制的过程可以提前验证,相对来说更加便捷和和有效。


转文至此。



转文至此。
以下为个人公众号“一森咖记”,欢迎关注。
                
往期精彩文章
=====================================
  1. MySQL:主从同步延迟Seconds_Behind_Master越来越大,什么鬼?

  2. 浅谈MySQL三种锁:全局锁、表锁和行锁

  3. LINUX环境:MySQL和Oracle开机自启动,咋搞?

  4. 生产环境:mysqlbackup逻辑备份的一种shell脚本实现

  5. 生产环境:mysqlbackup物理备份的一种shell脚本实现

  6. MySql 8.0.16 客户端连接失败

  7. Oracle如何访问MySql:透明网关

  8. 一款好的数据库监控工具:天兔数据库监控系统V3.8搭建

  9. MySQL主从架构搭建+GTID同步方式部署

  10. 用户:单台服务器部署多MySQL实例,咋弄?

  11. MySQL服务器一次异常掉电的恢复



在看,让更多人看到
最后修改时间:2019-12-12 09:30:25
文章转载自一森咖记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论