基于seatunnel实现mysql同步clickhouse验证

news2024/11/19 21:20:38

场景:

需求想要实现mysql同步到clickhouse,seatunnel部署见前面文档linux环境seatunnel安装运行-CSDN博客。

官方说明文档

Clickhouse | Apache SeaTunnel

mysql同步配置

server-id=1
log_bin=/var/lib/mysql/bin.log
binlog_format=ROW
#binlog-do-db 具体要同步的数据库
binlog-do-db=gisqbpm
gtid-mode=on
enforce-gtid-consistency=on

验证MYSQL同步clckhouse

mysql数据库测试表

CREATE TABLE `test` (
  `id_` varchar(255) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

clikhouse库测试表

-- gisqbpm.test definition

CREATE TABLE gisqbpm.test
(

    `id_` String,

    `name` Nullable(String),

    `_sign` Int8 MATERIALIZED 1,

    `_version` UInt64 MATERIALIZED 1,

    INDEX _version _version TYPE minmax GRANULARITY 1
)
ENGINE = ReplacingMergeTree(_version)
ORDER BY tuple(id_)
SETTINGS index_granularity = 8192;

在config中创建mysqltoclickhouse.conf

touch  mysqltoclickhouse.conf配置如下

env {
        execution.parallelism = 1
        job.mode = "STREAMING"
        checkpoint.interval = 2000
}
source {
        MySQL-CDC {
                base-url = "jdbc:mysql://192.168.85.128:3307/gisqbpm"
                username = "root"
                password = "wxy123456"
                table-names = ["gisqbpm.test"]
   }
}

sink {
    Clickhouse {
                host = "192.168.85.128:8123"
                database = "gisqbpm"
                table = "test"
                username = "default"
                password = "wxy123456“
    }
}

验证一:INSERT

mysql添加一条数据

INSERT INTO `gisqbpm`.`test`(`id_`, `name`) VALUES ('1', '李淳风');

select * from gisqbpm.test;
 

在clickhouse中也同步添加一条数据

验证二:UPDATE

mysql修改一条数据

update  test set name='李淳风1' where id_='1';
select * from gisqbpm.test;

clickhouse显示如下,而是新增一个数据

验证三:DELETE

mysql删除一条数据

clickhouse发现是添加了一个数据

结论一:

这个是网上常见的案列,但都是往往写了一个添加操作就没了,奶奶个腿啊,这么多的坑竟然不说,妈的这放到生产环境不要气死人?同步时修改和删除变成添加和实际逻辑不一样。咨询了社区大佬,给我提供了一些意见,好吧那我就再验证一下

经过大佬点播,又看了一下官方文档确实有写,要通过主键去删除和更新!!!!

二:修改配置再次验证

env {
        execution.parallelism = 1
        job.mode = "STREAMING"
        checkpoint.interval = 2000
}
source {
        MySQL-CDC {
                base-url = "jdbc:mysql://192.168.85.128:3307/gisqbpm"
                username = "root"
                password = "wxy123456"
                table-names = ["gisqbpm.test"]
   }
}

sink {
    Clickhouse {
                host = "192.168.85.128:8123"
                database = "gisqbpm"
                table = "test"
                username = "default"
                password = "wxy123456"
                primary_key="id_"
                support_upsert=true
      }
}

验证一:INSERT

mysql插入一条数据

clickhouse也同步显示添加一条数据

验证二:DELETE

mysql删除一条数据

clickhouse也同步删除一条数据

验证三:UPDATE

mysql修改一条数据

clickhouse没有变化,服务此时也挂了

错误一:

错误如下 Caused by: org.apache.seatunnel.connectors.seatunnel.clickhouse.exception.ClickhouseConnectorException: ErrorCode:[COMMON-10], ErrorDescription:[Flush data operation that in sink connector failed] - Clickhouse execute batch statement error

重启后再次执行修改操作

mysql修改一条数据

clickhouse显示是新增一条数据

结论二:

这种方式同样也是不能完美解决同步问题,修改变成了添加,而且中途服务还挂了,稳定性也有风险。

三:修改配置再次验证

env {
        execution.parallelism = 1
        job.mode = "STREAMING"
        checkpoint.interval = 2000
}
source {
        MySQL-CDC {
                base-url = "jdbc:mysql://192.168.85.128:3307/gisqbpm"
                username = "root"
                password = "wxy123456"
                table-names = ["gisqbpm.test"]
   }
}

sink {
    Clickhouse {
                host = "192.168.85.128:8123"
                database = "gisqbpm"
                table = "test"
                username = "default"
                password = "wxy123456"
                primary_key="id_"
                support_upsert=true
                allow_experimental_lightweight_delete = true
    }
}
 

 这个是官方文档提供的配置测试一下

错误二:

Caused by: java.sql.BatchUpdateException: Code: 62. DB::Exception: Syntax error: failed at position 1 ('DELETE'): DELETE FROM "test" WHERE "id_" = '1' settings allow_experimental_lightweight_delete = true. Expected one of: Query, Query

结论三

经测试在mysql中添加一条数据,clickhouse也同步添加一条数据,但是mysql中通过主键修改一条数据,clickhouse变成添加一条数据,mysql删除一条数据,clickhosue直接报错且服务挂掉

总结: 

1.seatunel同步mysql到clickhouse中存在很大的问题,生产环境如果有修改和删除操作同步到clickhouse时趁早换方案!!!

2.从操作来看seatunel对全库同步的场景也不是很友好,我100张表那就要创建100个sink对应的表非常麻烦!!

3.MaterializeMySQL的方式都比这个靠谱,至少服务不会挂!!!

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

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

相关文章

必看!干得不能再干了,Abaqus各版本安装指南

Abaqus下载链接 https://pan.baidu.com/s/1PHWhlM4cPINUqy2XYRHrhQ?pwd0531 ​1.鼠标右击【Abaqus2023(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Abaqus.2023(64bit)】。 2.打开解压后的文件夹,鼠标右击【jdk-17…

2024年MySQL学习指南(四),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言9. 约束的概念10. 约束的分类11. 非空约束12. 唯一约束13. 主键约束14. 默认约束15. 外键约束16. 约束的案例练习 前言 接上篇: 2024年MySQL学习指南(一) 2024年MySQL学习指南(二) 2024年MySQL学习指…

影响机器人行业爆炸式发展的原因有哪些(OpenPilot)

机器人是现在和未来最有发展前景的行业,这一点是毋庸置疑的。 先看一段21年的视频: 外置式L2级别自动驾驶辅助套件 Openpilot 深度体验分析 火热 作为热门专业的从业人员,能够感受到行业的关注热度和实际热度之间的差异。 原因 有很多&am…

操作系统(期末复习知识点)

第1章 操作系统引论 操作系统的目标和作用 操作系统的目标 在计算机系统上配置OS,其主要目的是实现:方便性、有效性、可扩充性、开放性。 操作系统的作用 可以从人机交互、资源管理及资源抽象等不同方面来分析OS在计算机系统中所起到的作用。 OS 作为…

怎么测试电源负载瞬态响应?具体步骤是什么?

负载瞬态响应(Load Transient Response)指的是电路或系统在负载发生瞬态变化时,输出电压或电流出现的瞬时变化的情况。 电源负载瞬态响应测试是评估电源在负载变化时性能表现的一种重要方法。在实际应用中,电源负载的变化是不可避免的,因此准确评估电源的…

面试必问究极重点之HashMap的底层原理

1.底层数据结构 JDK版本不同的数据结构 1.7 数组 链表 1.8 数组 (链表 | 红黑树) 2.添加数据put 在添加一个值的时候,首先会计算他的hash码,然后进行二次hash,在对当前长度取模得到在底层数组中的索引位置当取模完…

用Spring Boot 3.2虚拟线程搭建静态文件服务器有多快?

Spring Boot 3.2 于 2023 年 11 月大张旗鼓地发布,标志着 Java 开发领域的一个关键时刻。这一突破性的版本引入了一系列革命性的功能,包括: 虚拟线程:利用 Project Loom 的虚拟线程释放可扩展性,从而减少资源消耗并增…

【HBase】——优化

1 RowKey设计 重要:一条数据的唯一标识就是 rowkey,那么这条数据存储于哪个分区,取决于 rowkey 处于 哪个一个预分区的区间内,设计 rowkey的主要目的 ,就是让数据均匀的分布于所有的 region 中,在一定程度…

海昌海洋公园用泛微千里聆RPA智能采集、识别、分析网络数据,助力优化运营服务

海昌海洋公园控股有限公司(以下简称“海昌海洋公园”)是中国知名的主题公园和配套商用物业开发及运营商。经过近二十年发展,凭借行业优秀的极地海洋动物保育技术,公司将其业务模式逐步推广到核心城市,展开了海昌海洋公…

2024中国管业十大品牌——皮尔特管业

2024中国管业十大品牌——皮尔特管业 2024年度中国管业十大品牌评选活动圆满举办。来自江苏的皮尔特管道,再次成功入围2024中国管业十大品牌。皮尔特管业凭借多年积累的市场口碑,再次入围也是实至名归。 苏州皮尔特管业科技有限公司创建于2001年&#x…

矩阵翻转180度是什么意思,请举例

问题描述:矩阵翻转180度是什么意思,请举例 问题解答: 矩阵的180度翻转是指将矩阵绕中心水平和垂直翻转。这个操作类似于将图像或矩阵上下颠倒,然后左右颠倒。翻转后的矩阵在水平和垂直方向上保持了原始矩阵的对称性。 让我们以…

【性能测试】老鸟总结,性能测试到底该如何做,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、前期准备 性能…

2023年第2季社区Task挑战赛贡献者榜单

基于FISCO BCOS及Weldentity,实现SSO单点登录服务;提供食品溯源、电商运费险7天退保、电子病历等智能合约库业务场景案例;基于FISCO BCOS更新游戏体验;体验并分析解读最新发布的分布式数据协作管理解决方案DDCMS,提供相…

Eviews 11安装包下载及安装教程

Eviews 11下载链接:https://docs.qq.com/doc/DUmRGdXVUeVBSU1lK 1.选中下载好的安装包,右键解压到“Eviews 11”文件夹 2.选中"Setup.exe"鼠标右键选择以管理员身份运行 3.点击“Next” 4.勾选“I Accept...”,点击“Next” 5.选择…

提升效率必备:用关键词替换法重命名文件夹技巧

在日常生活和工作中,经常要处理大量的文件夹,进行归类、整理和重命名。但是手动一个个重命名文件夹既费时又费力。为了提高效率,可以采用关键词替换法来批量重命名文件夹。现在讲解云炫文件管理器如何用关键词替换命名文件夹的具体步骤。 首先…

电视机顶盒哪个牌子好?2024电视机顶盒排行榜全新出炉

电视机顶盒可以解决电视机无法下载软件,配置落后卡顿等问题,用电视机顶盒资源丰富,功能多样,但超多朋友不知道电视机顶盒哪个牌子好,小编本期要分享的就是2024业内最新发布的电视机顶盒排行榜,入围的是以下…

构建Python随机密码生成器:保障账户安全的简易工具

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 密码安全是当前数字时代的一个重要议题。在保护…

实时记录和查看Apache 日志

Apache 是一个开源的、广泛使用的、跨平台的 Web 服务器,保护 Apache Web 服务器平台在很大程度上取决于监控其上发生的活动和事件,监视 Apache Web 服务器的最佳方法之一是收集和分析其访问日志文件。 Apache 访问日志提供了有关用户如何与您的网站交互…

uniapp点击跳转传对象

目录 传对象传对象传送组件接受组件 最后 传对象 传对象 传送组件 点击传给组件 <view class"dki-tit-edit" click"gotificatedit(item)">编辑 </view>gotificatedit(item){console.log(item,item);let options JSON.stringify(item);uni.…

web3 : blockscout剖析

Blockscout 是第一个功能齐全的开源区块链浏览器,可供任何以太坊虚拟机 (EVM) 链使用。项目方可以下载并使用Blockscout作为其链的浏览器,用户可以轻松验证交易、余额、区块确认、智能合约和其他记录。 目录 Blockscout可以做什么主要特征blockscoutDocker容器组件Postgres 1…