MySQL + CloudCanal + Iceberg + StarRocks 构建全栈数据服务

news2025/6/2 15:32:32

简述

在业务数据快速膨胀的今天,企业对 低成本存储实时查询分析能力 的需求愈发迫切。

本文将带你实战构建一条 MySQL 到 Iceberg 的数据链路,借助 CloudCanal 快速完成数据迁移与同步,并使用 StarRocks 完成数据查询等操作,构建涵盖 关系型数据库服务、实时数据分析、大数据存取 的全栈数据架构。

Iceberg 简介

Iceberg 是什么?

Iceberg 是一种开放的数据表格式,包含 Catalog数据存储 两种子概念。

Catalog 可简单理解为对数据的结构描述,如表列表、对应的表属性、包含的列、列类型、列长度等信息,这也是之所以为表格的原因。

数据存储 即以上 Catalog 数据 以及 实际业务数据 所组成的文件存放位置。

Iceberg 有什么特点?

Iceberg 架构开放,定义了 Catalog文件格式数据存储数据访问 等标准,从而被众多第三方组件实现和支持。

  • Catalog: AWS Glue、Hive、Nessie、Jdbc,或者专用的 Catalog 服务通过 Rest 方式读写。
  • 数据文件格式: Parquet、ORC、Avro 等。
  • 数据存储: AWS S3、Azure Blob Storage、MinIO、HDFS、Posix FS 等各类云存储或本地存储。
  • 数据访问: 可通过类似 StarRocks、Doris、ClickHouse 等实时数仓,Spark、Flink、Hive 等流/批计算引擎检索、分析、操作数据和结构。

除了 开放 这一大特点,Iceberg 同时在 超大数据量存储准实时增、删、改 之间实现了平衡。

下表从数据容量、增量实时性、事务支持、存储成本、架构开放度 5 个纬度,对各类数据库进行对比(仅作参考,欢迎讨论):

数据库种类关系型数据库实时数据仓库传统大数据数据湖
数据容量几 TB 级别百 TB 级别PB 级别PB 级别
增量实时性业务级别增量写入,延迟毫秒级别,万级别 QPS业务级别增量写入,延迟秒到分钟级别,千级别 QPS运维级别增量写入,延迟小时到天级别,个位数 QPS业务级别增量写入,延迟分钟级别,个位数 QPS(攒批)
事务支持ACID 强一致ACID 强一致或最终一致
存储成本高或很高很低
架构开放度中(存算分离)

从上表来看,使用 Iceberg,即可得到一个 低成本超大数据存储容量丰富数据检索分析工具的数据库,从某种意义上来说,可以作为传统大数据系统的换代升级产品。

当然得益于其架构的开放性,还可以不断探索更多的数据使用场景。

CloudCanal 技术亮点

典型 Catalog 和存储支持

CloudCanal 支持 Iceberg 3 种 Catalog 和 2 种存储方式,搭配关系为

  • AWS Glue + AWS S3
  • Nessie + MinIO / AWS S3
  • Rest + MinIO / AWS S3

对于全栈数据上云,AWS RDS + EC2 部署 CloudCanal + AWS Glue + AWS S3 即可构建。

对于全私有数据,自建关系型数据库 + 虚拟机部署 CloudCanal + Nessis/Rest Catalog + MinIO 则可快速达成。

数据迁移同步一体化

对于数据同步开始之前的繁重工作,CloudCanal 一直尝试利用自身的数据库知识,实现结构准备、历史数据迁移全自动化。

对于 Iceberg 这类非传统意义数据库交互的产品,CloudCanal 也实现了数据迁移同步的自动化流程,包括结构定义转换、类型映射、约束清理、类型长度适配等工作,都可在 CloudCanal 一站式完成。

全栈数据服务架构总览

本次构建的数据服务链路包含 4 大组件:

MySQL → CloudCanal → Iceberg (Glue + S3) → StarRocks
  • MySQL: 关系型数据库,源数据产生地。
  • CloudCanal: 数据迁移同步平台,支持结构转换、类型映射、全量+增量同步。
  • Iceberg (AWS Glue + S3): 数据湖存储 + 元数据管理。
  • StarRocks: 支持实时查询的分析型数据库,用于数据服务出口。

