如何将PostgreSQL的数据实时迁移到SelectDB?

news2024/11/16 21:42:52

PostgreSQL 作为一个开源且功能强大的关系型数据库管理系统,在 OLTP 系统中得到了广泛应用。很多企业利用其卓越的性能和灵活的架构,应对高并发事务、快速响应等需求。

然而对于 OLAP 场景,PostgreSQL 可能并不是最佳选择。

为了实现庞大规模数据的数据分析场景,企业会选择使用专业数据仓库产品。例如:ClickHouse、Doris、SelectDB、Greenplum、Redshift 等。选择数仓不得不考虑查询性能和存储效率,而 SelectDB 在这两个方面表现优异,在查询性能方面,SelectDB 采用先进的列存储和向量化执行引擎,能够高效处理复杂查询,提供卓越的查询性能;在存储效率方面,SelectDB 的列存储结构和高效压缩算法,大大减少了磁盘占用和 I/O 开销。

PostgreSQL

本文以 SelectDB 为例,介绍如何把 PostgreSQL 的数据迁移到 SelectDB 中。

数据迁移难在哪?

想象一下,如果你现在要做 PostgreSQL 到 SelectDB 的数据迁移,你需要做哪些事情?

  • 表的初始化:SelectDB 端是不是要先创建一个和源端一致的表结构?然后才能从源端接收数据。手动进行初始化的情况下,如果 PostgreSQL 端有成百上千个表,你又该如何应对?

  • 数据结构的映射:PostgreSQL 和 SelectDB 两者数据结构不同,这点很重要,需要确保数据从源端同步过去后还是完整的。很负责任地说一句,除非你对两者的数据模型的理解非常极致,且保证绝对不出错,才可能达到理想的结果。

  • 实时同步的速率:让 SelectDB 端的数据时刻与源端的 PostgreSQL 保持一致。通过 SelectDB 进行数据实时分析的大前提是,当前 SelectDB 中的数据必须是最新的,分析结果才有意义。

  • 源端 DDL 语句的联动:实时捕获源端 PostgreSQL 的 DDL 变更,并及时在目标端的 SelectDB 中同步执行。这绝对不能算是一个轻松的工作,大多数情况下,源端的数据结构发生变化时,同步链路会中断,导致迁移失败。

  • 同步任务的稳定性:试想如果需要长期在线同步 PostgreSQL 和 SelectDB,什么最重要?当然是同步任务的稳定性。你得考虑在网络、服务器出现异常的情况下,应该怎么保证任务可用。

这些问题很关键,依靠手动或者简单的脚本,迁移效果肯定是不太好的 ,那么选择一个对的工具就至关重要了。

其实对于上述问题,NineData 有绝对的发言权,我们先来看看它的特性:

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

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

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

任务高可用机制:针对 PostgreSQL 主从切换、数据源异常、网络抖动、服务器异常等各种故障场景下,能够自动发现异常,并进行自诊断及自修复;同时,针对无法自愈的场景,在任务中提供了丰富的修复手段。

我们来实际演示一下。

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

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

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

步骤二:配置同步链路

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

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

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

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

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

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

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

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

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

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

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

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

2. 单击右上角的配置告警。

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

总结

其实像异构数据迁移这样的事,只要选对了工具,真的没那么难,属于有手就行。就好像本文的 PostgreSQL 迁移到 SelectDB 的场景,一顿操作下来,任务马上就起来了,数据也立刻就过去了,新的增量数据一眨眼功夫就可以在 SelectDB 端查询到了,回想一下好像自己什么也没干,但却发现数据分析的前置工作都已经完成了。

实际的配置过程,远没有你看完这篇文章的时间长,也远没有你想象的复杂。看我说产品如何如何不如直接上手来得直观。所以如果企业有这块的需求,不妨直接尝试,NineData 支持数十种不同数据源的数据实时同步、周期性数据集成场景。全量是免费的,还赠送一条增量链路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(其三)--栈与队列

目录 5.栈 5.1 栈的基本操作 5.2 各种栈 (1).顺序栈 i.普通顺序栈 ii.共享栈 iii.关于销毁 (2).链栈 6.队列 6.1 队列的基本操作 6.2 各种队列 (1).循环队列 i.代码 ii.另外一种写法 &#xff08…

[Latex美化]-表格加底色,添加灰色美化表格,便于阅读

1 导入库 \usepackage{xcolor} \usepackage{colortbl, booktabs} 2 插入指令(指定行前) \rowcolor{gray!30} 具体代码如下 效果如下

循环神经网络RNN介绍

文章目录 1、学习介绍2、RNN的基本结构2.1、图例2.2、公式2.3、公式计算示例2.3.1、给定参数2.3.2、时间步计算 3、序列依赖与梯度消失/爆炸3.1、序列依赖3.2、梯度消失与爆炸3.3、总结 4、传统的前馈神经网络4.1、结构4.2、工作原理4.3、特点4.4、局限性 5、CNN与RNN的关系5.1…

【建造者模式】全面解析与最佳实践:打造复杂对象的蓝图(构建复杂对象的艺术)

文章目录 Java中的建造者模式:全面解析与最佳实践1. 引言2. 建造者模式概念定义与用途适用场景解决的问题 3. 建造者模式原理主要角色解释工作流程UML图和时序图 4. 建造者模式在Java中的实现逐步构建示例程序1. 创建抽象建造者类2. 实现具体建造者类3. 设计产品类4…

如何在厂商软件不提供二次开发资源的情况下实现LabVIEW开发

