跳到主要内容

数据归档与清理

NineData 支持数据归档功能,您可以将不再使用的数据归档到另一个数据库中进行备份,以空出业务库的存储空间,优化性能。本功能支持一次性执行和周期性自动执行。

背景信息

在线数据运行一段时间后,随着数据量的显著增加,业务数据的写入、更新和查询性能可能会受到一定影响。同时,过去一段时间内的数据通常不再被频繁查询使用,但在数据库中却占用着存储空间。为了满足性能优化和在线存储空间的需求,我们经常需要对符合一定条件的数据进行归档管理,同时对已经归档的数据进行清理。

NineData 的数据归档功能支持一次性或周期性的归档和清理功能,让您的业务库永远保持高性能稳定运行。

前提条件

  • 已创建或加入组织,并且该组织已开通数据库 DevOps 企业版,同时请确保您的包年包月订阅未过期。
  • 当前账号已切换到目标组织。更多信息,请参见切换到组织
  • 需要归档的表中必须有时间字段。
  • 目标数据库类型为 MySQL、PostgreSQL、MariaDB。

提交数据归档或归档+清理任务

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 数据库 DevOps>数据归档与清理

  3. 数据归档与清理页面,单击页面中的创建归档与清理

  4. 创建归档与清理页面,按照下表进行配置。

    参数
    说明
    任务名称输入数据归档任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    备注(可选)输入备注信息,例如针对该数据归档任务的用途描述。
    策略选择数据归档任务的策略,此处选择仅归档归档+清理。支持如下三种:
    • 仅归档:对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
    • 归档+清理:先对目标数据执行归档,然后再删除源库中已归档的数据。
    • 仅清理:该操作仅删除目标数据,不做归档处理。
    源数据源需要归档的数据所在的数据源和库(Schema)。
    目标数据源需要存储归档数据的数据源和库(Schema)。仅清理的情况下不可见。
    频率选择任务的执行频率。
    • 单次执行:仅执行一次。
    • 周期执行:创建周期性任务,根据您选定的周期循环执行。
    时区选择您数据源所在地域的时区。
    周期周期性任务需要选择,可按周按月选择在每周的星期几或每月的几号执行任务。勾选每天代表每天执行一次。
    启动时间周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。
    清理多少次后,执行1次Optimize仅在任务包含清理操作时可选。源数据源在进行数据清理后,存储空间不会自动释放,配置该选项可定期执行 Optimize 操作回收表空间。
    选择执行多少次清理后,自动执行 Optimize 操作。
    执行时长限制(1-24 小时),超过后任务自动终止,避免影响业务限制任务的执行时长,单位为小时。例如,您可以设置归档任务于业务低峰期的 0 点开始执行,执行时长设置为 6 小时,则早上 6点时,即使任务没有执行完成,也会自动停止,避免影响业务。
    数据冲突处理策略(仅 MySQL)配置数据归档至目标端时,遇到数据冲突时的处理策略。
    • 忽略:忽略当前造成冲突的操作,继续往下执行。
    • 覆盖:覆盖目标数据。
  5. 单击下一步,跳转至选择对象页面,配置需要归档的数据。

    参数
    说明
    系统变量定义系统变量,$bizdate 变量将自动获取当前系统时间,您可以自定义该系统时间的格式。时间格式的定义方法,请参见本文附录
    该功能主要用于数据归档与清理任务中新建表的表名、WHERE 条件的书写等场景。例如,将系统变量设置为 yyyyMMdd,在目标创建一个新表用于储存归档数据时,将表名设置为 new_table_${bizdate},当前日期为 2024-05-10,则表名会变成 new_table_20240510
    源表名选择源表中归档数据所在的表。
    目标表名选择目标表中,存储归档数据的表。该表的表结构需要和源表一致,如果不一致,您也可以单击右侧的映射与过滤手动进行表名和列名的映射。
    单击右侧的create_table图标,可以在目标库中新建一个表,您无需进行表名和列名的映射,系统会按照原表的表结构自动将归档数据存于该新表中。在指定表名时,您可以使用上面定义的系统变量,例如 new_table_${bizdate}
    时间字段选择一个时间字段,作为判断数据是否需要归档的依据,该字段通常反映了该行数据生成的时间。例如,您订单表中的订单创建时间。
    字段配置如果时间字段中选择的时间字段数据类型为数值(BIGINT、INT)或字符串(CHAR、VARCHAR),则您需要在这里配置初始化方式:
    • 时间格式:自定义时间格式,以确保 NineData 顺利读取这些数据类型的字段。时间格式的定义方法,请参见本文附录
    • 时间戳:如果时间字段是通过时间戳的方式存储的,可以选择时间戳,系统会根据您选择的时间精度(可选毫秒微秒)自动转换。
    保留天数基于前面选择的时间字段,选择需要归档多少天以前的数据,可选值为 1~3650 天。例如,您需要归档或清理一年以前的数据,则在此处输入 365
    操作
    • 映射与过滤:数据归档场景下,手动进行表名和列名的映射。例如将源表中某个列的数据存储到目标表中指定的列。
    • 预览 SQL:预览当前配置下,系统即将执行的归档、清理语句。
    • 删除:删除当前记录。
    添加表新增一条记录。
  6. 单击创建任务。在预检查节点,等待任务状态更改为待审批,然后单击页面右上角的提交审批,在弹出的窗口中选择流程审批人员,单击确定,进入提交审批节点。在预检查节点中,您还可以执行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的撤回,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的类似创建,复制出一个配置相同的新任务。
    提示
    • 根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
    • 如果当前审批流程中开启了不指定审批人,则此处将显示提交后,所有审批人均可审批,请在审批进程查看结果,您无需手动指定审批人,所有具备审批当前工单的人员均会收到审批提醒并支持对该工单进行审批。

    • 如果该数据源未配置审批流程,则任务自动跳过预检查提交审批节点,来到执行任务节点,并且任务状态变更为审批通过,您可以直接执行步骤 8
  7. 任务状态变更为审批中,在审批通过之前,您可以进行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的撤回,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的转交,更改该任务的审批人。
    • 单击页面中的查看对象,可以查看本次任务的执行对象。
  8. 任务状态变更为审批通过,任务的执行人单击页面右上角的执行,选择执行方式,并单击确定

    • 立即执行:马上执行任务。

    • 定时执行(仅一次性任务可选):选择一个时间执行任务。

  9. 等待任务状态变更为执行成功即可。

