管理分区计划

本文档旨在介绍如何在 ODC 上使用分区计划,包括对新建和删除的表分区进行自动管理。

背景信息

分区计划是专门针对 Range 分区的扩展功能,ODC 支持依据用户设置的分区策略对 Range 分区表进行自动管理,用户无需手动创建新分区,以方便维护 Range 分区表。

  • Range 分区:Range 分区是最常见的分区类型,通常与日期一起使用。在进行 Range 分区时,数据库根据分区键的值范围将行映射到分区。详情请参见 设置分区规则分区类型

  • 分区计划:分区计划是专门针对 Range 分区的扩展功能,ODC 支持依据用户设置的分区策略对 Range 分区表进行自动管理,用户无需手动创建新分区,以方便维护 Range 分区表。

  • 创建策略:ODC 支持依据用户设置的分区细则对表进行自动分区。创建分区策略方式包括顺序递增和自定义。

    • 顺序递增:创建分区策略方式,仅适用于时间、数字和字符字段类型。

      image

    • 自定义:创建分区策略方式,所有字段类型支持通过自定义 SQL 表达式创建分区策略。

      image

  • 删除策略:根据设置的分区保留数量保留最新的分区并删除多余的分区。

分区计划执行流程

image

  1. 对表设置创建分区策略/删除分区策略。

  2. 指定策略执行周期。

  3. 审批任务流程。

  4. 执行分区计划。

注意事项

  • 仅支持 OceanBase MySQL 和 OceanBase Oracle 数据源。

  • 仅支持 Range 分区表。

  • Range 分区表中的最后一个分区上限值为 MAXVALUE 时,数据库不允许新增分区,因此不支持通过 ODC 分区计划任务创建分区策略。

  • 分区计划默认每小时的 00 分 00 秒执行。

  • 数据库已存在一个分区计划时,新创建的分区计划审批通过后覆盖原有分区计划。

  • 表如果属于表组(tablegroup),创建分区可能会失败或破坏负载均衡,请谨慎配置创建策略。

  • 新建分区可能会导致表组(tablegroup)失效,因为同属于一个表组的表必须拥有完全一致的分区,而新建分区可能会破坏这种现状,导致表组失效。

  • 表如果包含全局索引,删除分区会导致全局索引失效,请谨慎操作;如果选择重建全局索引可能因耗时较久导致业务问题,或者重建全局索引失败导致线上问题。

  • 重建全局索引选项仅对 Oracle 模式有效,MySQL 模式下无此选项,因 MySQL 模式下默认会重建全局索引。

创建分区计划

示例:在数据源 mysql4253 下数据库 test_data 中,每隔 1 个月预创建 1 个 order 表分区。

信息项

示例值

项目名称

odc_test

所属数据源

mysql4253

数据库名称

test_data

表名称

order

  1. 在 SQL 窗口中,编辑 SQL 语句以创建表 order。

    image

    CREATE TABLE `order` (
    `time` date NOT NULL,
     `parti_key` int(11),
     `name` varchar(120) DEFAULT NULL
    ) partition by range columns(time, parti_key)
    (partition p2023_01 values less than ('2023-01-01', 20230101),
    partition p2023_02 values less than ('2023-02-01', 20230201))
  2. 在 SQL 开发窗口的 工单 页签中单击 分区计划 > 新建分区计划

    image

  3. 新建分区计划 面板中指定以下信息。

    image

    信息项

    说明

    数据库

    选择创建分区计划所属数据库。

    分区策略

    勾选所属库中的 Range 分区表,并单击image编辑对应的分区策略。具体配置请参见3分区策略使用示例

    说明
    • 勾选 分区策略 右侧的 仅显示未设置的表 时,支持过滤未设置的表。

    • 勾选 Range 分区表时,支持批量设置分区策略。

    设置策略执行周期

    1. 创建策略执行周期:设置所有的分区创建策略的执行时机,例如每晚 2 点执行。

    2. 删除策略执行周期:勾选自定义删除策略执行周期,设置所有的分区删除策略的执行时机,如果不勾选,分区删除策略将会和分区新建策略一起被调度执行。

    示例:创建策略执行周期每晚 3 点,删除策略执行周期每晚 1 点。表示每晚 3 点将会运行该数据库下所有的分区创建策略,每晚 1 点将会运行该数据库下所有的分区删除策略。

    image

    任务设置

    选择任务错误处理方式:

    • 停止任务:停止任务为默认方式,运行脚本的过程中出现错误时会停止运行。

    • 忽略错误继续任务:选择忽略错误继续任务方式,在运行脚本出现错后将跳过错误语句继续执行。

    执行超时时间

    默认 2 小时。

    备注

    描述项目的业务背景信息,例如变更目的、预期目标等。

  4. 指定上述信息后,单击面板右下角的 提交 按钮完成创建分区计划任务。

  5. 任务生成后会自动弹出 任务中心 面板,在任务中心可以查看任务审批状态和任务信息。

    image

