StarRocks 跨集群数据迁移,SDM 帮你一键搞定!

作者:严祥光,StarRocks Active Contributor,StarRocks 存算分离核心研发,在社区中主要负责数据导入、跨集群同步、数据迁移和容灾等工作。

有时候,你可能会为以下需求而苦恼,苦苦搜索更好的解决方案:

情景一: 想象一下,你急需 验证新版本 但又不能影响线上已有集群的运行。你需要在不影响现有集群的基础上将数据迁移到新集群以进行验证。

情景二: 听说 StarRocks 新推出的 存算分离 模式超级给力,你肯定也想试试水,为业务降本增效吧?但问题来了,怎么把现有的数据平滑而高效地迁移到这个新模式下呢?

情景三: 你想实现 读写分离 ,即主集群写入数据后,自动同步到备集群,然后在备集群进行查询。

情景四: 你的业务需要实现 跨机房灾备 ,这样即使主机房集群挂了,也可以从其他机房的备集群快速启动。

我相信,正在使用 StarRocks 的你或许也正经历这些复杂的需求。别担心,今天我要教大家如何使用好 StarRocks 自带的 跨集群迁移解决方案- StarRocks Data Migration。 掌握了它,数据迁移将变得更轻松而高效,让你的数据处理如同行云流水般顺畅。

StarRocks Data Migration 简介

StarRocks Data Migration 是 StarRocks 推出的 跨集群 数据 同步 工具 借助该工具,你可以灵活的配置要同步的库、表、甚至整个集群的数据,然后无需人工干预,数据会按照配置好的规则自动从源集群同步到目标集群,而且效率非常高。StarRocks Data Migration 具有以下特点:

  1. 全量与增量同步支持:对于每张要同步的表,首先进行一次全量同步,然后周期性进行增量同步。

  2. 支持多种同步模式: 不仅 支持从存算一体集群同步到存算一体集群, 支持存算一体到存算分离集群 同步。 未来还将支持存算分离到存算一体的同步。

  3. 源集群 0 侵入:相较于市面上一些基于 Change log 的跨集群数据同步方案,StarRocks Data Migration 不需要用户升级源集群版本,也不会在同步过程中产生不必要的 Change log,因此源集群无需任何改变即可轻松完成数据迁移。

  4. 源集群影响小:通过设计多级限流机制,最大程度地保护源集群,避免影响其正常负载,用户可以放心将其用于生产环境。

  5. 同步效率高:数据同步采用直接点对点拷贝物理文件的方式,因此具有非常高的效率,具体的同步性能测试结果请参考后文。

关于 StarRocks Data Migration 的具体使用方法,请参考官方文档:https://docs.starrocks.io/zh/docs/administration/data_migration_tool

性能

同步效率是数据迁移同步中最重要的指标之一,因此我们进行了专项测试,以下是测试结果的展示。

测试环境

我们选择在阿里云上部署两个集群测试迁移速度,两个集群的规格如下:

td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}
节点角色节点数量实例规格磁盘大小(G)磁盘数量磁盘类别磁盘性能级别
FE1ecs.c5.16xlarge10241cloud_essdPL1
BE10ecs.g5.16xlarge20483cloud_essdPL1

测试过程中向源集群导入 SSB 1T 和 TPCH 1T 数据集,完成数据同步后,我们在目标集群查看每个表的同步事务的开始时间与提交时间,进而计算同步耗时和同步速度。

SSB 迁移

表名数据量同步开始同步结束同步耗时同步速度
customer4.056 GB11:30:0411:30:084s1.014 GB/s
dates100.438 KB11:28:0411:28:062s50.219 KB/s
lineorder457.092 GB11:26:0411:27:0561s7.4933 GB/s
part54.118 MB11:24:0411:24:062s27.059 MB/s
supplier274.588 MB11:22:5411:22:562s137.294 MB/s

同步速度最快的为 lineorder 表: 7.4933 GB /s

