背景
原先开发的kettle job 和 trans都是在单机执行的,kettle搭建集群环境之后,原先单机的job和trans需要迁移到集群环境。
kettle版本9.0
kettle资源库在mysql数据库。
集群为1个master节点,3个slave节点。
解决方案
从单机迁移到集群,job和trans都需要修改,其中job需要右键trans编辑,run configuration 需要设置为集群。trans中需要在集群执行的步骤,右键设置集群执行。有两个解决方案:
1、蠢办法,如果原先开发的job和trans数量不大,一个个手工改一遍就好。
2、写脚本,批量修改。由于本项目kettle资源库在mysql,那么job和trans都存储在mysql中,找到对应的表,update为集群不就好了。
job和trans从单机到集群的变化
1、job中相关的trans的run configuration 变为集群
2、trans中在集群执行的步骤左上角会有标记
3、carte网页端,trans名字带有括号后缀
研究kettle在数据库的配置表后发现
1、R_JOBENTRY_ATTRIBUTE、R_JOB_ATTRIBUTE表记录了job属性
2、R_STEP_ATTRIBUTE表记录了trans的属性
具体操作
1、R_JOBENTRY_ATTRIBUTE表。单机时code 配置项cluster 属性为‘N’,需要更改为‘Y’;
2、R_JOBENTRY_ATTRIBUTE表。单机时code配置项slave_server_name属性为NULL值,需要更改为’Clustered’;
3、R_JOBENTRY_ATTRIBUTE表。单机时code没有run_configuration配置项,需要新增,属性为’remote-cluster’(根据实际情况自定义)。
单机
集群
4、R_JOB_ATTRIBUTE表新增job的配置项,以下两行,单机没有,集群有,需要新增。可以先手工修改一个job和trans,再复制这两个配置项。
5、R_STEP_ATTRIBUTE表,code配置项cluster_schema的属性值属性为NULL,需要更改为’kettle-cluster’(根据实际情况自定义)
以上用脚本实现即可。