数据库高可用架构是指能够保证数据库服务在发生故障时仍然可以对外提供服务的架构设计。随着互联网的快速发展,高可用架构成为数据库系统设计的重要部分。本文档涉及的数据库高可用架构的最新进展主要由网易的郭忆所著,将概述数据库高可用架构的发展历程、Aurora高可用架构设计、MGR高可用架构设计以及网易多副本数据一致高可用架构设计。
一、数据库高可用发展历程
1. 基于复制的数据库高可用架构:此架构通过复制技术保证数据在不同节点间同步,其优点是原生支持、快速部署与易于维护。缺点在于异步复制会导致数据丢失,而同步复制虽然可以保证数据一致性,但无法支撑写密集型业务,且有复制延迟的问题。
2. 基于日志的数据库高可用架构:该架构通过日志同步保证数据一致性,但MHA(Master High Availability)模式下如果主机SSH不可访问则会丢数据,日志双写模式下异步状态会导致丢数据。支持Master-Slave架构,但Slave的双写复制在异步状态下容易丢数据。
3. 基于块设备镜像的数据库高可用:其优点是对数据库透明且是一种通用的高可用解决方案。缺点是性能难以满足要求,且会产生跨网络流量,对PageCache、FileSystem、DRBD、IO Scheduler、Disk Driver等硬件资源都有较高的要求。
4. 多副本高可用架构:如MGR(MariaDB Galera Cluster)架构,优点是采用Sharednothing架构,基于binlog的数据同步虽然难以避免复制延迟,但支持多写操作,解决写扩展问题。缺点是多写模式下所有事务提交必须进行冲突检测,增加了复杂性。
二、Aurora高可用设计
Aurora高可用架构旨在解决数据跨网络传输的问题,采用Redolog、Binlog、DataPage、DoubleWrite、FRM等技术手段减少数据在网络中传输的次数,以此降低延迟。Aurora架构将数据存储视为统一的跨可用区、多副本、高可用的共享存储系统,数据库实例和存储系统之间通过redo日志同步数据,确保了数据的快速恢复。
在存储设计方面,Aurora的数据库实例存储由多个Segment组成,每个Segment有多个副本分布在不同的可用区EC2中。此架构支持最大64TB的单个数据库存储,且通过标记Segment不可用来完成计划内的数据迁移。Quorum设计用于提升容错性,允许在失去任意两个节点的情况下系统仍然可用。
三、MGR高可用架构设计
MGR(MariaDB Galera Cluster)是一种多主节点复制集群架构,用于实现数据库的高可用性与水平扩展。MGR通过Paxos算法确保数据一致性,是一种Cloud-Native Database设计,特别适合于云环境下的数据库服务。Aurora和PolarDB是两种针对云环境的高可用数据库产品。
四、网易多副本数据一致高可用架构设计
网易的多副本数据一致高可用架构设计利用了多种技术手段,包括数据处理模块、事务分发模块以及Paxos算法等,确保数据在多个副本间的一致性与高可用性。
数据库高可用架构的最新进展显示了技术界在保证数据可靠性、减少延迟以及提升高可用性方面的努力。Aurora架构的引入,MGR等多副本架构的发展以及对传统存储与复制技术的改进,都是为了解决传统架构下的痛点,并支持日益增长的业务需求。随着技术的不断进步,数据库高可用架构必将继续优化,以满足更高级别的业务稳定性要求。