TPCH 迁移

表名数据量同步开始同步结束同步耗时同步速度
customer38.611 GB12:23:0512:23:1712s1.60879 GB/s
lineitem580.284 GB12:15:0512:16:2984s6.90814 GB/s
nation6.343 KB12:17:0512:17:072s3.1715 KB/s
orders186.446 GB12:21:0512:21:3227s6.9054 GB/s
part20.968 GB12:19:0512:19:127s2.99543 GB/s
partsupp121.661 GB12:13:1512:13:4530s4.05537 GB/s
region2.458 KB12:23:0512:23:072s1.229 KB/s
supplier2.453 GB12:17:0512:17:083s0.81767 GB/s

同步速度最快的为 lineitem 表: 6.90814 GB/s

原理

在这里插入图片描述

看完了 StarRocks Data Migration 工具的介绍和性能测试之后,接下来要带大家了解它是怎么实现的。

StarRocks Data Migration Tool 会周期性地获取源集群和目标集群的元数据进行对比,根据比对结果在目标集群创建所需的库、表、分区等,并提交数据同步任务。

数据同步以表为单位,每次同步启动一个事务,保证了同步任务的原子性,要么全部成功,要么全部失败,不会出现部分成功部分失败的情况,确保了数据一致性。

目标集群接受数据同步任务后,首先开启一个事务,然后向相关的 BE 下发同步任务。BE 收到任务后,先请求源集群进行一次快照,防止同步过程中数据被清理。目标集群在高负载情况下会拒绝新的数据同步任务,以进行自我保护。

快照是一个轻量级操作,不会影响源集群。一旦完成快照,目标集群就可以拷贝快照中的数据文件。数据拷贝采用 BE 之间的点对点方式,速度快,效率高,并在拷贝过程中自动限流,避免对源集群产生过大压力。

当本次同步任务的所有数据拷贝完成后,FE 即可提交同步事务,使本次同步数据立即生效。同时,事务提交后,源集群上生成的快照也会被清理,确保数据同步后的环境整洁。

使用指南与注意事项

  1. 源集群与目标集群的 BE 节点需要保证网络能够互通,因为涉及到数据拷贝。

  2. 数据同步不会自动结束,如果源集群持续有新数据写入,数据同步会一直进行。

  3. 数据同步过程中,可以查询目标集群中同步的表,但不要写入数据,否则会导致目标集群数据与源集群不一致。

  4. StarRocks Data Migration 是 StarRocks 集群间的同步工具; 如果你需要将外部数据库数据导入StarRocks 你需要了解另一个工具:StarRocks migration tool(SMT)。

StarRocks migration tool(简称 SMT)是 StarRocks 提供的数据迁移工具,用于将源数据库的数据通过 Flink 导入 StarRocks。 其主要有两个功能:

  • 根据源数据库和目标 StarRocks 集群的信息,生成 StarRocks 建表语句。

  • 生成 Flink 的 SQL 客户端 可执行的 SQL 语句,以提交同步数据的 Flink job,简化链路中全量或增量数据同步流程。

文档链接:https://docs.starrocks.io/zh/docs/integrations/loading_tools/SMT/

更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/33412/8da64

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录创建项目java version 没有8的问题

问题: 解决方案 java版本选择21(21可以兼容jdk8) SpringBoot选择3.2.5 进入项目后手动在pom.xml中修改版本

基于stm32的spi从机实验HAL库编程

目录 基于stm32的spi从机实验HAL库编程前言业务场景硬件设计接线配置swd接口配置spi配置DMA配置中断配置系统时钟配置工程生成代码写点从机代码上机现象后记本文使用的测试工程 基于stm32的spi从机实验HAL库编程 前言 在微控制器的世界中,串行外设接口(SPI)是一种…

