当您需要在RDS MySQL中执行定时和周期性任务,例如定时发送统计报告、定时同步数据或定期清理过期数据等时,您可以使用事件调度(Event Scheduler)功能,根据预定计划自动执行数据库中定义的事件。本文介绍如何使用数据管理DMS为RDS MySQL设置循环事件(定时和周期性任务)。
前提条件
已创建具备目标数据库EVENT权限的RDS MySQL账号,即高权限账号、普通账号(读写)或普通账号(仅DML)。
操作步骤
步骤一:开启Event Scheduler
RDS MySQL的Event Scheduler默认是关闭的。您需要先启用Event Scheduler,然后设置循环执行事件。
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中单击参数设置。
在可修改参数页搜索
event_scheduler
,并将运行参数值设置为ON。说明RDS MySQL高可用系列实例不支持修改
event_scheduler
参数。单击提交参数,并在弹出的窗口中,选择立刻生效,并单击确定。
步骤二:在DMS上为RDS MySQL设置循环事件
单击页面右上角的登录数据库,进入DMS的快捷登录页面,使用RDS MySQL账号登录数据库实例,详情请参见通过DMS登录RDS数据库。
说明登录数据库实例时,管控模式选为自由操作。DMS管控模式的更多信息请参见管控模式。
在SQLConsole窗口中执行如下SQL创建测试表students。
说明如果使用数据库中已经存在的表,可以跳过此步骤,并在后续的事件语句中使用相应的SQL语句。
CREATE TABLE students ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(64) NOT NULL COMMENT 'name', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
在SQL窗口的可视化操作区域单击可编程对象,并在事件上单击鼠标右键,选择新建(事件)。
在新建(事件)页签,设置事件参数。
本文以事件名称为test01,调度方式为循环时间,间隔为10分钟,事件语句以为测试表students插入数据为例。事件参数的详细说明请参见表事件参数说明。
事件语句示例:
begin INSERT INTO students2(name) VALUES('zhangsan'); end
单击保存,在弹出的提交变更窗口确认SQL语句无误后,单击直接执行。
您可以在可编程对象页签的事件下查看新增的循环事件。您也可以在SQL窗口执行
SHOW EVENTS;
,查看循环事件的详细信息。说明使用
SHOW EVENTS;
查询时,如果事件的状态为ENABLED
,表示事件已启用。
步骤三:查看事件执行结果
查看事件的执行结果时,可以通过检查事件中的SQL语句来判断。
如果SQL语句执行成功,则可以通过检查相关表来验证结果。
如果SQL语句执行失败,您可以通过查看错误日志来获取更多详细信息。
在本文的示例中,在SQL窗口执行如下命令,查看事件执行结果。
SELECT * FROM students;
步骤四:删除循环事件
如果您在创建循环事件时,设置了到期删除和结束时间,那么循环事件到期后会自动删除,无需手动删除。
在可编程对象页签的事件下,右键单击目标事件,选择删除(事件)。
在弹出的窗口,单击直接执行。
您也可以在SQL窗口,执行DROP EVENT <事件名称>;
命令,删除对应的事件。