ubuntu创建cronjob执行mysql语句

本文介绍了如何在Linux机器上安装MySQL客户端,配置环境变量使其永久生效,以及如何使用crontab定时执行包含MySQL连接的sh脚本来更新数据下载配置。特别强调了环境变量在cronjob中的使用注意事项。
摘要由CSDN通过智能技术生成

1.在机器上安装mysql客户端

apt-get install mysql-client

安装完成后 输入 mysql命令

2.配置 环境变量

切换root用户, 在 /etc/profile 最后 一行 添加 export MYSQL_PWD='数据库密码'

使用 source /etc/profile 使配置生效

当配置 好环境变量后,

使用 mysql -h 172.18.0.2 -P 32000 -u root 即可 直接连接mysql

但如果 只在 /etc/profile中 配置 环境变量,当下次 重新 登录root后, 使用 echo $MYSQL_PWD没有输出, 即配置的环境变量已经失效。

若需环境变量永久生效:

vim ~/.bashrc

将 /etc/profile 文件中配置的环境变量 copy 到这个文件中

source ~/.bashrc

3. 在 root用户下 使用 crontab -e编辑 任务, 编辑完成后, ctrl+x 退出保存,配置。 无需重新 cron服务。

配置任务是需注意:

a.定时执行的sh脚本 需用绝对路径

b. 使用环境变量执行脚本, 否则可能会出现手动执行脚本正常, 但使用cronjob触发任务却不能正确连接数据库, 0 3,7 * * * . /etc/profile; /bin/sh /xlt/tmp/xueting/TriggerBDDownloadConfig.sh

service cron status

service cron restart

4.sh 脚本如下

mysql -h 172.18.0.2 -P 32000 -u root -e " update dfm_platform.dfm_download_config set run_now = true where download_cfg_id in ( select distinct a.download_cfg_id as download_cfg_id from ( SELECT *, timestampdiff(MINUTE, CONCAT('2023-01-01 ', SUBSTRING_INDEX(trim(substring(cron_expression, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2))+ 2, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 3))-LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2)))), ',', 1), ':', trim(substring(cron_expression, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 1))+ 2, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2))-LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 1)))), ':', trim(SUBSTRING_INDEX(cron_expression , ' ', 1))), DATE_FORMAT(date_add(now() , INTERVAL 8 hour), '2023-01-01 %H:%i:%s')) as over_time FROM dfm_platform.dfm_download_config WHERE is_enabled = true and is_deleted = false and trim(replace(SUBSTRING_INDEX(cron_expression , ' ', 4), SUBSTRING_INDEX(cron_expression, ' ', 3), '')) IN ('?', '*') AND cron_expression NOT LIKE '%MON%' AND cron_expression NOT LIKE '%TUE%' AND cron_expression NOT LIKE '%WED%' AND cron_expression NOT LIKE '%THU%' AND cron_expression NOT LIKE '%FRI%' AND cron_expression NOT LIKE '%SAT%' AND cron_expression NOT LIKE '%SUN%' union all SELECT *, timestampdiff(MINUTE, CONCAT('2023-01-01 ', SUBSTRING_INDEX(trim(substring(cron_expression, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2))+ 2, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 3))-LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2)))), ',', 1), ':', trim(substring(cron_expression, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 1))+ 2, LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 2))-LENGTH (SUBSTRING_INDEX(cron_expression , ' ', 1)))), ':', trim(SUBSTRING_INDEX(cron_expression , ' ', 1))), DATE_FORMAT(date_add(now() , INTERVAL 8 hour), '2023-01-01 %H:%i:%s')) as over_time FROM dfm_platform.dfm_download_config WHERE is_enabled = true and is_deleted = false and cron_expression LIKE CONCAT('%',(select CASE dayofweek(now()) WHEN 1 THEN 'SUN' WHEN 2 THEN 'MON' WHEN 3 THEN 'TUE' WHEN 4 THEN 'WED' WHEN 5 THEN 'THU' WHEN 6 THEN 'FRI' ELSE 'SAT' END), '%'))a left join ( select * from dfm_platform.v_dfm_instance where create_time >=DATE(CONVERT_TZ(NOW(),'SYSTEM','Asia/Shanghai')))b on a.download_cfg_id = b.download_cfg_id where b.download_cfg_id is null and a.over_time > 30);"

测试脚本:

mysql -h 172.18.0.2 -P 32000 -u root -e "update dfm_platform.dfm_download_config set data_lag = 32 where download_cfg_id = 341"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值