离线安装Flink,使用Flink SQL同步数据。

文章介绍了如何利用FlinkSQL结合MySQL的变更数据捕获(CDC)功能从mysqlA的表AA同步数据到mysqlB的表BA。过程中涉及了配置Flink环境、启用MySQL的GTID模式、设置checkpoint间隔以及创建源表和目标表的FlinkSQL语句,最终实现了通过JDBC写入mysqlB的过渡表dw_orders来完成数据同步。

前情提要

同步mysqlA中表AA 至 mysqlB中表BA,此处读采用mysql-cdc,写采用JDBC

资源准备

  • 下载相应jar包

    • flink-sql-connector-mysql-cdc-2.3.0.jar
    • flink-connector-jdbc_2.12-1.14.6.jar
    • mysql-connector-java-8.0.30.jar
      将下载好的包,复制到flink-1.16.1/lib
  • 数据库开启GTID

    找到my.cnf,在[mysqld]中加入如下信息

    [mysqld]
    ……
    server-id=1
    log-bin=mysql-bin
    binlog-format=row
    gtid-mode=ON
    enforce-gtid-consistency=true
    log-slave-updates=ON
    
  • 准备数据

    mysqlA中信息

    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE orders (
      order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
      order_date DATETIME NOT NULL,
      customer_name VARCHAR(255) NOT NULL,
      price DECIMAL(10, 5) NOT NULL,
      product_id INTEGER NOT NULL,
      order_status BOOLEAN NOT NULL -- Whether order has been placed
    ) AUTO_INCREMENT = 10001;
    
    INSERT INTO orders
    VALUES (default, '2020-07-30 10:08:22', 'Jark', 50.50, 102, false),
           (default, '2020-07-30 10:11:09', 'Sally', 15.00, 105, false),
           (default, '2020-07-30 12:00:30', 'Edward', 25.25, 106, false);
    

    mysqlB中信息

    CREATE DATABASE test_dw;
    USE test_dw;
    CREATE TABLE orders (
      order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
      order_date DATETIME NOT NULL,
      customer_name VARCHAR(255) NOT NULL,
      price DECIMAL(10, 5) NOT NULL,
      product_id INTEGER NOT NULL,
      order_status BOOLEAN NOT NULL -- Whether order has been placed
    )
    

离线安装Flink 文档

  • 安装java 11

    # mac 安装 java11
    $  brew install java11
    $  sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
    $  java -version
    openjdk version "11.0.16.1" 2022-08-12
    OpenJDK Runtime Environment Homebrew (build 11.0.16.1+0)
    OpenJDK 64-Bit Server VM Homebrew (build 11.0.16.1+0, mixed mode)
    
  • 下载 release 1.16.1 并解压

    $ tar -xzf flink-1.16.1-bin-scala_2.12.tgz
    $ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值