Skip to content
zsongshu edited this page Apr 29, 2022 · 3 revisions

Overview

Ptubes是一款基于PITR(Point In Time Recovery)方式实现的,解决异构数据库备份及多活的数据容灾平台,可帮助使用者提升数据库的安全性和产品能力。产品由Reader、Storage和SDK三个核心组件构成。

架构图

模块名称 功能介绍
SDK 1.一组实现与Reader组件进行交互的编程接口。
接收到Reader发送的Binlog,使用多种类型数据库客户端(支持多种关系型数据库、KV数据库、消息系统、RPC服务等),将Binlog高效写入下游数据库。
Reader 1.实时抓取源数据库(Mysql、Postgresql等)产生的在线变更日志(下面称为:Binlog)。
2.管理表结构(下面称为:Schema),根据Schema,解析Binlog并提交给Storage。
3.接受来自SDK的网络连接请求,并通过网络连接将Binlog发送给SDK。
4.一个Reader集群可以容纳多个Reader任务,一个Reader任务关联一个数据库集群。
Storage 1.实现数据持久化,支持磁盘、内存、S3等多种存储模式。

Ptubes支持场景

Ptubes提供了数据库变更事件安全备份、高效分发等功能,可广泛应用于数据备份、数据回放、数据恢复、事件驱动、数据库多活等场景。

1.数据备份

1

Ptubes充当了异构数据库系统间的传输管道,把源数据库产生的Binlog近实时地备份到目标数据库系统。
一方面在源数据库被破坏的情况下,可以使用目标数据库的数据继续提供服务。
另一方面可以把缓解源数据库的查询压力,通过读取目标数据库获取用户期望的结果。
还可以拓展源数据库的计算能力,通过多种目标数据库引擎,提供更多样化的数据处理能力。

2.数据回放

2
以Mysql为例,Ptubes可以定期产生一个完整的数据镜像(Snapshot),并使用临近的Snapshot叠加上增量Binlog,可以构建出任意时刻的完整数据。

3.数据恢复

3
Ptubes具有解析以及反转Binlog的能力,可以把Binlog转换成一条逆向操作的SQL,把数据库恢复到历史的任意时刻。

4.事件驱动

4
发现特定的数据发生变更的情况下,Ptubes充当了消息服务的角色,可以把该变更作为消息发出来并保证消息不丢失,并触发执行后续流程中的一个或多个服务。
可广泛的用于服务间最终一致、事件通知等场景。

5.变更实时备份到异构数据源

5
通过Ptubes,可以把用户写入数据库中的数据,以近实时的同步到几千公里外的另一个数据库,使得数据库具备跨机房、甚至跨城市的容灾能力。