1、下载源码,首次下载idea编译会报错,
编译找不到DB2、达梦、gbase、ojdbc8等驱动包
解决办法:在$FLINKX_HOME/jars目录下有这些驱动包,可以手动安装,也可以使用插件提供的脚本安装: ```bash ## windows平台 ./install_jars.bat ## unix平台 ./install_jars.sh ```
编译打包:mvn clean package -Dmaven.test.skip=true
2、把编译后的三个文件加bin/lib/syncplugins拷贝到服务器上,其中bin目录包含FlinkX的启动脚本,plugins目录下存放编译好的数据同步插件包。
3、编写start.sh启动脚本,job指定任务json,flinkconf指定flink配置,pluginRoot指定同步插件位置
启动脚本命令介绍:
model
- 描述:执行模式,也就是flink集群的工作模式
- local: 本地模式
- standalone: 独立部署模式的flink集群
- yarn: yarn模式的flink集群,需要提前在yarn上启动一个flink session,使用默认名称"Flink session cluster"
- 必选:否
- 默认值:local
job
- 描述:数据同步任务描述文件的存放路径;该描述文件中使用json字符串存放任务信息。
- 必选:是
- 默认值:无
pluginRoot
- 描述:插件根目录地址,也就是打包后产生的pluginRoot目录。
- 必选:是
- 默认值:无
flinkconf
- 描述:flink配置文件所在的目录(单机模式下不需要),如/hadoop/flink-1.4.0/conf
- 必选:否
- 默认值:无
yarnconf
- 描述:Hadoop配置文件(包括hdfs和yarn)所在的目录(单机模式下不需要),如/hadoop/etc/hadoop
- 必选:否
- 默认值:无
启动脚本示例:
sh ./bin/flinkx -job /soft/flume/flinkx/job/mysql-mysql.json -flinkconf /soft/flink-1.10.0/conf \ -pluginRoot /soft/flume/flinkx/syncplugins \
4、编写job文件,详见 https://blog.csdn.net/xiaolegeaizy/article/details/111032996,这里一定要注意。
{
"job": {
"setting": {
"speed": {
"channel": 1,
"bytes": 1024
},
"errorLimit": {
"record": 10000,
"percentage": 10.0
},
"dirty": {
"path": "/soft/flume/flinkx/job"
}
},
"content": [
{
"reader": {
"parameter":{
"connection": [
{
"jdbcUrl": ["jdbc:mysql://172.17.0.103:3306/geopanel?useUnicode=true&characterEncoding=utf-8&useSSL=false"],
"table": [
"sys_log"
]
}
],
"username": "root",
"password": "root",
"fetchSize":100,
"column": [
{
"name":"id",
"type":"long"
},{
"name":"type",
"type":"string"
},{
"name":"title",
"type":"string"
},{
"name":"create_by",
"type":"string"
},{
"name":"create_time",
"type":"date"
},{
"name":"update_time",
"type":"date"
},{
"name":"remote_addr",
"type":"string"
},{
"name":"user_agent",
"type":"string"
},{
"name":"refer",
"type":"string"
},{
"name":"request_uri",
"type":"string"
},{
"name":"method",
"type":"string"
},{
"name":"params",
"type":"string"
},{
"name":"time",
"type":"long"
},{
"name":"exception",
"type":"string"
},{
"name":"service_name",
"type":"string"
},{
"name":"del_flag",
"type":"string"
}
],
"filter": ""
},
"name":"mysqlreader"
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "root",
"password": "root",
"column": [
{
"name":"id",
"type":"bigint"
},{
"name":"type",
"type":"varchar"
},{
"name":"title",
"type":"varchar"
},{
"name":"create_by",
"type":"varchar"
},{
"name":"create_time",
"type":"datetime"
},{
"name":"update_time",
"type":"datetime"
},{
"name":"remote_addr",
"type":"varchar"
},{
"name":"user_agent",
"type":"varchar"
},{
"name":"refer",
"type":"varchar"
},{
"name":"request_uri",
"type":"varchar"
},{
"name":"method",
"type":"varchar"
},{
"name":"params",
"type":"varchar"
},{
"name":"time",
"type":"bigint"
},{
"name":"exception",
"type":"varchar"
},{
"name":"service_name",
"type":"varchar"
},{
"name":"del_flag",
"type":"varchar"
}
],
"batchSize": 1,
"session": [
],
"connection": [
{
"jdbcUrl": ["jdbc:mysql://172.17.0.103:3306/ahcs?useUnicode=true&characterEncoding=utf-8&useSSL=false"],
"table": [
"sys_log_copy"
]
}
]
}
}
}
]
}
}
5、启动任务,运行start.sh。