操作示例

前置准备

  1. 下载安装 CloudCanal 私有部署版本。
  2. 准备数据源:
  • 源端:自建 MySQL
  • 目标端:Iceberg (AWS Glue + S3)

添加数据源

  1. 登录 CloudCanal 平台,点击 数据源管理 > 添加数据源,添加 2 个数据源。
  2. 添加 Iceberg 所要填写的信息如下(<>内按实际情况替换)。
  • 网络地址:本例填写 AWS Glue 服务地址。
    glue.<aws_glue_region_code>.amazonaws.com
    
  • 版本:保持默认值即可。
  • 描述:用于辨别实例用途。
  • 额外参数
    • httpsEnabled:打开开关,即设置为 true。
    • catalogName:设置一个意义明确的名字,如 glue_<biz_name>_catalog。
    • catalogType:设置为 GLUE。
    • catalogWarehouse:元数据和数据文件最终存放位置,如 s3://<biz_name>_iceberg。
    • catalogProps:参考如下
      {
        "io-impl": "org.apache.iceberg.aws.s3.S3FileIO",
        "s3.endpoint": "https://s3.<aws_s3_region_code>.amazonaws.com",
        "s3.access-key-id": "<aws_s3_iam_user_access_key>",
        "s3.secret-access-key": "<aws_s3_iam_user_secret_key>",
        "s3.path-style-access": "true",
        "client.region": "<aws_s3_region>",
        "client.credentials-provider.glue.access-key-id": "<aws_glue_iam_user_access_key>",
        "client.credentials-provider.glue.secret-access-key": "<aws_glue_iam_user_secret_key>",
        "client.credentials-provider": "com.amazonaws.glue.catalog.credentials.GlueAwsCredentialsProvider"
      }
      

创建任务

  1. 点击 同步任务 > 创建任务

  2. 选择源和目标实例,并分别点击 测试连接。其中 Iceberg 数据源 结构迁移属性配置 推荐如下:

    {
      "format-version": "2",
      "parquet.compression": "snappy",
      "iceberg.write.format": "parquet",
      "write.metadata.delete-after-commit.enabled": "true",
      "write.metadata.previous-versions-max": "3",
      "write.update.mode": "merge-on-read",
      "write.delete.mode": "merge-on-read",
      "write.merge.mode": "merge-on-read",
      "write.distribution-mode": "hash",
      "write.object-storage.enabled": "true",
      "write.spark.accept-any-schema": "true"
    }
    
  3. 功能配置 页面,选择 增量同步,并勾选 全量初始化

  4. 表&action过滤 页面,选择需要迁移同步的表,可同时选择多张。

  5. 数据处理 页面,保持默认配置。

  6. 创建确认 页面,点击 创建任务,开始运行。
    请添加图片描述

验证数据(接入 StarRocks)

  1. 造增删改数据。
    请添加图片描述

  2. 停止造数据。

  3. 创建一个按量 Aliyun EMR for StarRocks,添加 AWS Glue 的 Iceberg Catalog 并查询。

  • StarRocks 中添加 External Catalog 并设置查询环境。

    CREATE EXTERNAL CATALOG glue_test
    PROPERTIES
    (
      "type" = "iceberg",
      "iceberg.catalog.type" = "glue",
      "aws.glue.use_instance_profile" = "false",
      "aws.glue.access_key" = "<aws_glue_iam_user_access_key>",
      "aws.glue.secret_key" = "<aws_glue_iam_user_secret_key>",
      "aws.glue.region" = "ap-southeast-1",
      "aws.s3.use_instance_profile" = "false",
      "aws.s3.access_key" = "<aws_s3_iam_user_access_key>",
      "aws.s3.secret_key" = "<aws_s3_iam_user_secret_key>",
      "aws.s3.region" = "ap-southeast-1"
    )
    
    set CATALOG glue_test;
    
    set global new_planner_optimize_timeout=30000;
    
  • MySQL 数据量
    请添加图片描述

  • Iceberg 数据量
    请添加图片描述

