首批通过分布式安全可靠测评,为关键业务系统打造
数据归档
更新时间:2026-05-30 08:31:38
本文档旨在介绍如何通过提交数据归档作业实现归档数据。
背景信息
ODC 支持定时将源数据库中的表数据归档至其它目标数据库中,以解决因线上数据增多影响查询性能与业务运作的问题。
本文档以新建数据归档为例,介绍如何在 ODC 中将同一项目的数据库 odc_test_data_1 中的表 employee 和 order 归档到数据库 odc_test_data_2 中。
说明
文中所使用的均为示例数据,您可根据实际情况对数据进行替换。
原理介绍

注意事项
前置条件:
归档链路支持:
OceanBase MySQL 、MySQL 到 OceanBase MySQL。
OceanBase Oracle 、Oracle 到 OceanBase Oracle。
OceanBase MySQL、MySQL 到 MySQL。
OceanBase Oracle 、Oracle 到 Oracle。
PostgreSQL 到 OceanBase MySQL。
OceanBase MySQL、OceanBase Oracle、MySQL、Oracle、PostgreSQL 到对象存储(OSS、COS、OBS、S3)。
以下情况不支持归档:
OceanBase MySQL 数据源若表中包含 XMLTYPE 字段类型,不支持进行归档。
OceanBase Oracle 数据源若表中包含 JSON、XMLTYPE 字段类型,不支持归档。
PostgreSQL 数据源若表定义中包含数组类型、复合类型、枚举类型、几何类型、XML 类型、HSTORE 类型、全文检索,不支持归档。
若归档条件中包含 LIMIT 语句,不支持归档。
若表中包含外键,不支持归档。
支持自动建表链路
- OceanBase Oracle 到 OceanBase Oracle。
- OceanBase MySQL 到 OceanBase MySQL。
- MySQL 到 MySQL(MySQL 5.7 之前的版本除外)。
支持表结构同步链路
- OceanBase MySQL 到 OceanBase MySQL。
新建数据归档
在 SQL 窗口中,编辑 SQL 语句以创建表 employee 和 order。
CREATE TABLE `employee` ( `emp_no` int(120) NOT NULL COMMENT 'employee number', `birthday` date DEFAULT NULL COMMENT 'employee birthday', `name` varchar(120) DEFAULT NULL COMMENT 'employee name', `time` date NOT NULL COMMENT 'time' COMMENT 'create time', PRIMARY KEY (`time`) ) partition by range columns(time) ( partition p2023_01 values less than ('2023-01-01'), partition p2023_02 values less than ('2023-02-01') ); CREATE TABLE `order` ( `time` date NOT NULL, `parti_key` int(11), `name` varchar(120) DEFAULT NULL, PRIMARY KEY (`time`, parti_key) ) 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));在数据库列表中右键数据库名称,选择 作业调度 > 数据归档,打开新建数据归档页面。您也可以通过左侧导航栏 作业 > 数据归档 > 新建数据归档 进行该操作。

在 新建数据归档 页面中,填写以下信息。