提交数据清理任务

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 数据库 DevOps>数据归档与清理

  3. 数据归档与清理页面,单击页面中的创建归档与清理

  4. 创建归档与清理页面,按照下表进行配置。

    参数
    说明
    任务名称输入任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。
    备注(可选)输入备注信息,例如针对该任务的用途描述。
    策略选择数据归档任务的策略,此处选择仅清理。支持如下三种:
    • 仅归档:对目标数据执行归档任务,将源库需要归档的数据复制到目标库保存。
    • 归档+清理:先对目标数据执行归档,然后再删除源库中已归档的数据。
    • 仅清理:该操作仅删除目标数据,不做归档处理。
    源数据源需要清理的数据所在的数据源和库。
    频率选择任务的执行频率。
    • 单次执行:仅执行一次。
    • 周期执行:创建周期性任务,根据您选定的周期循环执行。
    时区周期性任务需要选择,选择您目标所在地域的时区。
    周期周期性任务需要选择,可按周按月选择在每周的星期几或每月的几号执行任务。勾选每天代表每天执行一次。
    启动时间周期性任务需要选择,选择周期性任务在所选周期的几点执行任务。单击此刻将当前时间点设置为任务执行时间。
  5. 单击下一步,跳转至选择对象页面,配置需要清理的数据。

    参数
    说明
    源表名选择源表中需清理数据所在的表。
    时间字段选择一个时间字段,作为判断数据是否需要清理的依据,该字段通常反映了该行数据生成的时间。例如,您的订单表中的订单创建时间字段。
    保留天数基于前面选择的时间字段,选择需要清理多少天以前的数据,可选值为 1~3650 天。例如,您需要清理一年以前的数据,则在此处输入 365
    过滤条件(可选)设置过滤条件,仅符合过滤条件的数据会被清理。不设置则默认清理所有符合条件的数据。以测试数据 employees 表为例,将过滤条件设置为 emp_no>=10005,则 emp_no 列中小于 10005 的数据均不会被清理。
    操作删除:删除当前记录。
    添加表新增一条记录。
  6. 单击创建任务。在预检查节点,等待任务状态更改为待审批,然后单击页面右上角的提交审批,在弹出的窗口中选择流程审批人员,单击确定,进入提交审批节点。在预检查节点中,您还可以执行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的撤回,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的类似创建,复制出一个配置相同的新任务。
    提示
    • 根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
    • 如果当前审批流程中开启了不指定审批人,则此处将显示提交后,所有审批人均可审批,请在审批进程查看结果,您无需手动指定审批人,所有具备审批当前工单的人员均会收到审批提醒并支持对该工单进行审批。

    • 如果该数据源未配置审批流程,则任务自动跳过预检查提交审批节点,来到执行任务节点,并且任务状态变更为审批通过,您可以直接执行步骤 8
  7. 任务状态变更为审批中,在审批通过之前,您可以进行如下操作:

    • 单击页面右上角的refresh图标,刷新任务状态。
    • 单击页面右上角的撤回,直接撤回任务或重新编辑任务并提交。
    • 单击页面右上角的转交,更改该任务的审批人。
    • 单击页面中的查看对象,可以查看本次任务的执行对象。
  8. 任务状态变更为审批通过,任务的执行人单击页面右上角的执行,选择执行方式,并单击确定

    • 立即执行:马上执行任务。

    • 定时执行(仅一次性任务可选):选择一个时间执行任务。

  9. 等待任务状态变更为执行成功即可。