总结

通过 CloudCanal,你可以轻松打通 MySQL 与 Iceberg 之间的实时同步通道,并结合 StarRocks 实现高效查询,实现实时数据服务闭环,打造真正的全栈数据结构解决方案。

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

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

相关文章

截屏精灵:轻松截屏,高效编辑

在移动互联网时代&#xff0c;截图已经成为我们日常使用手机时的一项基本操作。无论是记录重要信息、分享有趣内容&#xff0c;还是进行学习和工作&#xff0c;一款好用的截图工具都能极大地提升我们的效率。截屏精灵就是这样一款功能强大、操作简单的截图工具&#xff0c;它不…

【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议

目录 1. 基本概念1.1 基本概念1.2 web应用程序1.3 静态web1.4 动态web 2. web服务器3. tomcat详解3.1 安装3.2 启动3.3 配置3.3.1 配置启动的端口号3.3.2 配置主机的名称3.3.3 其他常用配置项日志配置数据源配置安全配置 3.4 发布一个网站 4. Http协议4.1 什么是http4.2 http的…

云计算Linux Rocky day02(安装Linux系统、设备表示方式、Linux基本操作)

云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09; 目录 云计算Linux Rocky day02&#xff08;安装Linux系统、设备表示方式、Linux基本操作&#xff09;1、虚拟机VMware安装Rocky2、Linux命令行3、Linux Rocky修改字体大小和背景颜…

在 ODROID-H3+ 上安装 Win11 系统

在 ODROID-H3 上安装 Windows 11 系统。 以下是完整的步骤&#xff0c;包括 BIOS 设置、U 盘制作、安装和驱动处理&#xff0c;全程不保留之前的系统数据。 ✅ 准备工作 1. 准备一个 ≥8GB 的 USB 启动盘 用另一台电脑制作 Windows 11 安装盘。 &#x1f449; 推荐工具&…

使用el-input数字校验,输入汉字之后校验取消不掉

先说说复现方式 本来input是只能输入数字的&#xff0c;然后你不小心输入了汉字&#xff0c;触发校验了&#xff0c;然后这时候&#xff0c;你发现校验取消不掉了 就这样了 咋办啊&#xff0c;你一看校验没错啊&#xff0c;各种number啥的也写了,发现没问题啊 <el-inputv…

Docker容器启动失败的常见原因分析

我们在开发部署的时候&#xff0c;用 Docker 打包环境&#xff0c;理论上是“我装好了你就能跑”。但理想很丰满&#xff0c;现实往往一 docker run 下去就翻车了。 今天来盘点一下我实际工作中经常遇到的 Docker 容器启动失败的常见原因&#xff0c;顺便给点 debug 的小技巧&a…

立志成为一名优秀测试开发工程师(第七天)——unittest框架的学习

目录 unittest框架的学习 一、测试类的编写 创建相关测试类cal.py、CountTest.py 二、常见断言方法 使用unittest单元测试框架编写测试用例CountTest.py 注意&#xff1a;执行的时候光标一定要放在括号后面&#xff0c;鼠标右键运行 三、对测试环境的初始化和清除模块…

论坛系统(4)

用户详情 获取用户信息 实现逻辑 ⽤⼾提交请求&#xff0c;服务器根据是否传⼊Id参数决定返回哪个⽤⼾的详情 1. 不传⽤⼾Id&#xff0c;返回当前登录⽤⼾的详情(从session获取) 2. 传⼊⽤⼾Id&#xff0c;返回指定Id的⽤⼾详情(根据用户id去查) 俩种方式获得用户信息 参…

力扣面试150题--二叉树的层平均值

Day 54 题目描述 思路 初次做法&#xff08;笨&#xff09;&#xff1a;使用两个队列&#xff0c;一个队列存放树的节点&#xff0c;一个队列存放对应节点的高度&#xff0c;使用x存放上一个节点&#xff0c;highb存放上一个节点的高度&#xff0c;sum存放当前层的节点值之和…

