云浮网站建设兼职,品牌建设英文,外贸 网站建设,急求聊城网站建设本公司涉及到一部分数据推送的业务#xff0c;然后因为是配置数据传输任务的方式做的#xff0c;但是有时候数据任务会出现问题#xff0c;可能不推送等等情况#xff0c;所以需要有个程序监控是否数据推送完成#xff0c;简单就是检测规则就是定时跑源数据表和推送目标表…本公司涉及到一部分数据推送的业务然后因为是配置数据传输任务的方式做的但是有时候数据任务会出现问题可能不推送等等情况所以需要有个程序监控是否数据推送完成简单就是检测规则就是定时跑源数据表和推送目标表的最大ID然后进行比较。我用Java开发成本有点大就直接用Shell脚本简单写一下。
#! /bin/bash
# 将定时跑批任务的结果数据到一张表里
MANAGE_USERNAMEroot
MANAGE_PASSWORDroot
MANAGE_PORT3306
MANAGE_IPADDRESS192.168.21.103# 目标库
PRE_USERNAMEroot
PRE_PASSWORDroot
PRE_PORT3306
PRE_IPADDRESS192.168.21.104# 查询需要跑批的数据表
tables_namesmysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} -e select table_name from test.table_push_info where table_status0; | awk NR1{print $1}
for name in $tables_names;# 打印看一下效果echo $name拿到表之后就可以用来跑批
max_idmysql -u${PRE_USERNAME} -p${PRE_PASSWORD} -h ${PRE_IPADDRESS} -P${PRE_PORT} -e select COALESCE(id,0) from test.$name order by id desc limit 1; | tail -1
# 因为存在如果是没有数据返回空这边就判断为空的时候插入0if [ ! $max_id ];thenmysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} test -e update test.table_push_info set max_id0,update_timenow() where table_name$name; else mysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} test -e update test.table_push_info set max_id$max_id,update_timenow() where table_name$name; fi上述就是简单完成了
#! /bin/bash
# 将定时跑批任务的结果数据到一张表里
MANAGE_USERNAMEroot
MANAGE_PASSWORDroot
MANAGE_PORT3306
MANAGE_IPADDRESS192.168.21.103# 目标库
PRE_USERNAMEroot
PRE_PASSWORDroot
PRE_PORT3306
PRE_IPADDRESS192.168.21.104# 查询需要跑批的数据表
tables_namesmysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} -e select table_name from test.table_push_info where table_status0; | awk NR1{print $1}
for name in $tables_names;
do max_idmysql -u${PRE_USERNAME} -p${PRE_PASSWORD} -h ${PRE_IPADDRESS} -P${PRE_PORT} -e select COALESCE(id,0) from test.$name order by id desc limit 1; | tail -1# 因为存在如果是没有数据返回空这边就判断为空的时候插入0if [ ! $max_id ];thenmysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} test -e update test.table_push_info set max_id0,update_timenow() where table_name$name; else mysql -u${MANAGE_USERNAME} -p${MANAGE_PASSWORD} -h ${MANAGE_IPADDRESS} -P${MANAGE_PORT} test -e update test.table_push_info set max_id$max_id,update_timenow() where table_name$name; fi
done之后将将该程序部署到crontab就好 chmod x update_id.shcrontab -e
0 * * * * /data/update_id.sh这样就可以每小时执行一次脚本