使用Apache SeaTunnel进行数据库同步(MySQL to MySQL)

这篇具有很好参考价值的文章主要介绍了使用Apache SeaTunnel进行数据库同步(MySQL to MySQL)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • Apache SeaTunnel 起到的主要作用是什么?

目前,大数据体系里有各种各样的数据引擎,有大数据生态的 Hadoop、Hive、Kudu、Kafka、HDFS,也有泛大数据库体系的 MongoDB、Redis、ClickHouse、Doris,更有云上的 AWS S3、Redshift、BigQuery、Snowflake,还有各种各样数据生态 MySQL、PostgresSQL、IoTDB、TDEngine、Salesforce、Workday 等。我们需要工具让这些数据之间能互联互通,那么 Apache SeaTunnel 就是打通这些复杂数据源的利器,它可以简单、准确、实时地把各种数据源整合到目标数据源当中,成为大数据流动的“高速公路”。

简单理解:数据库同步工具,类似阿里的canal

本文介绍使用seaTunnel的MYSQL-CDC方式进行mysql与mysql相互同步


seaTunnel官网:https://seatunnel.apache.org

  • 依赖:Java8+,hazelcast-5.0.1

安装hazelcast-5.0.1

wget https://repository.hazelcast.com/rpm/stable/hazelcast-rpm-stable.repo -O hazelcast-rpm-stable.repo
sudo mv hazelcast-rpm-stable.repo /etc/yum.repos.d/
sudo yum install hazelcast-5.0.1

下载seaTunnel

创建目录

mkdir -p /home/seatunnel

cd /home/seatunnel

执行:

export version="2.3.2"
wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"

创建执行上下文

vim /etc/profile.d/seatunnel.sh

输入

export SEATUNNEL_HOME=/home/seatunnel/apache-seatunnel-2.3.2
export PATH=$PATH:$SEATUNNEL_HOME/bin

生效配置

source /etc/profile

打开:$SEATUNNEL_HOME/bin/seatunnel-cluster.sh

在第一行添加JVM配置

JAVA_OPTS="-Xms2G -Xmx2G"

安装插件:

cd apache-seatunnel-2.3.2/config

mv plugin_config plugin_config.bak

vim plugin_config

输入以下内容:

--connectors-v2--
connector-cdc-mysql
connector-jdbc
connector-starrocks
--end--

需要其它插件可以从plugin_config.bak中挑选

保存后执行命令安装插件:

sh bin/install-plugin.sh 2.3.2

添加mysql驱动

mysql-connector-java-8.0.30.jar 点击下载

mysql-connector-java-8.0.30.jar放到$SEATUNNEL_HOME/lib/目录中

配置checkpoint存储

cd config
vim seatunnel.yaml

修改namespace,fs.defaultFS 默认在tmp目录

seatunnel:
  engine:
    backup-count: 1
    queue-type: blockingqueue
    print-execution-info-interval: 60
    print-job-metrics-info-interval: 60
    slot-service:
      dynamic-slot: true
    checkpoint:
      interval: 10000
      timeout: 60000
      max-concurrent: 5
      tolerable-failure: 2
      storage:
        type: hdfs
        max-retained: 3
        plugin-config:
          namespace: /opt/seatunnel/checkpoint_snapshot
          storage.type: hdfs
          fs.defaultFS: file:///opt/fs/ # Ensure that the directory has written permission

配置MySQL CDC

cd config
cp v2.streaming.conf.template test.config
vim test.config

输入一下内容:

    env {
      # You can set SeaTunnel environment configuration here
      execution.parallelism = 2
      job.mode = "STREAMING"
      # 10秒检查一次,可以适当加大这个值
      checkpoint.interval = 10000
      #execution.checkpoint.interval = 10000
      #execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"
    }

    # 配置数据源
    source {
      MySQL-CDC {
        # 数据库账号
        username = "canal"
        password = "canal"
        # 源表,格式:数据库名.表名
        table-names = ["canalold.uc_user"]
        base-url = "jdbc:mysql://172.16.4.196:3306/canalold"
      }
    }

    # 配置目标库
    sink {

      jdbc {
        url = "jdbc:mysql://172.16.4.175:3306/canalnew"
        driver = "com.mysql.cj.jdbc.Driver"
        user = "canal"
        password = "canal"
        
        generate_sink_sql = true
		# 目标数据库名
        database = "canalnew"
        # 目标表名
        table = "uc_user"
        # 主键名称
        primary_keys = ["id"]
      }

    }

一张表一个配置

  • 启动集群
mkdir -p $SEATUNNEL_HOME/logs
nohup bin/seatunnel-cluster.sh 2>&1 &

提交任务:

nohup ./bin/seatunnel.sh --config ./config/test.config 2>&1 &

提交一次即可

前往logs目录查看是否提交成功

参考文档

集群部署:https://seatunnel.apache.org/docs/2.3.2/seatunnel-engine/deployment

常见问题

sql must not null

添加如下配置

