DataX配置定时任务

时间:2024-03-14 22:45:38

DataX配置定时任务

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://mp.csdn.net/postedit?not_checkout=1

1.环境要求

我安装的是JDK1.8,Python2.7.13,刚开始安装的JDK1.6,执行定时任务时,日志文件里面显示/bin/sh: java: command not found,后来换成1.8没问题了。

2.配置任务

(1)安装crond服务

yum install crontabs

命令说明:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crond服务状态   输入

service crond status

显示如下表示服务已启动

[[email protected] /]# service crond status
Redirecting to /bin/systemctl status  crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-05-15 15:51:05 CST; 9min ago
 Main PID: 6550 (crond)
   CGroup: /system.slice/crond.service
           └─6550 /usr/sbin/crond -n
May 15 15:51:05 localhost.localdomain systemd[1]: Started Command Scheduler.
May 15 15:51:05 localhost.localdomain systemd[1]: Starting Command Scheduler...
May 15 15:51:05 localhost.localdomain crond[6550]: (CRON) INFO (RANDOM_DELAY ...
May 15 15:51:06 localhost.localdomain crond[6550]: (CRON) INFO (running with ...
May 15 15:51:06 localhost.localdomain crond[6550]: (CRON) INFO (@reboot jobs ...
Hint: Some lines were ellipsized, use -l to show in full.

(2).创建作业配置文件(json格式)

这个是从一个mysql数据库读取数据并写入另一个mysql数据库的一个作业配置,mysql2mysql.json

{
    "job": {
        "content": [
            {

            "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "***",
                        "password": "***",
                        "column":         ["id","tenant_id"],
                        "splitPk": "id",
                        "where": "DATE_FORMAT(create_time,'%Y-%m-%d') =DATE_SUB(CURDATE(),INTERVAL 1 DAY)",
                        "connection": [
                            {
                                "table": [
                                    "t1"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://xx/daily?useUnicode=true&characterEncoding=utf8"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "bi",
                        "password": "Ns-bi#sh18",
                        "column": [ "id","tenant_id"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://x:3306/up?useUnicode=true&characterEncoding=utf8",
                                "table": [
                                    "t2"
                                ]
                            }
                        ]
                    }
                    
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 5
            }
        }
    }
}

说明:导出到oracle 时,只换数据库驱动就课轻松搞定!

(3).列出crontab文件,输入crontab -l

若显示以下内容 ,则表示当前用户没有定时任务(xxx表示当前用户),需要创建crontab文件,并提交,查看步骤(4)

no crontal for xxx

若显示类似以下内容 ,则表示当前用户已经有正在运行的定时任务,只需输入crontab -e 来编辑crontab文件,查看步骤(5)

0,10,20,35,44,50 * * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1,

(4).创建crontab文件(以前从未创建过crontab任务)

创建一个名为crondatax的crontab文件,命令行进入到相应的目录   vi crondatax,创建并打开文件,输入以下内容:

5  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/oracle2oracle.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1


5 13 * * *表示每天的13点5分执行这个任务。

python/home/admin/datax3/bin/datax.py表示安装的DataX datax.py所在的目录的绝对路径,一般在datax/bin/目录下。

/home/admin/oracle2oracle.json.json表示作业配置文件的绝对路径

/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`表示任务运行时产生日志的输出路径,并以log.当前时间命名,要替换成真实存在的绝对路径。

文件编辑完成之后,按esc,再按shift+;,再输入wq,则保存并退出文件编辑。

(5)编辑已有crontab文件,修改或增加定时任务

输入crontab -e 打开任务配置文件。增加任务即可,格式和步骤(4)一致。

截图如下:

DataX配置定时任务

(6)提交 crontab文件

输入crontab /home/datax/job/crondatax crondatax是步骤(4)中创建的文件的名称,如果终端所在目录就是crondatax文件所在目录,

可以直接输入crontab crondatax。

提交之后输入crontab -l 就能看到刚配置的任务。

(7)重启crontab服务

输入

/sbin/service crond restart

在定时的时间到后,任务便开始执行,同时会在配置的log目录下生成对应的日志文件,在日志文件中可查看任务的运行情况。

(8)任务配置文件crontab命令格式说明

参数可以配置多个,中间用逗号分隔比如想每10分钟执行一次定时任务,可以按以下方式配置。

0,10,20,30,40,50  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json  >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S`  2>&1

图片来自于官网

DataX配置定时任务