【Doris入门】Doris初识:分布式分析型数据库的核心价值与架构解析

目录 1 Doris简介与核心价值 2 Doris架构深度解析 2.1 Frontend&#xff08;FE&#xff09;架构 2.2 Backend&#xff08;BE&#xff09;架构 3 Doris核心概念详解 3.1 数据分布模型 3.2 Tablet与Replica 3.3 数据模型 4 Doris关键技术解析 4.1 存储引擎 4.2 查询执…

数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP

数据结构与算法学习笔记----动态规划区间DP author: 明月清了个风 first publish time: 2025.5.26 ps⭐️区间DP的特征在于子结构一般是一个子区间上的问题&#xff0c;涉及到的问题也非常多&#xff0c;如环形区间&#xff0c;记录方案数&#xff0c;高精度&#xff0c;二维…

从0到1搭建AI绘画模型:Stable Diffusion微调全流程避坑指南

从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 从0到1搭建AI绘画模型&#xff1a;Stable Diffusion微调全流程避坑指南摘要引言一、数据集构…

从一到无穷大 #46:探讨时序数据库Deduplicate与Compaction的设计权衡

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言Compaction AlgorithmsCompact Execution Flow Based On VeloxLocalMergeSource的…

vue3 导出excel

需求&#xff1a;导出自带格式的excel表格 1.自定义二维数组格式 导出 全部代码&#xff1a; <el-button click"exportExcel">导出</el-button> const exportExcel () > {const data [[商品, 单价, 数量, 总价],[A, 100, 1.55, { t: n, f: B2*C2…

day024-网络基础-TCP与UDP、DNS

文章目录 1. 李导推荐书籍2. OSI七层模型2.1 传输层2.2 网络层2.2.1 问&#xff1a;两端处于不同局域网的设备怎么网络通信&#xff1f; 2.3 数据链路层2.4 物理层2.5 图解OSI七层模型 3. 数据传输模式3.1 全双工3.2 半双工3.3 单工 4. TCP 3次握手4.1 抓包 5. TCP 4次挥手5.1 …

专场回顾 | 重新定义交互,智能硬件的未来设计

自2022年起&#xff0c;中国智能硬件行业呈现出蓬勃发展的态势&#xff0c;市场规模不断扩大。一个多月前&#xff0c;“小智AI”在短视频平台的爆火将智能硬件带向了大众视野&#xff0c;也意味着智能硬件已不再仅仅停留在概念和技术层面&#xff0c;而是加速迈向实际落地应用…

WPS 免登录解锁编辑

遇到 WPS 需要登录才能启用编辑功能&#xff1f; 如何免登录使用编辑功能&#xff1f; 方法一 解锁方法 1、关闭 WPS&#xff1b; 2、桌面右键→ “新建”→“文本文档”&#xff0c;粘贴以下内容&#xff08;见最下面&#xff09;&#xff1b;编码保持默认&#xff08;ANSI …

技术分享 | Oracle SQL优化案例一则

本文为墨天轮数据库管理服务团队第70期技术分享&#xff0c;内容原创&#xff0c;作者为技术顾问马奕璇&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题概述 开发人员反映有条跑批语句在测试环境执行了很久都没结束&…

华为手机用的时间长了,提示手机电池性能下降,需要去换电池吗?平时要怎么用能让电池寿命长久一些?

华为手机提示电池性能下降时&#xff0c;是否需要更换电池以及如何延长电池寿命&#xff0c;取决于电池老化程度和使用习惯。以下是具体分析和建议&#xff1a; 一、是否需要更换电池&#xff1f; 电池健康度低于80% 如果手机提示“电池性能下降”&#xff0c;通常意味着电池…

BERT***

​​1.预训练&#xff08;Pre-training&#xff09;​​ 是深度学习中的一种训练策略&#xff0c;指在大规模无标注数据上预先训练模型&#xff0c;使其学习通用的特征表示&#xff0c;再通过​​微调&#xff08;Fine-tuning&#xff09;​​ 适配到具体任务 2.sentence-lev…