高可用FAQ
📄字数 2.5K
👁️阅读量 加载中...
本文档记录与虚谷数据库高可用相关的问题。
目录
正文
什么是高可用?
高可用(High Availability,HA)是指系统在面对软硬件故障、网络异常或其他不可预期事件时,仍能持续对外提供服务、不中断或快速恢复的能力。高可用的核心目标是最小化系统停机时间,保障业务的连续性和数据的一致性。在数据库系统中,实现高可用通常需要结合以下机制:
- 冗余部署:关键组件(如数据库节点、存储、负载均衡)部署多个副本;
- 故障检测与自动切换:及时检测节点或服务故障并自动切换到备用节点;
- 数据多副本:确保数据不会因单点失败而丢失;
- 网络与硬件冗余:包括多网卡、双电源、冗余磁盘阵列等;
虚谷数据库中哪些地方体现了高可用?
虚谷数据库通过多副本机制、存算分离架构、主备切换机制和多网络通信通道,构建了一套全面的高可用解决方案。其核心设计体现在以下五个方面:
数据存储高可用。虚谷数据库采用数据切片与多副本机制实现分布式存储,支持最多3个数据副本(1主2备)。主副本采用轮转分布策略,备副本随机分布在集群节点间,确保在任意存储节点故障时仍能可靠访问数据,有效提升数据持久性与容灾能力;
计算节点高可用。得益于存算分离架构,计算节点(即工作节点)无持久化数据,彼此同构且对外服务等价,用户可连接任意节点访问数据库。当部分甚至全部工作节点发生故障时,数据存储不受影响,可通过故障恢复机制快速恢复服务,具备良好的容错能力与横向扩展能力。
主控管理节点高可用。通过主备设计,当一个管理节点故障时,另一个节点可自动接管管理职责,避免单点故障导致控制面不可用风险。
变更日志高可用。日志采集节点采用主备冗余方案,在保证变更日志完整性与一致性的同时,确保事务级别的数据变更在异常情况下也能被可靠记录,增强数据一致性保障。
网络传输高可用。虚谷数据库支持多路网络通信配置。在多网络通道下,系统通过消息冗余循环检测机制进行跨网络链路存活探测,实现集群间高可靠通信。即使部分网络链路故障,系统仍能保持节点连接与故障自动恢复,进一步提高集群整体的可用性。
详细说明见核心技术-高可用。
高可用和负载均衡有什么区别?虚谷数据库是怎样做的?
- 高可用(HA)的核心目标是保证系统在部分节点宕机、网络故障等异常情况下依然可用;
- 负载均衡关注于提升系统整体性能,防止部分节点过载;
虚谷数据库同时具备高可用性和负载均衡能力,通过多副本、主备切换、迁移副本、扩容自动均衡等机制,构建出稳定可靠、性能优越的分布式数据库集群。
虚谷数据库如何避免脑裂问题?
脑裂定义
脑裂(Split-Brain)是指在分布式数据库集群中,由于网络故障等原因,多个管理节点之间失去通信,导致原本属于同一集群的节点组各自认为对方已失效,并分别提升自身为主管理节点,同时提供服务从而导致系统一致性被破坏。
产生前提
脑裂现象的产生,系统至少满足以下两个必要的条件:
具备多节点的高可用系统或数据库集群(节点数 ≥ 2),系统中存在多个节点共同参与管理,具备主备切换、分布式协调等机制;
在网络异常或通信中断情况下触发角色切换(如备节点切换为主节点),当原主节点与其他节点失去联系后,部分节点误判其已失效并发起主控接管,从而多个节点各自认为自己为“主”,形成系统状态分裂;
满足以上条件时,系统可能进入脑裂状态,造成数据不一致等严重问题。
避免方案
脑裂现象产生的最主要原因是网络故障,为了降低脑裂发生风险以及减少脑裂发生时对数据一致性造成的破坏,虚谷数据库集群通过以下几种方式来进行规避与处理:
- 方式一:硬件冗余
虚谷数据库集群在网络架构层面支持多路网络通道配置,可通过网络硬件冗余(如多网卡、多交换机)提升集群内部通信的可靠性,避免因单一物理链路故障导致节点间通信中断,实现链路级容灾能力。
数据库版本 | 支持的网络通道数 |
---|---|
虚谷数据库 V11 | 支持 1~4 路网络 |
虚谷数据库 V12 | 支持 1~16 路网络 |
多网络配置模式下,单路网络故障不会影响整体集群网络连通性,具备较强的网络容灾能力。通用业务系统网络通常建议采用至少2路的部署模型以增强稳定性。网卡冗余则多采用BOND方式,将两张物理网卡通过绑定模式达到容灾的目的。网络设备故障发生的概率较大,建议采用质量可靠的网络硬件设备,同时配备网络工程师进行网络的监控及维护保障。
- 方式二:重发校验
在实际网络环境中,偶发性的不稳定或“抖动”现象较为常见。为避免因瞬时网络波动造成集群节点间误判,虚谷数据库集群在主备管理节点之间引入基于“心跳”机制的重发校验策略。系统采用滑动时间窗口进行心跳检测,仅当在连续多个心跳周期内未收到有效响应时,才认定目标节点发生网络故障。
具体而言,集群默认每2秒发起一次心跳探测,若在指定次数内(默认30次心跳周期检测,可由系统参数node_dead_delay控制)连续未收到目标节点的任何心跳响应,则将该节点标记为“失联”,并触发容灾或故障转移处理逻辑。该重发校验机制有效屏蔽了瞬时网络异常所带来的误判风险,提升了集群在复杂网络环境下的稳定性和容错能力。
- 方式三:节点降级保护
虚谷数据库通过系统参数enable_node_degrade控制是否启用降级。
虚谷数据库支持哪些高可用部署方案?在部署的时候有哪些基础设施的要求?应该如何选择方案?
虚谷数据库采用基于无共享(Shared-Nothing)的多副本架构,让整个系统没有任何单点故障,保证系统的持续可用。支持:
- 单机房(数据中心部署)
- 多机房(同城双活部署、同城灾备部署)
- 城市(两地三中心)级别的高可用和容灾
详细部署方案见集群高可用部署方案。从技术上来说,只要是支撑虚谷数据库集群不同副本节点的基础设施足够好,在合理的副本分布下,虚谷数据库集群就可以将数据分布在不同节点上,对外提供数据服务。建议优先结合业务对RPO(数据恢复点目标)、RTO(恢复时间目标)的要求,进行部署方案评估。具体的方案探讨需要考虑多个因素和方面,如果有实际具体的场景,请联系虚谷数据库技术人员进行方案讨论和对接。