当数据库中表的数据量过大时,可能会影响查询数据速率,在不考虑将数据迁移到其他数据库的情况下,您可以将数据库中的历史数据或使用频率低的冷数据归档在当前数据库下的其他表中。同时,结合DMS提供的归档时清理源表功能,帮助您提升数据库性能和查询速度。本文为您介绍如何在同一数据库下进行数据归档。
前提条件
数据库类型为MySQL系列:RDS MySQL、PolarDB MySQL版、AnalyticDB MySQL 3.0。
说明MySQL数据库账号必须具有REPLICATION CLIENT权限。
实例已录入DMS。具体操作,请参见云数据库录入和他云/自建数据库录入。
需要归档的表必须存在主键或者唯一键。
说明建议表中包含修改时间的字段,以便将业务修改时间作为归档的过滤条件。
注意事项
使用该功能不限制实例的管控模式。
若在数据归档过程中选择了自动清理源库表数据,请注意源库表空间的预留情况,避免由于空间不足导致归档过程中出现异常。
实例的管控模式为安全协同或稳定变更,才可执行周期归档任务。若您仅需要单次执行归档任务,则不限制数据库的管控模式。
费用说明
同数据库归档操作,不需要购买目标数据库,所以不涉及费用。
数据归档
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
说明若您使用的是极简模式的控制台,请单击控制台左上角的图标,选择
。在页面右上角,单击数据归档。
在新建数据归档工单页面,配置以下信息:
配置项
是否必填
说明
任务名
是
请输入明确、清晰的任务名,方便后续查询。
归档目标
是
选中同库归档。
源数据库
是
搜索并选择数据库。
归档配置
是
表名:选择需要归档数据的表。
过滤条件(可选):输入归档数据的过滤条件。例如,
gmt_modified<='${6_month_ago}'
。说明如果您需要使用时间变量,例如,归档6个月前的数据,可以先进行变量配置。
单击添加(可选),添加多个源表。
归档表映射
否
您可以通过归档表映射查看归档后的表名、列和分库键等归档表信息。
变量配置
否
如果在归档配置中使用了自定义变量,则需要在此配置变量。
例如,时间变量为
6_month_ago
,时间格式为yyyy-MM-dd,偏移量设置为-6月。如果当前日期为2021-8-12,则变量${6_month_ago}
的值为2021-02-11。配置时间变量的更多信息,请参见配置时间变量。后置行为
否
若您选中清理原表已归档数据(delete-无锁),则在归档完成后,系统将自动执行归档后的源表数据删除操作,可以通过无锁数据变更的
DELETE
语句完成。但删除源表的同时,源库中会生成存储此次归档数据的备份临时表,请保证源库空间充足,避免空间容量不足引发实例不可用问题。清理备份临时表:您可以在确认数据归档完成且数据无误后,通过新建普通数据变更工单,清理源库中的备份临时表。
若您未选中清理原表已归档数据(delete-无锁),则需要在数据归档成功后,手动进行源表数据删除和空间优化。
清理源表数据:通过新建普通数据变更工单清理数据库中已归档的数据。新建普通数据变更工单,请参见普通数据变更。
源表空间优化:通过新建无锁变更工单完成源表空间优化。新建无锁变更工单,请参见通过无锁变更工单实现无锁结构变更。
运行方式
是
选择运行方式,当前支持:
单次执行:工单审核通过后,仅单次运行归档任务。
周期调度:工单审核通过后,可根据部署的周期调度执行归档任务。具体配置,请参见周期调度。
单击提交申请。
工单审批通过后,系统自动执行数据归档任务,等待归档任务执行完成。
若任务执行失败,您可在工单的执行区域,单击操作列下的详情,查看归档任务日志,找出任务执行失败的原因。若是由于网络或数据库连接失败等偶然发生的问题,您也可以单击断点重试,尝试重新执行。
当出现任务执行完成,表示已成功归档。归档后,您可以查询归档数据。
查询归档数据
在数据归档过程中,DMS会自动在当前数据库下创建一张前缀为tmp、后缀为工单号的表,用于存储归档数据。
例如,将orders_test表的部分数据归档到同库后,会在该库中自动生成tmp_orders_test_121****表。
在数据归档工单列表页面,单击归档视图。
单击目标行操作列下的查询。
页面会自动跳转到SQL窗口。
在左侧表列表中双击目标表名,单击执行。
双击表名默认选中SELECT语句(默认查询20条),若需要查询更多,可修改LIMIT(限制返回行数)后的值。
说明安全协同模式数据库默认返回行数为200行,系统规定查询返回行数上限为3000行。若需要调整查询返回的行数,可由管理员在
的基础配置项中修改。若您需要查询更多数据,且不受安全规则限制,可将数据导出至本地进行查询分析。具体操作,请参见数据库导出。