database = "canalnew"
table = "uc_user"

如果不配置,必须配置query属性,即query属性和上面两个配置二选一,且上面两个配置优先级高文章来源地址https://www.toymoban.com/news/detail-553357.html

到了这里,关于使用Apache SeaTunnel进行数据库同步(MySQL to MySQL)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SeaTunnel 海量数据同步工具的使用(连载中……)

    SeaTunnel 是一个非常易用,高性能、支持实时流式和离线批处理的海量数据处理产品,前身是 WaterDrop (中文名:水滴),自 2021年10月12日更名为 SeaTunnel 。2021年12月9日,SeaTunnel 正式通过Apache 软件基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目。 2022年

    2024年01月16日
    浏览(28)
  • Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!

    DolphinScheduler是一个开源的分布式任务调度系统,拥有分布式架构、多任务类型、可视化操作、分布式调度和高可用等特性,适用于大规模分布式任务调度的场景。目前DolphinScheduler支持的元数据库有Mysql、PostgreSQL、H2,如果在业务中需要更好的性能和扩展性,可以在DolphinSche

    2024年02月12日
    浏览(27)
  • 如何使用 SeaTunnel 同步 MySQL 数据到 Hive

    第一步:环境准备 Java 8 或 11 并配置JAVA_HOME Git  Maven 第二步:下载SeaTunnel并安装连接器 下载地址:https://seatunnel.apache.org/download/ 下载SeaTunnel并安装2.3.0版本 https://www.apache.org/dyn/closer.lua/incubator/seatunnel/2.3.0/apache-seatunnel-incubating-2.3.0-bin.tar.gz 详细的安装过程可以参考:https://s

    2023年04月08日
    浏览(25)
  • 【ElasticSearch】深入探索 ElasticSearch 对数据的聚合、查询自动补全、与数据库间的同步问题以及使用 RabbitMQ 实现与数据库间的同步

    在本文中,我们将深入探讨 ElasticSearch 在数据处理中的关键功能,包括数据聚合、查询自动补全以及与数据库的同步问题。 首先,我们将聚焦于 ElasticSearch 强大的聚合功能,解释什么是聚合以及如何通过 DSL 语句和 RestClient 实现各种聚合操作。这一功能能够让我们更深入地了

    2024年02月08日
    浏览(36)
  • 探索在Apache SeaTunnel上使用Hudi连接器,高效管理大数据的技术

    Apache Hudi是一个数据湖处理框架,通过提供简单的方式来进行数据的插入、更新和删除操作,Hudi能够帮助数据工程师和科学家更高效地处理大数据,并支持实时查询。 Spark Flink SeaTunnel Zeta 批处理 流处理 精确一次性 列投影 并行处理 支持用户自定义切分 Hudi Source 连接器专为从

    2024年04月28日
    浏览(34)
  • 如何使用PyQt进行数据库操作?

    首先,我们要知道,PyQt是一个非常强大的图形用户界面(GUI)开发库,它允许我们使用Python语言创建美观且高度交互的桌面应用程序。然而,对于数据库操作,PyQt并不直接提供此类功能。这需要我们使用其他的数据库库,例如SQLite、MySQL或PostgreSQL等。 对于新手来说,我建议

    2024年02月11日
    浏览(40)
  • 【MySQL】使用DBeaver数据库管理工具进行MySQL数据库连接

    一、数据库连接信息填写 1、服务器地址:填写服务器部署的地址,以及端口号 2、数据库:sys 3、用户名:root 4、密码:服务器上面设置的具体密码 以上信息填写错误的报错提示 :Access denied for user ‘XXX’@’%’ to database ‘10.42.67.22’ 二、数据库说明 1、数据库连接时选择的

    2024年02月09日
    浏览(57)
  • Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

    目录  一、Apache服务器监控 为什么要用到服务监控? 实现Apache服务器监控 二、数据库备份 为什么要用到数据库备份? 实现数据库备份 三、Shell脚本发送邮件 为什么要用使用Shell脚本发送邮件? 实现Shell脚本发送邮件 在Linux中监控Apache服务器是非常重要的,原因如下: 保证

    2024年04月15日
    浏览(59)
  • 如何使用 PHP 进行数据库连接池优化?

    连接池是一个存放数据库连接的地方,就像一个水池,你在这里可以得到数据库连接。这比每次都新建和关闭连接要快得多,因为连接池中的连接是可以重复使用的。 下面是一个简单的例子,展示如何使用PHP和PDO(PHP Data Objects)来创建一个连接池。 这个类有一个连接池,其

    2024年02月15日
    浏览(59)
  • 如何使用 PHP 进行数据库备份和恢复?

    想要使用PHP进行数据库备份和恢复? 首先,我们要明白为什么要备份和恢复数据库。因为有时候,我们的数据库可能会被黑客攻击或者系统故障所影响,导致数据丢失或损坏。所以,为了防止这种情况发生,我们需要定期备份数据库,并在需要时快速恢复。 好了,现在我们

    2024年02月15日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包