java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节,所以加了些代码,使得交互更加的具体有趣! 效果 大家可以多运行几次代码,得到不同的战况!! 代码实现 1.bean类 import java.util.Random;public class TextGame {private Strin…

ardupilot的固定翼飞行模式

飞行模式 APM所有的飞行模式都在对应的机型的文件夹下的mode.h里面有定义,针对于不同的模型,功能函数在基类中Mode中都是以纯虚函数实现了, 然后在继承的子类中重新实现它,以实现多态。 takeoff模式 参见网址在 ArduPlane 4.0 及更高版本中,自动起飞本身也是一种模式(…

文件操作

前言: 文件内容属性 要向访问文件就要打开文件——>用进程来打开——>要把文件先加载到内存中——> 一个进程可以打开多个文件,OS中也有可能多个进程打开了多个文件 文件以多,就需要进行管理,——先描述再组织 没有被打开…

【图文教程】PyCharm安装配置PyQt5+QtDesigner+PyUic+PyRcc

这里写目录标题 PyQt5、Qt Designer、PyUic、PyRcc简介(1)下载安装PyQt5(2)打开designer.exe所在位置(3)在PyCharm中配置QtDesigner(4)验证QtDesigner是否配置成功(5&…

thinkphp6使用layui分页组件做分页效果

博主用的是layui2.9.8的版本,但这个版本的分页组件是动态效果的,但我需要的是静态分页,所以我自己封装了一个生成layui的分页代码生成代码。代码如下: 1、先创建文件,路径是extent/layui/LayuiPage.php,加…

HashMap前世今生

概述 HashMap是我们常用的一种数据结构,他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树,当链表数量大于8时,将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

达梦数据库限制用户登录IP测试

达梦数据库创建用户时可以限制登录ip和时间段。 创建测试测试用户 create user test1 identified by Test_1234 ALLOW_IP "192.168.100.101"; 限定该用户只能通过192.168.100.101地址登录数据库 连接测试 上图可见,192.168.100.101客户端可以连接上19…

纯血鸿蒙APP实战开发——Grid和List内拖拽交换子组件位置

Grid和List内拖拽交换子组件位置 介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子…

搭建产品帮助体系指南干货在这里

产品的成功不仅需要它的功能强大,还要让用户对产品有一个良好的体验。一个完善全面的产品帮助体系,能够很大程度地提升用户体验,帮助用户更好地理解和使用产品。如何搭建一个高效、实用的产品帮助体系呢?下面,我将为你…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址(Tomcat官网)http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录(例如:D盘,目录不要有中文) D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 (…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中,会遇到有UI相似的结构,如果每个UI都单独声明一份,会产生大量冗余代码,不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗?在快节奏的现代生活中,思维导图作为一种高效的信息组织和表达工具,越来越受到人们的青睐。随着人工智能(AI)技术的不断发展,AI思维导图软件也应运而生,它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象: 了解需求并明确测试目的,如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据,测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述: 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源,然后重新打开打印机。 故障检修及分析: 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

Segmentation fault (core dumped)排查

先泼盆冷水,这个问题比较棘手,有的能通过重装opencv相关包修复,有的可能还是直接换一个没问题的环境比较快…… 我最后是没有解决的,折腾了几个小时后,还是听同事的话,把docker镜像重启了,幸好…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合,由于我们是把重复的代码写到方法当中,以后要用直接调用方法即可,不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码,我们也只要修改一处即可&#xff0…

JavaSwing技术实现一个电子表程序

使用JavaSwing技术实现一个简单的电子表盘,如下所示。 下载链接 有兴趣的读者可以点击链接下载,博主承诺绝对真实有效。

bert-NER 转化成 onnx 模型

保存模型 加载模型 from transformers import AutoTokenizer, AutoModel, AutoConfigNER_MODEL_PATH ./save_model ner_tokenizer AutoTokenizer.from_pretrained(NER_MODEL_PATH) ner_config AutoConfig.from_pretrained(NER_MODEL_PATH) ner_model AutoModelForTokenCl…