GaussDB数据库主备架构的基本组件,以及基于华为云底座和轻量化部署TPOPS两种方式的典型高可用部署场景介绍

GaussDB数据库主备架构的基本组件,以及基于华为云底座和轻量化部署TPOPS两种方式的典型高可用部署场景介绍。

1、GaussDB数据库组件
1.1 GaussDB数据库集中式主备集群基本组件

CM由CM Agent、CM Server和OM monitor构成:

CM Agent:管理服务组件,由OMM拉起(周期1秒),主要负责CMS、DN进程的保活及启停,仲裁指标采集、仲裁命令执行等。集群的每台主机上均有CM Agent进程。CMA故障可能会导致启停能力丢失、实例故障检测能力丢失。

CM Server:管理服务组件,由CMA拉起(周期1秒),根据CM Agent上报的实例状态判定当前状态是否正常,是否需要修复,并下发指令给CM Agent执行。CM Server会将集群的拓扑信息保存在ETCD。

OM Monitor:管理服务组件,由crontab定时任务控制拉起(周期1分钟),主要负责OMM、etcd、cm_agent进程的保活及启停

DN节点:数据服务组件,由CMA拉起(周期1秒),负责存储业务数据、执行数据查询任务以及返回应用结果。DN主备节点之间采用Quorum复制或Paxos协议复制。

ETCD节点:管理服务组件,由OMM自动拉起(周期1秒),主要协助CMS选主、持久化集群仲裁信息、保存集群的拓扑信息等。

1.2 区域和可用区
在高可用部署架构中区域(Region)和可用区(Available Zone)用来描述数据中心的位置。
区域Region:指物理上相对独立的数据中心。每个区域完全独立,这样可以实现最大限度的容错能力和稳定性。在GaussDB数据库中资源创建成功后不能更换区域。

可用区AZ:指同一区域内,电力和网络互相隔离的物理区域,比如同一个区域内的两个机房,一个AZ故障不会影响其它AZ。GaussDB数据库中在同一个Region内可以有多个AZ可用区,不同可用区之间物理隔离,但内网互通,既保障了可用区的独立性,又提供了低价、低时延的网络连接。

不同Region的划分和多中心的高可用架构有关,比如生产/同城/灾备机房划分为不同的Region,然后在同一个Region内按照机房模块划分为不同的AZ域。也有可能生产和同城划分为同一个Region,灾备作为一个单独的Region,不同Region之间的RPO要求也是不同的。

1.3 主备节点数据同步机制
1.3.1 WAL日志机制
GaussDB数据库为了保证数据在数据库发生故障时候可恢复,引入了Redo机制,也就是WAL日志,其思想是对数据文件的修改在提交之前都需要记录到日志文件中,也就是先写日志后写数据。当事务发生时,相关的操作记录会被组装并写入基于内存的RedoLogBuffer中。当RedoLogBuffer写满或事务没有更多日志记录需要写入时,这些日志记录会被提交给RedoLogHandler,并最终写入到XLog(即WAL日志)中。这样不需要在每次事务提交的时候都把数据页刷回到磁盘,因为出现崩溃的情况下可以用日志REDO来恢复数据库。

WAL日志机制在数据库发生故障后可以通过xlog日志文件恢复数据、主备节点也可以通过日志文件进行数据同步、备份恢复时通过WAL日志可以实现PITR恢复。与MySQL中binlog不同之处是WAL日志主要关注于数据的物理修改记录,确保在数据文件修改之前相应的日志已经写入磁盘;而binlog日志则可能更侧重于记录数据的逻辑变化,如SQL语句的执行等。在GaussDB中可以使用逻辑复制的功能将xlog日志转换为类binlog日志格式进行逻辑回放等使用场景。

1.3.2 同Region内主备节点复制
在一主多备架构中,主机通过WalSender线程向备机同步日志,备机通过WalReceiver线程接受日志,并刷到本地盘,备机读取redo日志,完成主备之间的数据同步。
WAL:Write-Ahead Logging,也称为XLog,预写日志系统。实现事务日志的标准方法,是指对数据文件(表和索引的载体)持久化修改之前必须先持久化相应的日志。

WAL Receiver:数据库复制时备机创建的一个线程的名称。此线程用于从主机接收数据、命令,并反馈确认信息至主机。一个备机只有一个WALReceiver线程。

WAL Sender:数据库复制过程中,主机接受到备机的连接请求后创建的一个线程的名称。此线程用于发送命令、数据到备机,并从备机接收信息。一个主机可能会有多个WAL Sender线程,每一个WAL Sender线程对应一个备机的一个连接请求。

WAL Writer:数据库启动时创建的一个写Redo日志的线程,用于将内存中的日志写入到持久性设备中。

REDO日志:记录对数据库进行操作的日志,这些日志包含重新执行这些操作所需要的信息。当数据库故障时,可以利用REDO日志将数据库恢复到故障前的状态。

GaussDB数据库在同一个Region内1主多备的部署架构下,主备节点间采用Quorum或Paxos一致性复制协议,在事务提交前会进行一致性检测,满足半数以上的多数派响应后才可以提交。因此为了满足多数派选举,日志节点会部署为奇数。

posted @ 2024-09-18 17:07  喜酱喜酱  阅读(74)  评论(0)    收藏  举报