【需求场景】:crontab创建定时任务,每天凌晨针对starrocks的sql跑批任务:
[hadoop@hadoop1 ~]$ crontab -l
10 0 * * * mysql -hhadoop3 -P9030 -uetl -p'askxabcdo' -Dmy_database < /person/daijie/sql/insert_into_dwd_table_history.sql
【报错信息】:无报错信息
【排查思路】:①vim /var/log/cron查看crontab日志发现在凌晨0点10分发现了日志:Jan 18 00:10:01 hadoop1 CROND[91358]: (hadoop) CMD (mysql -hhadoop3 -P9030 -uetl -p'askxabcdo' -Dmy_database < /person/daijie/sql/insert_into_dwd_table_history.sql),很明显,定时调度旨在调度提交到starrocks去执行,至于是否提交成功(包括数据库连接是否成功)、sql执行如何一概不管;
②查看starrocks的审计日志发现etl用户在0点10分没有执行过sql,因此出现在定时任务的这条命令上;
③但是单独执行mysql -hhadoop3 -P9030 -uetl -p'askxabcdo' -Dmy_database < /person/daijie/sql/insert_into_dwd_table_history.sql,妥妥地成功。
④经过多方查阅资料及思考,命令修改为/usr/local/mysql -hhadoop3 -P9030 -uetl -p'askxabcdo' -Dmy_database < /person/daijie/sql/insert_into_dwd_table_history.sql
【解决方案】:crontab中命令写全路径,定时任务的正确写法:
10 0 * * * /usr/local/mysql -hhadoop3 -P9030 -uetl -p'askxabcdo' -Dmy_database < /person/daijie/sql/insert_into_dwd_table_history.sql
提示:mysql全路径怎么查找:which mysql
接收报错信息及解决方案邮箱:flinkxabc@yeah.net