最近做一个数据同步需求,用到了kettle,这里记录一下如何在windows开发完成后,迁移到linux的过程
环境:kettle8.2
linux:CentOS7.4
mysql:8.0
-
kettle下载,官网下载比较慢,大家可以去国内镜像地址下载,百度一搜一大把
-
linux环境kettle的安装,直接解压就ok
unzip pdi-ce-8.2.0.0-342.zip -d pdi-ce-8.2 -
把mysql驱动放到kettle安装目录下的lib中,根据版本的不同,可能需要2个驱动包
下面才是迁移的重点,如果你有数据库连接信息,在windows中,通过运行kettle的Spoon.bat在界面中轻松配置,但linux是没有界面的,如果你通过vnc等工具配置出界面也没有问题,这里讲解不通过linux界面,直接在window配置好后,把配置文件放到Linux中
-
在window c:\用户\name\.kettle下,把里面所有文件压缩,并命名为.kettle.zip
注意:一定进到.kettle里面压缩 -
把压缩的文件上传到linux的用户目录:即 ~ ,(cd ~)
注意:由于.在linux中属于隐藏文件,所以,需要使用命令查看
ll -la -
备份原有的隐藏文件.kettle,防止找不到原文件
cp -r .kettle .kettle.bak -
解压上传的压缩文件
unzip .kettle.zip -d .kettle -
上传开发好的.kjb,.ktr文件
-
编写执行程序test.sh,由于linux和window的换行格式不同,如果通过notepad++编写,注意右下角改成Unix(LF)
另外,命令中,kitchen.sh是执行.job文件的,pan.sh是执行.ktr,二选一即可
#!/bin/bash
export JAVA_HOME=/usr/local/jdk1.8.0_231 #此处改为适合的jdk8安装位置
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:/$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
TIMELOG=$(date "+%Y%m%d%H%M")
/usr/local/pdi-ce-8.2/data-integration/kitchen.sh -file=/data/docker/kettle/linux-test-job.kjb >>/data/docker/kettle/logTest/test-log$TIMELOG.log
# /usr/local/pdi-ce-8.2/data-integration/pan.sh -file=/data/docker/kettle/linux-test-job.kjb >>/data/docker/kettle/logTest/test-log$TIMELOG.log
- 给test.sh执行权限,执行即可
chmod +x *.sh
linux定时任务:
-
编辑
crontab -e -
重启定时任务
systemctl restart crond -
查看 crontab 服务状态
systemctl status crond
0 */2 * * * /start-contract.sh (每2小时执行一次)