审批任务

前提条件

  • 当前任务的状态为审批中
  • 您是系统管理员或当前任务的审批人

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击 数据库 DevOps>数据归档与清理

  3. 数据归档与清理页面,找到目标任务,单击任务 ID 或任务右侧操作列的详情

    提示

    您也可以将鼠标放置在页面上方的notification图标上,在待办页签中单击目标任务。

  4. 任务详情页面,审批工单内容,根据实际情况选择转交审批通过审批不通过

    操作
    说明
    转交将任务转交给其他用户审批。
    审批通过批准申请,单击审批通过后,您可以按需输入通过原因,并单击确定
    审批不通过驳回申请,单击审批不通过后,您还需要输入驳回原因,并单击确定

附录:时间格式说明

类别时间字段说明
年份yyyy或y四位数当前年份,例如 2024。
yy两位数当前年份,例如 24。
月份M当前月份,例如 8。
MM当前月份,不到两位数的情况下补前导 0,例如 08。
MMM当前月份,后方补充中文“月”,例如 8 月。
MMMM当前月份的中文,例如八月。
天数d当月第 N 天,例如 1。
dd当月第 N 天,不到两位数的情况下补前导 0,例如 01。
ddd当年第 N 天,例如 214。
e当周第 N 天,例如 4。
w 当年第 N 周,例如 31。
时间段a当天的时间段,例如上午或下午。
时间h 当天的第 N 小时,例如 9。
hh当天的第 N 小时,不到两位数的情况下补前导 0,例如 09。
m当前分钟数,例如 5。
mm当前分钟数,不到两位数的情况下补前导 0,例如 05。
s当前秒数,例如 8。
ss当前秒数,不到两位数的情况下补前导 0,例如 08。
时区z时区偏移量(带冒号),例如 +08:00
zz时区偏移量(不带冒号),例如 +0800

以上时间字段格式可以自由组合使用。

示例:yyyyMMdd ahh:mm:ss 将以如下格式显示当前时间:20240801 下午14:30:00