信息项 说明 源端数据库 选择表所属的数据库。 说明
ODC V4.2.2 及之后的版本支持选择 MySQL 数据库,以将 MySQL 中的数据归档到 OceanBase 数据库中。
目标数据库 选择表归档的数据库。 说明
ODC V4.2.2 及之后的版本支持选择 MySQL 数据库,以将 OceanBase 中的数据归档到 MySQL 数据库中。
归档范围 - 部分归档:通过过滤条件归档源端数据库中部分表。
- 可使用常量或者引用变量配置中定义的变量来配置过滤条件。例如:
time<'${create_time}',其中create_time为变量配置中的变量名,time为归档表中的字段。说明
在过滤条件设置中可以进行关联表条件的配置。
- 勾选 指定分区,支持根据指定的分区归档数据。
- 单击 +添加,支持添加一个归档表,将该表归档到目标数据库中。
- 单击 +批量添加,支持批量添加多个归档表,同时将多个表归档到目标库中。
- 可使用常量或者引用变量配置中定义的变量来配置过滤条件。例如:
- 整库归档:归档源端数据库中所有表。
自定义变量 可选项。通过定义变量和设置时间偏移量筛选表中符合条件的行进行归档。 执行方式 选择 周期执行/立即执行/定时执行 设置任务执行方式。 限流策略 配置限流条件。 - CPU 使用率:当 OceanBase 数据库的 CPU 使用率超过该数值时,程序将自动暂停。
- 内存使用率:内存使用率计算方式为
MEMSTORE_USED * 100 / MEMSTORE_LIMIT,若不填写默认根据内存使用量是否超过1.05倍转储内存限流。当 OceanBase 数据库达到内存限流条件时,程序将自动暂停。 - 行限流:限制程序每秒处理的数据行数在该数值范围内。
- 数据大小限流:限制程序每秒处理的数据量在该数值附近波动。
作业设置 - 目标表结构不存在时自动创建:若目标数据库中不存在归档表,则根据源端数据库中的表结构自动创建。
- 通过全表扫描进行数据搜索:若使用全表扫描方式进行数据搜索,处理过程将更加稳定但性能可能会受到影响。
- 清理源端已归档数据:若您进行清理,默认立即清理且不做备份;清理任务完成后支持回滚。
- 修改清理时会话级别集群 ID 参数:当选择清理源端已归档数据时支持勾选。若源端为 OceanBase,可修改会话级别的 cluster_id 参数便于下游工具识别清理记录。参数避免与租户已使用的值重复,以防误识别。
- 数据插入策略:执行数据归档时,忽略重复数据/更新重复数据。
- 指定任务时长:任务启动指定时长后,若未完成则会暂停调度,等待下一次调度。
- 部分归档:通过过滤条件归档源端数据库中部分表。
单击页面下方 预检查,系统会预执行该作业,并提醒作业配置中的错误内容。
示例如下:

预检查完成后,单击页面下方 下一步:预览 SQL。
在预览 SQL 界面,检查执行 SQL 语句,设置作业名称后,单击 确定,完成新建数据归档。

任务生成后可以在 作业 > 数据归档 列表中查看任务信息。

查看数据归档任务
访问 作业 > 数据归档,在数据归档作业列表中,单击目标作业的名称,查看作业详情。也可以通过操作列的 ··· 对目标作业进行更多操作。
- 终止:当作业执行方式为周期执行或定期执行时,可通过终止结束该作业。勾选目标任务,可通过上方的批量操作按钮进行批量终止。
- 禁用/启用:当作业执行方式为周期执行或定期执行时,可通过禁用使该作业暂时停止执行,在重新启用后再次生效。
- 编辑:当作业状态为禁用时,可通过编辑对该作业内容进行更新。
- 删除:当作业状态为已完成或终止时,可通过删除对该作业进行删除操作。
- 查看:查看作业内容详情。
- 克隆:复制该作业执行内容,快速生成相同配置的新建作业界面。
- 分享:快速复制该作业的访问地址。

在弹出的作业详情面板中,默认展示该作业的 基本信息 页签,可以查看作业类型、源数据库、目标数据库、变量配置、归档范围和执行方式等信息。

在作业详情面板中,单击 执行记录 页签查看作业状态和执行详情等操作。

在作业详情面板中,单击 操作记录 页签查看作业的审批状态和变更记录。

批量导入/导出
批量导出
访问 作业 > 数据归档。
在数据归档列表中,勾选目标任务,单击 批量操作 > 批量导出。

在弹窗中确认导出内容,单击 导出,完成批量导出。

导出完成后,在页面右侧展示导出结果,导出成功后,可以查看密钥,并在本地查看导出文件。
注意
请妥善保存密钥,在导出文件导入时需要使用。

批量导入
访问 作业 > 数据归档。
在数据归档列表中,,单击 新建数据归档 右侧的 ∨ 按钮,选择 导入数据归档。

在导入数据归档弹窗中,选择要导入的文件,填写文件密钥,选择目标项目后,单击 下一步:导入。

勾选要导入的任务并选择目标数据库,勾选 我已确认相关业务风险,单击 导入。

待任务导入完成后,可在列表中进行查看。