在遇到厂商提供的软件不支持二次开发资源时,如果需要使用LabVIEW进行开发,通常面临以下几个挑战:设备通讯接口封闭、协议不公开、厂商技术支持有限等。这些问题需要综合考虑并制定解决方案,以下是详细的分析: 1. 了解原…

权限模块开发+权限与角色关联(完整CRUD)

文章目录 🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)🌟 亮点功能📦 spring cloud模块概览常用工具 🔗 更多信息1.easycode生成代码1.配置2.AuthPermissionDao.java剪切到mapp…

SharpLab:.Net反编译工具,方便实时查看反编译后的代码!

C#提供了很多高级语法,很多都是语法糖。这些语法糖对于初学者来说,很多无法理解。 下面推荐一个开源项目,它能够让我们,实时查看编译过程、生成的中间语言(IL)以及反编译后的代码。 01 项目简介 SharpLa…

C语言 ——深入理解指针(2)

目录 1. 数组名的理解2. 二级指针3. 指针数组4. 字符指针变量5. 数组指针变量6. 函数指针变量7. 函数指针数组 1. 数组名的理解 这里我们使用 &arr[0] 的方式拿到了数组第一个元素的地址,但是其实数组名本来就是地址,而且是数组首元素的地址&#x…

TabLayout使用以及自定义tab标签

<?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tool…

YoloV10 论文翻译(Real-Time End-to-End Object Detection)

​摘要 近年来&#xff0c;YOLO因其在计算成本与检测性能之间实现了有效平衡&#xff0c;已成为实时目标检测领域的主流范式。研究人员对YOLO的架构设计、优化目标、数据增强策略等方面进行了探索&#xff0c;并取得了显著进展。然而&#xff0c;YOLO对非极大值抑制&#xff0…

01【功能项目】之【主角射线点击导航】

首先创建一个Unity3D的项目 打开资源商店添加一个人物模型 选择一个免费资源主角添加至项目中 在unity中打开后点击下载包 点击导入包 导入成功后会出现在资源包Assets下 右键创建地面 设置地面尺寸 创建一个材料方便给地面调配颜色 选择材料的颜色 将材质拖拽给地面组为组件 将…

double类型 精度丢失的问题

前言 精度丢失的问题是在其他计算机语言中也都会出现&#xff0c;float和double类型的数据在执行二进制浮点运算的时候&#xff0c;并没有提供完全精确的结果。产生误差不在于数的大小&#xff0c;而是因为数的精度。 一、double进行运算时,经常出现精度丢失 0.10.2使用计算…

QTableView使用示例-Qt模型视图代理(Model-View-Delegate)使用示例

模型视图委托&#xff08;MVD&#xff09;是Qt中特有的设计模式&#xff0c;类似MVC设计模式&#xff0c;将MVC设计模式中的Controller当做MVD中的Delegate&#xff0c;两者的概念基本相同。不同的是委托不是独立存在&#xff0c;而是包含在视图里面。 模型视图委托设计模式中&…

#71结构体案例2(三国游戏,冒泡排序)

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <string> using namespace std;//英雄结构体 struct Hero {string name;int age;string gender; };//冒泡排序 void bubbleSort(struct Hero hArray[],int len) {for(int i0;i<len-1;i){for(i…

CentOS 8 本地创建yum源

1.获取iso (有iso就可以建立本地repo) 如CentOS-8.5.2111-aarch64-dvd1.iso 2.解压iso&#xff08;mount挂载就可以吧iso解压到linux某一目录中&#xff09; mkdir /mnt/cdrom mount -o loop ./CentOS-Stream-8-aarch64-20220913-dvd1.iso /mnt/cdrom ls /mnt/cdrom 3.编…

奇偶函数的性质及运算

目录 定义 注意 特征 运算 拓展 定义 设函数f(x)的定义域D&#xff1b; 如果对于函数定义域D内的任意一个x&#xff0c;都有f(-x)&#xff0d;f&#xff08;x&#xff09;&#xff0c;那么函数f&#xff08;x&#xff09;就叫做奇函数。如果对于函数定义域D内的任意一个x…

【前端】 如何在 Vue.js 中使用 Mock 数据:教程与技巧

如何在 Vue.js 中使用 Mock 数据&#xff1a;教程与技巧 在开发过程中&#xff0c;为了测试和开发前端功能&#xff0c;你常常需要用到模拟&#xff08;mock&#xff09;数据。Vue.js 提供了灵活的方式来处理数据请求和更新&#xff0c;但在没有真实后端的情况下&#xff0c;我…

在 VueJS 中使用事件委托处理点击事件(事件委托,vue事件委托,什么是事件委托,什么是vue的事件委托)

前言 在开发 Vue 项目时&#xff0c;我们经常需要处理大量的点击事件。为每个可点击的元素单独添加事件监听器不仅会增加代码的复杂度&#xff0c;还会降低性能。事件委托是一种有效的优化方式&#xff0c;它可以显著减少事件监听器的数量&#xff0c;提高代码的可维护性和执行…

SSM禾泽校园学生商品交易平台-计算机毕设定制-附项目源码(可白嫖)50284

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对禾泽校园学生商品交易平台等问题&#xff0…

部署PXE

一 准备工作 1.rhel7主机 2.开启主机图形init 5 开图形 3.配置网络可用 4.关闭vmware dhcp功能 将VMnet8本地DHCP服务关闭 二 部署kickstart 1.安装kichstart并开启 2.安装httpd并启动 3.测试 4.配置kickstart 左上角文件保存 在vim ks.cfg中配置软件 共享 测试 四 DHCP 1.…