TDSQL-C for PostgreSQL 主从架构详解

TDSQL-C PG版通过计算存储分离、日志下沉和异步回放解决传统数据库资源利用率低、扩展性不足等问题。其架构包括计算节点和存储层,采用CynosStore Agent进行通信。日志异步写入和并行插入提高了效率,优化包括无CheckPoint机制、无Full Page Write记录和快速启动。TDSQL-C的主从架构优于传统PG,提供更快的从机搭建和主备切换,通过HA Fencing避免数据分叉。未来将探索新硬件和多主架构。
摘要由CSDN通过智能技术生成

TDSQL-C PG 版整体架构

在介绍整体架构前,先说一下为什么我们要做 TDSQL-C 这款产品。在传统数据库上,数据库的使用是存在一些问题,主要分为以下四个:

第一是资源利用率低,计算和存储在一台机器上,CPU 和磁盘使用不均衡,例如 CPU 用满,但磁盘很空闲或者 CPU 很空闲但磁盘又满了,这样就会导致资源利用率低。

第二是扩展能力不足,在单排上可能不能满足一些用户要求,无法扩展。

第三是资源规划难,例如用户使用数据库,一开始无法预估这个数据库需要多少次磁盘空间。

第四是备份比较困难,因为每一个实例数据是私有的,所以每个实例都需要单独进行备份。

TDSQL-C 的解决思路:

第一个问题是计算存储分离,计算资源可以弹性调度。例如说可能给用户分配一个 4 核 8G 存储资源,一段时间以后会发现这个无法满足他要求,那可以给它分配一个更高规格实例。比如说 16 核 32G 这样一个实例,这个是做计算资源升配。第二个问题是日志下沉以及异步回放,TDSQL-C 的日志是通过网络,从计算层下放到存储层。第三个问题是共享分布式存储,我们 TDSQL-C 地域的所有实例,在底下是共享一个分布式存储,可以动态向一个实例里添加资源。最后一个是后台持续备份,我们的后台有定期备份任务,将日志和数据备份到地上存储上面。

PG 实例,包括主实例和读实例,主的负责读写,只读是负责数据读取。在 PG 下有一个叫 CynosStore Agent 组件,它主要负责存储层进行通信,包括主的写日志、读页面,从的是读页面。再向下是存储服务或叫 CynosStore,采用的是 RAPS 结构,一主两层。右边是集群管理服务,是对 CynosStore 里存储节点进行管理服务。包括故障迁移是一个节点发生故障然后迁到其它节点功能。

另外一个当需要扩展资源时,也是由这个集群管理服务来实现。下面是对象存储,我们会定期在对象存储备份日志和数据。这里涉及几个核心架构:一个是日志下沉,计算节点产生的日志是通过网络,下沉到存储层。存储层是通过异步方式来回访日志,导出页面上去。另外是我们会提供一个多版本读的能力,PG 上层可能会有多个 Buffer 会话去读这个数据,每个开始时间不一样,可能会读到不同的版本。

介绍一下日志下沉、异步回放这部分。这里边涉及几个概念:

第一个是数据原子修改,我们叫 MTR。当中有很多情况是一个数对应一个数据库要修改多个页面,例如想对数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值