-
Notifications
You must be signed in to change notification settings - Fork 11
zsongshu edited this page Apr 29, 2022
·
3 revisions
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充当了异构数据库系统间的传输管道,把源数据库产生的Binlog近实时地备份到目标数据库系统。
一方面在源数据库被破坏的情况下,可以使用目标数据库的数据继续提供服务。
另一方面可以把缓解源数据库的查询压力,通过读取目标数据库获取用户期望的结果。
还可以拓展源数据库的计算能力,通过多种目标数据库引擎,提供更多样化的数据处理能力。
以Mysql为例,Ptubes可以定期产生一个完整的数据镜像(Snapshot),并使用临近的Snapshot叠加上增量Binlog,可以构建出任意时刻的完整数据。
Ptubes具有解析以及反转Binlog的能力,可以把Binlog转换成一条逆向操作的SQL,把数据库恢复到历史的任意时刻。
发现特定的数据发生变更的情况下,Ptubes充当了消息服务的角色,可以把该变更作为消息发出来并保证消息不丢失,并触发执行后续流程中的一个或多个服务。
可广泛的用于服务间最终一致、事件通知等场景。
通过Ptubes,可以把用户写入数据库中的数据,以近实时的同步到几千公里外的另一个数据库,使得数据库具备跨机房、甚至跨城市的容灾能力。