袋鼠云数据库数据同步之flinkx1.10版入门-搭配flink1.11

1.前提介绍

公司最近有个项目要做数据库之间的数据离线同步,经过调研在git上发现了袋鼠云的flinkx插件,感觉很好用,我们可以理解flnkx就是封装了同步操作的jar包,调用起来也很方便,我们只需要关注一个json文件,里面定义好reader和writer,就能够进行数据库数据同步,当前我们的需求只需要到离线的,其实选用flinkx也是考虑到以后拓展,毕竟flink本身支持实时同步,虽然我用的程度只是基本的mysql到mysql的操作,但以后有实时需求的时候,感觉flinkx应该也会有解决方案

2.实现成果

将flinkx插件的任务放在flink单节点集群上运行,mysql和mysql之间做数据离线同步

3.版本介绍

1.flinkx 1.10

2.flink1.11

3.centos7.6

4.顺序介绍

1.git上下载flinkx的源码:https://github.com/DTStack/flinkx ,需要自己编译, 编译过程可以完全参考袋鼠云的快速开始文档:https://github.com/DTStack/flinkx/blob/1.10_release/docs/quickstart.md

2.当你编译完成后,你只需要关注的只是lib,syncplugins,docs文件夹下的内容

lib(flinkx插件的main方法入口类所在,里面只有一个jar)

syncplugins(这个就是插件真正用的各种同步jar)

docs (你需要同步的reader和writer的json文件所在位置)

注意:后面我们需要将这三个文件夹下的文件拷贝到flink的解压路径下

3.下载flink1.11  ,直接去官网下载tar.gz直接在linux下解压即可

上面我们说过我们要将三个文件夹下的内容拷贝到flink的根目录下的某些路径下,我的flink下的结构最终是下面这个样子的

在这个里我先贴一下在flink上运行flinkx插件任务的命令,这样估计你就理解了这些路径下都是做啥的

1.先启动flink

   bin/start-cluster.sh

2.将flinkx插件同步任务提交到flinkx

   bin/flink  run -c  com.dtstack.flinkx.launcher.Launcher  /dsg/dsg-flink.1.11/flink-1.11.3/opt/flinkx-launcher-1.6.jar -mode standalone -jobid taskName28714e8d8-8223-4842-aeab-ccb764607bc1 -job /dsg/dsg-  flink.1.11/flink-1.11.3/docs/flink_input_flink_output_a9ba3e6f-43f6-429a-9a0f-f1587e13e671.json -pluginRoot /dsg/dsg-flink.1.11/flink-1.11.3/lib/syncplugins -flinkconf /dsg/dsg-flink.1.11/flink-1.11.3/conf/

上面的代码是为了方便你复制,下面我把它每个参数分别解释一下

 ./flink  run -c com.dtstack.flinkx.launcher.Launcher  /dsg/dsg-flink.1.11/flink-1.11.3/opt/flinkx-launcher-1.6.jar   (这个就是类似于java启动命令指定启动类及jar所在位置)

-mode standalone          (启动模式为standalone)

-jobid taskName28714e8d8-8223-4842-aeab-ccb764607bc1            (flinkx向flink集群提交的任务名称,这是flinkx中的一个定义,虽然这个参数在这里叫做jobId,它实际对应着flink任务的jobName)

-job /dsg/dsg-flink.1.11/flink-1.11.3/docs/flink_input_flink_output_a9ba3e6f-43f6-429a-9a0f-f1587e13e671.json      (这个就是你指定的那个json,json里包含着reader和writer信息)

-pluginRoot /dsg/dsg-flink.1.11/flink-1.11.3/lib/syncplugins              (flinkx打包后的插件包)

-flinkconf /dsg/dsg-flink.1.11/flink-1.11.3/conf/                        (flink集群启动配置)

须知:flinkx我们操作的核心实际上就是那个json文件,在我这里我的json文件都在flink的根路径下的docs下,flinkx会读取json文件并且将数据按照里面的reader和writer进行同步,

{
  "job": {
    "content": [
      {
        "reader": {
          "parameter": {
            "username": "root",
            "password": "mysql123",
            "connection": [{
              "jdbcUrl": ["jdbc:mysql://192.168.23.133:3306/test_zy?useUnicode=true&characterEncoding=utf8&useSSL=false"],
              "table": ["flinkx_input"]
            }],
            "column": ["*"],
            "customSql": "",
            "splitPk": "",
            "queryTimeOut": 1000,
            "requestAccumulatorInterval": 2
          },
          "name": "mysqlreader"
        },
        "writer": {
          "name": "mysqlwriter",
          "parameter": {
            "username": "root",
            "password": "mysql123",
            "connection": [
              {
                "jdbcUrl": "jdbc:mysql://192.168.23.133:3306/test_zy?useSSL=false",
                "table": ["flinkx_output"]
              }
            ],
            "writeMode": "insert",
            "column": ["id","name"],
            "batchSize": 1024
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1,
        "bytes": 0
      },
      "errorLimit": {
        "record": 100
      },
      "restore": {
        "maxRowNumForCheckpoint": 0,
        "isRestore": false,
        "restoreColumnName": "",
        "restoreColumnIndex": 0
      },
      "log" : {
        "isLogger": false,
        "level" : "debug",
        "path" : "",
        "pattern":""
      }
    }
  }
}

相信你通过读取这个json文件应该会知道都代表何种意思,官方文档有详细介绍

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值