当数据库出现存储空间不足、表数据量过大导致查询速度变慢等情况时,您可以使用数据管理DMS提供的历史数据清理功能,定期清理历史数据,以提高数据库查询性能和响应速度、避免因存储空间不足而导致数据库性能下降及历史数据堆积对生产环境的稳定性产生影响。
前提条件
数据库类型为MySQL。
数据库实例的管控模式为稳定变更或安全协同。管控模式的更多信息,请参见管控模式。
操作步骤
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式的控制台,请单击控制台左上角的图标,选择
。填写数据变更工单申请后,单击提交申请。
部分参数信息说明如下:
参数名
说明
数据库
选择有变更权限的数据库。若您只有目标数据库的只读权限或表的变更权限则无法提交工单申请,具体请参见查看我的权限。
清理配置
填写表名、时间字段、时间精度、保留时长(日)和过滤条件(可空),系统将根据这些信息,自动生成相应的清理脚本。
说明如果是逻辑表,请填写逻辑表名。
设置保留时长可指定系统清理数据表中超过保留时长的数据。例如,保留时长设为7天,系统会清理数据表中保留时间超过7天的数据。
例如:表名(api_call_record_11)、时间列(gmt_create)、保留时长(7)、过滤条件(status = 1 or status=2),将会生成SQL:
DELETE FROM `api_call_record_11` WHERE `gmt_create` < SUBDATE(CURDATE(),INTERVAL 7 DAY) AND (status = 1 or status=2);
。定时执行
DMS在清理数据时会扫描全表,根据主键或非空唯一键分批执行,推荐执行时间设置为业务低峰期,且设置较低的执行频率。
说明定时执行的最小时间间隔为一小时。默认每天02:00执行。
策略配置
您可以指定执行时长,任务在执行指定时间后会自动暂停,避免在业务高峰期影响业务。
不指定执行时长,直到清理结束。
指定时长(小时):指定执行时长,避免下游同步链路(如DTS或ADB)消费能力受限,从而影响DMS服务。
在指定时长后,您还可以选择是否启用定期Optimize Table功能(碎片空间整理)。系统默认关闭此功能,您可手动开启,开启后可设置间隔数(默认为60)。例如间隔数设置为60,则系统会在清理60次数据后,发起并执行一次碎片空间整理。
说明仅数据库类型为RDS MySQL、PolarDB MySQL支持开启Optimize Table功能。
执行碎片空间整理的时长与策略配置中指定执行的时长有关,即碎片空间整理会随着执行任务时长结束而停止。
变更相关人
设置的相关人员都可查看工单,并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
提交申请后,您可以开启主备延迟检查并确定阈值、修改SQL。
(可选)开启主备延迟检查、设置阈值。设置主备延迟检查并确定阈值,以避免主备延迟过大,从而影响主备实例切换。
您可以在基本信息区域,单击分批执行配置,设置合理的主备延迟阈值(单位:秒)。如果主备延迟大于阈值时,将中断SQL执行。
说明目前仅支持RDS MySQL数据库使用该功能。
(可选)修改SQL。
提交申请后,系统将自动进行SQL预检查。如果预检查失败,您可以根据失败原因修改SQL,修改后重试。
说明在提交审批前,您可以修改分批执行配置和定时配置,一旦提交审批后,您将不能再修改这些信息。
单击提交审批。安全协同实例会根据设置的审批规则进行审批,稳定变更实例将自动通过审批。
工单审批通过后,系统将自动生成定时任务,同时发送邮件给工单责任人。您可以在基本信息区域,单击查看定时任务,查看定时调度信息,同时您还可以进行如下操作。
暂停调度
说明如果需要关闭调度,请前往历史数据清理工单详情页,单击右上角的关闭工单,再填入关闭工单的具体原因,单击确定即可。
重启调度
说明关闭工单后,若需要重启调度只能重新提工单。
修改工单责任人
工单责任人默认是工单提交者。定时调度的暂停、重启,只有工单责任人有权限执行,每次调度执行的邮件通知,也只会发给责任人。
定时任务生成后,系统将会按照设置的定时策略,定时执行生成的SQL脚本。可以在工单中查看所有的调度信息以及每次调度的详情。
说明每次定时调度时,会检查当前工单是否存在还在执行中的调度任务,如果还有任务在执行,本次调度将不会生成SQL任务,所以您需要合理控制定时执行的频率。
常见问题
在执行历史数据清理工单过程中进行表碎片空间整理会影响业务吗?
若您的目标实例已开启了无锁结构变更,则在执行历史数据清理工单时进行表碎片空间整理不会影响业务。若实例未开启无锁结构变更,建议您在业务低峰时执行表碎片空间整理,减少对业务的影响。开启无锁结构变更的操作,请参见开启无锁结构变更。
碎片整理如果执行时间过长,是否支持停止?
如果整理碎片时间过长,您可以在工单详情页的执行区域暂停任务。