• 在kafka connect 同步 mysql 主从数据库


    下载以下文件,解压,放置到kafka的libs目录

    kafka-connect-jdbc-4.1.1

    从这里选择适合的mysql connector

    mysql-connector-java-8.0.16.jar

    将里面的jar文件提取出来,也放到kafka的libs目录

    在config目录下创建 connect-mysql-source.properties

    创建 A数据库源表person

    CREATE TABLE `person` (
      `pid` int(11) NOT NULL AUTO_INCREMENT,
      `firstname` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`pid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    创建 B数据库目标表kafkaperson

    CREATE TABLE `kafkaperson` (
      `pid` int(11) NOT NULL AUTO_INCREMENT,
      `firstname` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`pid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    

    connect-mysql-source.properties 内容为

    name=mysql-a-source-person
    connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
    tasks.max=1
    connection.url=jdbc:mysql://127.0.0.1:3306/a_db?user=root&password=root
    # incrementing  自增
    mode=incrementing
    # 自增字段  pid
    incrementing.column.name=pid
    # 白名单表  person
    table.whitelist=person
    # topic前缀   mysql-kafka-
    topic.prefix=mysql-kafka-

    connect-mysql-sink.properties 内容

    name=mysql-a-sink-person
    connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
    tasks.max=1
    #kafka的topic名称
    topics=mysql-kafka-person
    # 配置JDBC链接
    connection.url=jdbc:mysql://127.0.0.1:3306/b_db?user=root&password=root
    # 不自动创建表,如果为true,会自动创建表,表名为topic名称
    auto.create=false
    # upsert model更新和插入
    insert.mode=upsert
    # 下面两个参数配置了以pid为主键更新
    pk.mode = record_value
    pk.fields = pid
    #表名为kafkatable
    table.name.format=kafkaperson
    

    启动kafka

    参考 kafka安装

    如果报 The server time zone value ” is  unrecognized or represents more than one time 。。。

    以命令行进入mysql

    mysql> show variables like '%time_zone%';
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone |        |
    | time_zone        | SYSTEM |
    +------------------+--------+
    2 rows in set

    如果输出结果是system

    设置time_zone即可

    mysql> set global time_zone='+8:00';
    Query OK, 0 rows affected;




    稍微有点延迟、并且只有添加才会同步,更新、删除都不行。
  • 相关阅读:
    Webx5 label的取值和赋值(div)
    webx5 复选框的显示
    WebX5 Data遍历以及获取数组最后一个元素(更新)
    API集市--分享API
    WebX5 Data判断当前行的值是否改变,以及改变当前行的状态
    WebX5手机GPS定位,无需开启网络
    JS:var 变量=变量 && 变量
    jQuery的ready ()的几种写法
    .net 微信支付(公众号支付)遇到的问题
    .net中的Dictionary字典类的使用方法
  • 原文地址:https://www.cnblogs.com/zgzf/p/10883010.html
Copyright © 2020-2023  润新知