Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >外部数据同步(CDC)到StarRocks

外部数据同步(CDC)到StarRocks

原创
作者头像
码之有理
发布于 2025-02-06 09:05:31
发布于 2025-02-06 09:05:31
18800
代码可运行
举报
运行总次数:0
代码可运行

数据CDC通常指的是“数据变更捕获”(Change Data Capture,简称CDC)。这是一个用于捕获和跟踪数据库中数据变化的技术或方法。CDC可以实时或近实时地捕获插入、更新和删除操作,并将这些变化记录下来,以便在数据仓库数据湖或其他数据存储系统中进行同步。

CDC技术在数据集成、数据复制、数据同步数据分析等场景中非常有用。它可以帮助企业保持数据的一致性和完整性,减少数据延迟,并提高数据处理的效率。

常见的CDC实现方式包括:

  1. 触发器(Triggers):在数据库中设置触发器,当数据发生变化时,触发器会自动记录这些变化。
  2. 日志挖掘(Log Mining):通过读取数据库的事务日志来捕获数据变化。
  3. 时间戳(Timestamps):使用时间戳字段来标记数据的最后修改时间,并根据时间戳来捕获变化。
  4. 增量提取(Incremental Extraction):定期扫描数据表,提取自上次扫描以来发生变化的数据。

不同的数据库和数据集成工具可能会提供不同的CDC实现方式和支持。

官方列出的工具:https://docs.starrocks.io/zh/docs/loading/loading_tools/

实时

StarRocks外表

参考:https://juejin.cn/post/7325495640054235162

StarRocks 支持以外部表 (External Table) 的形式,接入其他数据源。外部表指的是保存在其他数据源中的数据表,而 StartRocks 只保存表对应的元数据,并直接向外部表所在数据源发起查询。目前 StarRocks 已支持的第三方数据源包括 MySQL、StarRocks、Elasticsearch、Apache Hive™、Apache Iceberg 和 Apache Hudi。对于 StarRocks 数据源,现阶段只支持 Insert 写入,不支持读取,对于其他数据源,现阶段只支持读取,还不支持写入。 星型模型中,数据一般划分为维度表 (dimension table) 和事实表 (fact table)。维度表数据量少,但会涉及 UPDATE 操作。目前 StarRocks 中还不直接支持 UPDATE 操作(可以通过 Unique/Primary 数据模型实现),在一些场景下,可以把维度表存储在 MySQL 中,查询时直接读取维度表。 在使用 MySQL 的数据之前,需在 StarRocks 创建外部表 (CREATE EXTERNAL TABLE),与之相映射。StarRocks 中创建 MySQL 外部表时需要指定 MySQL 的相关连接信息,如下所示。

注意:MySQL中的DDL语句如修改列,不会同步到StarRocks。