查看分区计划

任务信息

  1. 工单 的分区计划列表中,单击操作列中的 查看 按钮。

    image

  2. 在弹出的 任务详情 面板中,单击 任务信息 页签查看任务基本信息和设置信息。

    信息项

    说明

    任务基本信息

    显示 任务状态任务编号任务类型、所属数据源风险等级、备注、创建人 创建时间 等信息。

    任务设置信息

    显示创建分区计划任务时所选择的 Range 分区表的分区策略信息。

  3. 在任务信息面板右下角,单击 再次发起,可以重新发起任务。

任务流程

  1. 任务详情 面板中,单击 任务流程 页签查看 发起任务状态审批状态执行状态 完成结果 等信息。

  2. 在面板右下角,单击 再次发起,可重新发起任务。

关联记录

  1. 任务详情 面板中,单击 关联记录 页签查看 任务编号所属库创建时间任务状态 查看 操作等信息。

  2. 在面板右下角,单击 再次发起,可重新发起任务。

任务日志

  1. 任务详情 面板中,单击 任务日志 标签查看任务的全部日志和告警日志。

    image

    信息项

    说明

    全部日志

    全部日志显示任务的 INFOERROR WARN 日志等全量信息。 单击 查找下载 复制 按钮,可查找信息、下载或复制全部日志信息。

    告警日志

    告警日志单独显示任务的 ERROR WARN 日志。当任务失败时,可通过告警日志查看错误信息。 单击 查找下载 复制 按钮,可查找信息、下载或复制告警日志信息。

  2. 单击 再次发起,可重新发起任务。

导入 分区计划任务

您可以将云数据库 OceanBase 中的实例迁移到 OB Cloud,并将已迁移实例中包含的分区计划任务迁移到 OB Cloud。

步骤一:从云数据库 OceanBase 导出分区计划任务

  1. 云数据库 OceanBase 管理控制台 的左侧导航栏中,单击 数据研发

  2. 单击 工单 > 分区计划 ,在 分区计划页面中,勾选目标工单,单击 批量导出

    image

  3. 在导出定时任务页面中,确认需要导出的任务,单击 全部导出

    image

  4. 导出成功后,在弹窗中复制密钥,并妥善保存,在后续导入该 分区计划时需要填写。

    image

步骤二:导入分区计划任务到 OB Cloud

  1. 云数据库 OceanBase 管理控制台 的左侧导航栏中,单击 生态集成,选择 SQL 开发 > OceanBase 开发者中心

    image

  2. 在开发者中心,单击 工单 > 分区计划,在 分区计划页面中,勾选目标工单,单击 导入 分区计划

    image

  3. 在导入分区计划的页面中,添加步骤一中导出的 zip 文件,填写 文件密钥,选择导入项目后,单击 下一步:预览

    image

  4. 在预览页面中,选择新的目标数据库后,勾选 我已确认导入的工单新旧数据库对象一致,单击 导入

    image

  5. 导入成功后,可以在分区计划列表中看到导入的分区计划。

    image

相关文档