首页 > 编程知识 正文

mysql数据库定时器开启(mysql设置定时任务)

时间:2023-12-07 20:37:47 阅读:313119 作者:IEOO

本文目录一览:

  • 1、mysql如何查看定时器有没有执行
  • 2、mysql定时操作有关时间差的问题
  • 3、如何在程序中实现对mysql的定时访问
  • 4、如何实现Mysql数据库每天自动备份定时备份?

mysql如何查看定时器有没有执行

mysql如何查看定时器有没有执行

1.查看是否开启evevt与开启evevt。

1.1、MySQL evevt功能默认是关闭的,可以使用下面的语句来看evevt的状态,如果是OFF或者0,表示是关闭的。

show VARIABLES LIKE '%sche%';

1.2、开启evevt功能

SET GLOBAL event_scheduler = 1;

2.创建定时器的过程

2.1、创建测试表test

drop table if exists test;

create table test

(

id int(11) not null auto_increment primary key,

time datetime not null

) engine=innodb default charset=utf8;

2.2、创建evevt要调用的存储过程test_proce

delimiter //

drop procedure if exists test_proce//

create procedure test_proce()

begin

insert into test(time) values(now());

end//

delimiter ;

2.3、开启evevt(要使定时起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1)

执行show variables like 'event_scheduler';查看evevt是否开启;

若没开启执行set global event_scheduler='on';

2.4、创建事件test_event(其作用:每隔一秒自动调用test_proce()存储过程)

drop event if exists test_event;

create event test_event

on schedule every 1 second

on completion preserve disable

do call test_proce();

2.5、开启事件test_event

mysql定时操作有关时间差的问题

MySQL从5.1开始支持event功能,类似oracle的job功能。

创建定时器 调用的存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS e_test $$

CREATE PROCEDURE e_test()

BEGIN

update pcdemo set v_isbag=0 where v_isbag=1 and to_days(now())-to_days(d_lasttime)=10;

END $$

DELIMITER ;

要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1

查看是否开启定时器

SHOW VARIABLES LIKE '%sche%';

开启定时器 0:off 1:on

SET GLOBAL event_scheduler = 1;

创建事件

--每隔一秒自动调用e_test()存储过程

CREATE EVENT IF NOT EXISTS event_test

ON SCHEDULE EVERY 1 SECOND

ON COMPLETION PRESERVE

DO CALL e_test();

开启事件

ALTER EVENT event_test ON

COMPLETION PRESERVE ENABLE;

关闭事件

ALTER EVENT event_test ON

COMPLETION PRESERVE DISABLE;

如何在程序中实现对mysql的定时访问

修改 mysql 的 连接时间

============

第一种方法就是修改mysql,当时查资料《mysql5 管理员手册》里面说 mysql的timeout时间缺省是28800秒,也就是8小时,增加一个0就没问题了。 及在mysql界面里面输入mysqld-nt --default-table-type=innodb --interactive_timeout=288000。

如果是MySQL5以前的版本,需要修改连接池配置中的URL,添加autoReconnect=true

如果是MySQL5 以后的版本,需要修改my.cnf(或者my.ini)文件,在[mysqld]后面添加

wait_timeout = 172800

interactive-timeout = 172800

单位都是秒,记得必须都添加,否则不起作用,通过show variables查看wait_timeout的值。

第二种方法是在系统中做相应的配置,这种配置又分为两种,一种是传统的在系统中写定时检查连接的文件,另外一种就是交给服务器,让服务器来完成。先说第一种吧,我当时用的是c3p0链接池(因为当时还很崇尚hibernate),就是把3p0.testConnectionOnCheckout设置为true,然后将c3p0.preferredTestQuery设置为"select id from users where id=1"(users是我在项目中用户表,你也可以根据自己的实际换其他的表,但是查询的数据必须存在,*在附件中附上c3p0的常用属性)。第二种,jndi,其他的都差不多,及Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

maxActive="100" maxIdle="30" maxWait="10000"

username="feiji" password="111111" driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/其他的就不多做解释了,因为都很简单的东西,很多都是官方文档上面有的

如何实现Mysql数据库每天自动备份定时备份?

利用UCache灾备云平台,可作为一个工具,在window服务器现有架构不变的情况下,针对Mysql数据库每天自动备份定时备份。

(1)新建备份任务

UCACHE灾备云控制台登录账号后:点击【服务器定时数据保护】--【数据备份】点击【新建】按钮,然后选要保护的对象(您的生产服务器节点),选中对应的客户端,选择【文件系统】然后点击【 下一步 】

(2)设置备份策略

选择要进行备份的文件

(3)永久增量备份与数据保留设置

选择完要过滤的数据之后点击下一步,可进行下一步备份的高级功能选择,各个选项说明如下:

【永久增量备份】开启了永久增量备份每一次增量备份都会进行一次时间点合成形成新的一个永久增量时间点等效于完备时间点。

【数据保留策略】开启数据保留策略一共有三种保留策略分别为数据保留期限、保留副本数、按备份策略的备份周期设置副本保留策略默认选中数据保留期限一年。可以设置保留完全副本的个数最大可设置1024个副本按备份策略的备份周期设置副本保留策略最大可设置99999个副本。

【传输和存储加密】开启传输加密与存储加密选项开启此功能的任务的数据在传输和存储上都经过加密处理。一共有两种加密方式AES256加密算法、SM4加密算法。

【数据压缩】默认不开启开启该选项后默认启用快速压缩可选择启用强力压缩

【重复数据删除】勾选该选项可以启动源端重复数据删除的功能该选项在建立任务后不能通过修改任务的方式更改此属性。指纹库需要提前创建才能成功开启重删功能

最后新建完成

目录和文件内容,可以全选和分选,还可以利用UCACHE灾备云控制台的“文件过滤”“目录过滤”“时间过滤”功能进行不必要的数据不进行备份策略添加。为了备份效率不建议两个任务包含同一文件。

(4)设置邮件告警

备份执行完毕,会得到系统的执行反馈,也可以设定告警监控策略,进行邮件监控

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。