MySQL创建表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `users` (
  `id` int NOT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
SELECT * FROM test_cdc_db.users;

StarRocks创建外表,该表不支持修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE EXTERNAL TABLE mysql_external_table_users
(
  `id` bigint  NOT NULL AUTO_INCREMENT ,
  `name` varchar(45) NOT NULL
)
ENGINE=mysql
PROPERTIES
(
 "host" = "9.135.127.159",
 "port" = "3306",
 "user" = "root",
 "password" = "ZWkcP*5793dYRj",
 "database" = "test_cdc_db",
 "table" = "users"
);

在StarRocks中查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM test_cdc_db.mysql_external_table_users;

Flink CDC

Flink CDC官方文档(以下实验基于该文档):https://nightlies.apache.org/flink/flink-cdc-docs-release-3.0/zh/docs/get-started/quickstart/mysql-to-starrocks/

StarRocks官方文档:https://docs.starrocks.io/zh/docs/loading/Flink_cdc_load/,该文档还基于StarRocks的SMT工具,原理都是一样,只是手动的地方更多,可以控制的细节更多。

注意:MySQL中的DDL语句如修改列,会同步到StarRocks。

推荐使用 Flink 1.14 及以上版本,最低支持 1.11 版本。

Flink CDC Connectors 与 Flink ®的版本对应关系:

Flink CDC版本_ Flink 版本_

1.0.0 1.11.*

1.1.0 1.11.*

1.2.0 1.12.*

1.3.0 1.12.*

1.4.0 1.13.*

2.0.* 1.13.*

2.1.* 1.13.*

2.2.* 1.13.、1.14.

2.3.* 1.13.*、1.14.*、1.15.*、1.16.0

2.4.* 1.13.*、1.14*、1.15.*、1.16.*、1.17.0

Flink版本:https://archive.apache.org/dist/flink/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装Java
# https://www.oracle.com/java/technologies/downloads/?er=221886

SHOW VARIABLES LIKE '%time_zone%';
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';

wget https://archive.apache.org/dist/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz
tar -xf flink-1.18.0-bin-scala_2.12.tgz
cd flink-1.18.0
./bin/start-cluster.sh
export FLINK_HOME=/data2/lab/Flink/flink-1.18.0


wget https://github.com/ververica/flink-cdc-connectors/releases/download/release-3.0.0/flink-cdc-3.0.0-bin.tar.gz
tar -xf flink-cdc-3.0.0-bin.tar.gz
cd 
wget https://repo1.maven.org/maven2/com/ververica/flink-cdc-pipeline-connector-mysql/3.0.0/flink-cdc-pipeline-connector-mysql-3.0.0.jar
bash bin/flink-cdc.sh mysql-to-starrocks.yaml

配置文件mysql-to-starrocks.yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
################################################################################
# Description: Sync MySQL all tables to StarRocks
################################################################################
source:
  type: mysql
  hostname: 9.135.x.x
  port: 3306
  username: root
  password: xxx
  tables: test_cdc_db.\.*
  server-id: 5400-5404
  connectionTimeZone: UTC

sink:
  type: starrocks
  name: StarRocks Sink
  jdbc-url: jdbc:mysql://127.0.0.1:9030
  load-url: 127.0.0.1:8030
  username: root
  password: ""
  table.create.properties.replication_num: 1

pipeline:
  name: Sync MySQL Database to StarRocks
  parallelism: 1
  • connectionTimeZone:和MySQL中的时区保持一致。
  • server-id: 在某些情况下,特别是使用 Flink CDC 或其他 CDC 工具时,可能需要配置一个 server-id 范围。这是因为 CDC 工具可能会启动多个并行任务,每个任务都需要一个唯一的 server-id。通过配置一个范围,CDC 工具可以在这个范围内动态分配 server-id,确保每个任务都有一个唯一的标识。server-id 被设置为 5400-5404,这意味着 CDC 工具可以在这个范围内分配 server-id。例如,如果有 5 个并行任务,它们的 server-id 可以分别是 5400、5401、5402、5403 和 5404。

其它配置参考

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source:
  type: mysql
  hostname: localhost
  port: 3306
  username: root
  password: 123456
  database-name: app_db
  table-name: orders,customers
  server-id: 5400-5404
  connectionTimeZone: UTC

sink:
  type: starrocks
  jdbc-url: jdbc:mysql://127.0.0.1:9030
  load-url: 127.0.0.1:8030
  database: "your_database"
  table: "your_table"
  # table-name: orders.*,customers
  username: "your_username"
  password: "your_password"
  sink.properties:
    format: "json"
    strip_outer_array: "true"
    jsonpaths: "[\"$.id\", \"$.name\", \"$.age\"]"

通过正确配置 sink.properties,可以确保数据以期望的格式和方式写入目标系统(例如 StarRocks),从而满足业务需求。

Debezium

https://github.com/debezium/debezium/blob/main/README_ZH.md

https://debezium.io/documentation/reference/3.0/tutorial.html

ClouCanal

商业版,免费版只能使用92天。

安装文档:https://www.clougence.com/cc-doc/productOP/docker/install_linux_macos

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget -cO cloudcanal.7z 'https://tgzdownload.clougence.com/4.4.1.0/cloudcanal.7z?Expires=1730868218&OSSAccessKeyId=LTAI4G5wdUHmu9t19fVLkC2w&Signature=8CwO%2BA0%2FO2OQ3MdrksKSZPkXu5g%3D'

yum install -y p7zip p7zip-plugins 
yum install -y docker-compose
7z x cloudcanal.7z -o./cloudcanal_home
cd cloudcanal_home/install_on_docker
sh install.sh 

Maxwell

https://maxwells-daemon.io/

https://blog.csdn.net/sinat_35773915/article/details/132204873

离线

DataX

https://github.com/alibaba/DataX

阿里开源的项目,商业版的支持实时同步。

参考

  • DDL(数据定义语言):主要用于定义和管理数据库结构,包括 CREATEALTERDROPTRUNCATE 操作。
  • DML(数据操作语言):主要用于操作数据库中的数据,包括 SELECTINSERTUPDATEDELETE 操作。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
Flink-CDC同步MySQL到Hive实践
CDC是(Change Data Capture 变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的插入INSERT、更新UPDATE、删除DELETE等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。
大数据学习与分享
2023/11/30
9610
Flink-CDC同步MySQL到Hive实践
打造 Flink + StarRocks+ Dinky 的极速统一分析平台
摘要:本文介绍了打造 Flink + StarRocks + Dinky 的极速统一分析平台经验分享。内容包括:
文末丶
2023/02/26
4.6K0
打造 Flink + StarRocks+ Dinky 的极速统一分析平台
《一文读懂腾讯云Flink CDC 原理、实践和优化》
CDC 变更数据捕获技术可以将源数据库的增量变动记录,同步到一个或多个数据目的。本文基于腾讯云 Oceanus 提供的 Flink CDC 引擎,着重介绍 Flink 在变更数据捕获技术中的应用。 一、CDC 是什么? CDC 是变更数据捕获(Change Data Capture)技术的缩写,它可以将源数据库(Source)的增量变动记录,同步到一个或多个数据目的(Sink)。在同步过程中,还可以对数据进行一定的处理,例如分组(GROUP BY)、多表的关联(JOIN)等。 例如对于电商平台,用户的订单
腾讯产业互联网学堂1
2023/05/29
3.4K0
《一文读懂腾讯云Flink CDC 原理、实践和优化》
基于 Flink SQL CDC 的实时数据同步方案
Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的数据同步方案,基于 Flink CDC 同步的解决方案以及更多的应用场景和 CDC 未来开发规划等方面进行介绍和演示。
Spark学习技巧
2020/11/09
3.9K0
基于 Flink SQL CDC 的实时数据同步方案
实时数据湖:Flink CDC流式写入Hudi
•Flink 1.12.2_2.11•Hudi 0.9.0-SNAPSHOT(master分支)•Spark 2.4.5、Hadoop 3.1.3、Hive 3.1.2
ApacheHudi
2021/07/05
1.5K0
实时数据湖:Flink CDC流式写入Hudi
Dinky实践系列之FlinkCDC整库实时入仓入湖
摘要:本文介绍了 Dinky 功能实践系列的 Flink CDC 整库实时入仓入湖的分析。内容包括:
文末丶
2023/02/26
2.4K0
Dinky实践系列之FlinkCDC整库实时入仓入湖
开源数据集成平台SeaTunnel:MySQL实时同步到es
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明,否则将追究法律责任。
javalover123
2023/07/23
1.8K6
开源数据集成平台SeaTunnel:MySQL实时同步到es
【BUG】Flink CDC 2.0.0迷之异常!!!
一、场景还原 基于 Flink CDC 的 SQL Api 实现实时监听 MySQL 的 binlog 数据发送到 Kafka 二、框架版本 框架 版本 Flink 1.13.2 MySQL 5.7.25 connector-mysql-cdc 2.0.0 三、测试代码 public class CDCWithSqlTest { public static void main(String[] args) { StreamExecutionEnvironment env
857技术社区
2022/05/17
2.3K0
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点
如果你对Flink CDC 还没有什么概念,可以参考这里:Flink CDC 原理及生产实践。
王知无-import_bigdata
2021/07/30
2.6K0
Flink CDC 原理、实践和优化
CDC 是变更数据捕获(Change Data Capture)技术的缩写,它可以将源数据库(Source)的增量变动记录,同步到一个或多个数据目的(Sink)。在同步过程中,还可以对数据进行一定的处理,例如分组(GROUP BY)、多表的关联(JOIN)等。
腾讯云大数据
2021/03/31
5K0
Flink CDC 原理、实践和优化
【用户投稿】Dinky整库同步Mysql至StarRocks
导读:本文由社区用户刘思林老师带来的实践小分享——Dinky 整库同步 Mysql 至 StarRocks。
文末丶
2023/09/22
1.3K0
【用户投稿】Dinky整库同步Mysql至StarRocks
Flink CDC 原理、实践和优化
CDC 是变更数据捕获(Change Data Capture)技术的缩写,它可以将源数据库(Source)的增量变动记录,同步到一个或多个数据目的(Sink)。在同步过程中,还可以对数据进行一定的处理,例如分组(GROUP BY)、多表的关联(JOIN)等。
KyleMeow
2021/03/15
26.3K0
Flink CDC 原理、实践和优化
【Apache Doris】Flink Doris Connector 整库同步使用指南
导读 本文主要分享总结 Flink Doris Connector 整库同步的版本兼容、相关概要、功能特性、最佳实践和常见FAQ。
一臻数据
2024/12/24
1.5K0
【Apache Doris】Flink Doris Connector 整库同步使用指南
数据同步工具之FlinkCDC/Canal/Debezium对比
数据准实时复制(CDC)是目前行内实时数据需求大量使用的技术,随着国产化的需求,我们也逐步考虑基于开源产品进行准实时数据同步工具的相关开发,逐步实现对商业产品的替代。本文把市面上常见的几种开源产品,Canal、Debezium、Flink CDC 从原理和适用做了对比,供大家参考。
王知无-import_bigdata
2021/10/27
14.3K0
Flink CDC 和 kafka 进行多源合并和下游同步更新
摘要:本文介绍了 Flink CDC 利用 Kafka 进行 CDC 多源合并和下游同步更新的实践分享。内容包括:
文末丶
2022/02/10
3.2K0
Flink CDC 和 kafka 进行多源合并和下游同步更新
Flink CDC 原理及生产实践
MySQL CDC连接器允许从MySQL数据库读取快照数据和增量数据。本文档根据官网翻译了如何设置MySQL CDC连接器以对MySQL数据库运行SQL查询。
王知无-import_bigdata
2021/01/06
3.5K0
Flink CDC 原理及生产实践
Dinky FlinkCDC 整库入仓 StarRocks
摘要:本文由来自神州数码的大数据主管——赵岩硕老师带来的基于 Dinky 实现 FlinkCDC 整库实时入仓 StarRocks 的实践与踩坑分享。内容包括:
文末丶
2023/02/26
1.3K1
Dinky FlinkCDC 整库入仓 StarRocks
Flink-CDC采集Sqlserver实战
如果没有Sqlserver环境,但你又想学习这块的内容,那你只能自己动手通过docker安装一个 myself sqlserver来用作学习,当然,如果你有现成环境,那就检查一下Sqlserver是否开启了代理(sqlagent.enabled)服务和CDC功能。
码猿小站
2024/07/05
9191
Flink CDC
CDC是Change Data Capture(变更数据获取)的简称。 核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。
挽风
2023/12/18
6480
Flink CDC
Flink CDC 2.0原理详解和生产实践
CDC 的全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。通常我们说的 CDC 技术主要面向 数据库的变更,是一种用于捕获数据库中数据变更的技术。
王知无-import_bigdata
2022/04/13
4.2K0
Flink CDC 2.0原理详解和生产实践
相关推荐
Flink-CDC同步MySQL到Hive实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验