PostgreSQL到Doris的迁移技巧:实时数据同步新选择!

PostgreSQL可以说是目前比较抢手的关系型数据库了,除了兼具多样功能和强大性能之外,还具备非常优秀的可扩展性,更重要的是它还开源,能火不是没有理由的。

虽然PostgreSQL很强大,但是它也有短板,相对于专业的数据分析产品,大致上有下面几点不足:

  • PostgreSQL本身不太适合用于实时数据分析,尽管PostgreSQL具备扩展能力以支持相应能力,但是在处理大量实时数据时性能可能不会非常理想。
  • 作为一个业务系统,PostgreSQL中历史数据的堆积会严重影响数据库的性能,同时大幅增加存储成本,也是一个不得不解决的问题。

而 Doris 就是一个专业的数据分析产品,它是一个实时数仓,海量数据下以亚秒级的速度返回查询结果,同时支持高并发点查询以及高吞吐复杂分析场景,非常适用于实时数据的分析与查询。

因此,我们可以选择Doris搭配PostgreSQL使用,这样就可以相对完美地弥补PostgreSQL的短板。

太棒了~ 目标定下了,那么问题来了...

如何将PostgreSQL的数据实时同步到Doris?

众所周知,在两个毫不相干的数据管理系统之间进行数据同步,特别是实时同步,其复杂程度足以让高级DBA脑瓜疼。因为有几个不得不解决的问题:

表的初始化:在同步数据之前,需要手动在Doris端创建和源端一致的表结构,然后才能从源端接收数据。当源端有大量表且表结构很复杂的情况下,是不是想亖的心都有?

数据结构的映射:两者数据结构不同,怎么确保数据从源端同步过来后的完整性?除非你对两者的数据模型的理解非常极致,且保证绝对不出错,才能达到理想的结果。

实时同步的速率:通过Doris进行数据实时分析的大前提是,当前Doris中的数据必须是最新的,即和源端的PostgreSQL完全一致,分析结果才有意义。要保证这一点,可不是一个轻松的工作。

源端DDL语句的联动:最痛的一个点,如何保证源端的数据结构发生变化时,同步链路不中断?那就需要实时捕获源端PostgreSQL的DDL变更,并及时在目标端的Doris中同步执行。

这些问题如果可以顺利解决,那实时同步工作将会相当丝滑。那么如何解决呢?方法自然是有的,而且丝毫不费力。对于上述 4 个问题,NineData有绝对的发言权,我们先来看看它的特性:

结构复制:基于目标端数据源的特性,自动高效地完成表的创建、数据结构的映射等工作。

复制性能:基于动态攒批、并行复制、Stream Load等技术,复制性能轻松达到200MB/S。

DDL捕获与执行:实时检测源端中的DDL操作,并同步在目标端中执行,保证其他业务变更能够稳定地进行。

轻松解决且非常愉快,下面来看看怎么操作。

步骤一:录入源和目标数据源

登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。

根据页面提示进行配置,然后单击创建数据源完成创建。

步骤二:配置同步链路

登录NineData控制台,单击数据复制>数据复制,然后单击创建复制。

根据页面提示配置复制任务,由于我们想要实现长期的实时数据同步,需要在复制类型处额外勾选增量复制。

配置完成后启动任务,针对您配置的所有同步对象,NineData会先对所有的存量数据进行全量迁移,接下来就是实时同步PostgreSQL中新增的增量数据,所有新写入的数据都将一条不漏地同步到Doris,每当目标端的增量数据追平源端时,任务面板中会显示延迟 0 秒,如下图所示。

步骤三(可选):校验目标端同步数据的完整性

除了同步功能以外,NineData 还提供了同步后源端和目标端同步数据的对比功能,以确保目标端数据的完整性。

登录NineData控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击数据对比页签,并单击开启数据对比(如果步骤二的任务配置中已勾选开启数据一致性对比,则此处直接展示对比结果)。

提示

开启后,系统将自动对比源端和目标端的同步对象,并给出对比结果。

