• ADADADADAD

    Linux下实现Mysql定时任务的案例[ mysql数据库 ]

    mysql数据库 时间:2024-11-29 09:50:17

    作者:文/会员上传

    简介:

    假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程。实现方式:第一种是利用Mysql本身实现,制定event定时任务,可以借助Navicat For Mysql或其他数据库开发工具去做;第二种

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程。

    实现方式:

    第一种是利用Mysql本身实现,制定event定时任务,可以借助Navicat For Mysql或其他数据库开发工具去做;
    第二种实现方式是利用linux的定时任务,这个是利用Linux系统自带任务管理工具实现的。

    一、Mysql中event定时任务的相关命令,

    1.查看event是否启用:

    SELECT@@event_scheduler;或SHOWVARIABLESLIKE'event%';

    2.开启定时任务:

    setGLOBALevent_scheduler=1;或SETGLOBALevent_scheduler=ON;

    3.建立定时任务:

    DROPEVENTIFEXISTSJOB_ALARM;CREATEEVENTJOB_ALARMONSCHEDULEEVERY10MINUTEDOBEGINif(date_format(current_time(),'%H')>22||date_format(current_time(),'%H')<5)THENCALLPRO_ALARM();ENDIF;END

    4.建立存储过程:

    DROPPROCEDUREIFEXISTSPRO_ALARM;CREATEPROCEDUREPRO_ALARM()BEGINDECLAREuserIdVARCHAR(32);#这个用于处理游标到达最后一行的情况DECLAREsINTDEFAULT0;#声明游标cursor_name(cursor_name是个多行结果集)DECLAREcursor_dataCURSORFORSELECTtmp.USER_IDFROM(SELECTe.USER_ID,MAX(e.TIME_GMT)TIME_GMTFROMEVENTSeGROUPBYe.USER_IDHAVINGMAX(e.TIME_GMT)<UNIX_TIMESTAMP()-60*30ANDMAX(e.TIME_GMT)>UNIX_TIMESTAMP()-60*60*24)tmpINNERJOINEVENTStONtmp.USER_ID=t.USER_IDANDtmp.TIME_GMT=t.TIME_GMTWHERETYPE_ID!='34001';#设置一个终止标记DECLARECONTINUEHANDLERFORSQLSTATE'02000'SETs=1;OPENcursor_data;#获取游标当前指针的记录,读取一行数据并传给变量a,bFETCHcursor_dataINTOuserId;#开始循环,判断是否游标已经到达了最后作为循环条件WHILEs<>1DOINSERTINTOEVENTS_NOTIFICATIONVALUES(NULL,SYSDATE(),UNIX_TIMESTAMP(SYSDATE()),UNIX_TIMESTAMP(SYSDATE()),'00000',userId,'1','0');#读取下一行的数据FETCHcursor_dataINTOuserId;ENDWHILE;#关闭游标CLOSEcursor_data;END;

    二、利用linux的定时任务,

    linux定时任务基本命令:

    查看定时任务:crontab -l
    编辑定时任务:crontab -e

    */10 22-23,0-5 * * * mysql -u用户名 -p密码 -e "use db_name;CALL PRO_ALARM();"

    或者把use db_name;CALL PRO_ALARM();存到sql脚本中,编辑定时任务如下:

    */10 22-23,0-5 * * * mysql -u用户名 -p密码 < /application/Job_mysql.sql

    Linux下实现Mysql定时任务的案例.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: linuxmysql