您可以在一段时间后,单击页面中的重新对比,校验最新增量数据的同步结果。

步骤四(可选):配置任务异常告警

由于是长期任务,您可能需要系统实时监控任务状态,在任务有异常时即刻通知您。

登录NineData控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击右上角的配置告警。

输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。

总结

至此,您已经得到了一条长期稳定的 PostgreSQL 到 Doris 的实时同步链路,对于需要使用 Doris 实时分析业务数据的用户来说,这样的链路不可或缺。同时,在把存量的旧数据同步至 Doris 后,就可以在 PostgreSQL 端进行旧数据清理,空出存储空间,特别是对于使用云上资源的企业来说,云资源是较为昂贵的,这样做可以极大程度上降低存储成本,转而投入到更为重要的业务中。


http://www.niftyadmin.cn/n/5461069.html

相关文章

【大数据运维】Hbase shell 常见操作

文章目录 一. DDL1. 表的DDL1.1. 创建表1.2. 删除表 2. 列族的DDL2.1. 增加一个列簇2.2. 删除列族2.3. 修改列族版本(ing) 二. DML1. 插入与更新数据2. 删除数据3. 清空表 三. DQL1. scan:查一批数据1.1. 查询全部1.2. 过滤rowkey1.3. 过滤列…

蓝桥杯:全球变暖(python,BFS,DFS)(栈溢出的处理办法)

图论的经典题型,深度优先搜索和广度优先搜索都可以,但是本题推荐使用广度优先搜索(类似的题最好都用广度优先搜索),因为使用深度优先搜索会爆栈(栈溢出)。本篇博客两种方法都进行讲解&#xff0…

JavaSE day16笔记 - string

第十六天课堂笔记 学习任务 Comparable接口★★★★ 接口 : 功能的封装 > 一组操作规范 一个抽象方法 -> 某一个功能的封装多个抽象方法 -> 一组操作规范 接口与抽象类的区别 1本质不同 接口是功能的封装 , 具有什么功能 > 对象能干什么抽象类是事物本质的抽象 &…

计算机网络—VLAN 间路由配置

目录 1.拓扑图 2.实验环境准备 3.为 R3 配置 IP 地址 4.创建 VLAN 5.配置 R2 上的子接口实现 VLAN 间路由 6.配置文件 1.拓扑图 2.实验环境准备 配置R1、R3和S1的设备名称,并按照拓扑图配置R1的G0/0/1接口的IP地址。 [Huawei]sysname R1 [R1]interface Giga…

YOLOv9改进策略 :主干优化 | ConvNeXtV2:适应自监督学习,让 CNN “再一次强大”?

💡💡💡本文改进内容:完全卷积掩码自编码器框架 ConvNeXt V2,它显著提高了纯convnet在各种识别基准上的性能,包括ImageNet分类,COCO目标检测和ADE20k分割。还提供了各种尺寸的预训练ConvNeXt v2模型,从而在ImageNet上具有76.7%精度的3.7M Atto model和88.9%精度的650…

Java数据结构-链表OJ题

目录 1. 移除链表元素2. 反转链表3. 返回中间结点4. 返回倒数第k个结点5. 合并两个有序链表6. 分割链表7. 回文链表8. 找相交链表的公共结点9. 判断链表是否有环10. 返回链表环的入口 老铁们好,学习完链表这个数据结构之后,怎么能少了OJ题呢?…

上位机图像处理和嵌入式模块部署(qmacvisual测量标定)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在机器视觉中,测量是很重要的一个环节。如果是简单的定位,可能精度要求并不那么严格。但是如果是对产品进行QA测量,需要精确到0.1mm,甚至是0.05mm这样的精度,那就需要对camera…

服务器硬件基础:深入理解构成现代数据中心基石的关键组件

服务器作为现代信息技术基础设施的核心组成部分,是支撑各类网络服务、数据存储、应用程序运行的关键平台。理解服务器硬件的基本知识对于合理配置、维护和优化数据中心性能至关重要。本篇文章将详尽介绍服务器硬件的主要构成部分及其功能特性,旨在为读者…