数据要归档?ODC来帮忙

      最新版ODC 4.2.2 已经推出,上线了一个数据生命周期管理的功能,这个功能总体感觉还是很有吸引力,根据官方介绍,ODC 可以一次性或者周期将源数据库中的表数据归档至其它目标数据库中,以解决因线上数据增多影响查询性能与业务运作的问题。有了这个功能之后,我们就可以将很多历史数据,从主集群中剥离到历史归档的集群中,否则随着时间的推移,线上数据库的数据量会越来越大,而很多历史数据查询的次数越来越少,但是会导致表的查询性能变差。而将数据归档之后,线上数据库只保留几个月或者一年数据,超过这个时间的数据都可以归档并删除,这样就始终可以保证线上数据库较高的性能。具体是怎么实现的呢,接下来我这边就尝个鲜,带大家感受下这个功能。


原理介绍

这块根据官网介绍,先简单了解下原理。

数据要归档?ODC来帮忙-1

如上图所示,简单理解就是有两个任务,根据条件,把历史数据从在线库迁移到归档库,然后再将历史数据从在线库中删除,总体需要经过几个步骤的配置,包括选择归档内容 -> 配置归档条件 -> 定义调度方式 -> 数据清理策略 -> 最终执行,这中间也包含了一些流量的限制,以及任务的回滚,下面就边演示边介绍。


不过根据官网介绍,这里面也是有一些限制,可以看一下:

  • 前置条件:
    • OceanBase 数据源必须通过 OBproxy 连接(暂不支持对直连的 OceanBase 进行归档操作)。
    • OceanBase 数据源目前仅支持集群实例,新建数据源时必须配置集群名称。
    • OceanBase 数据源必须配置 sys 租户账号。
    • 非同类型数据源,数据归档不支持自动创建目标表。
    • 需保证源端表字段在目标端兼容,数据归档不处理字段兼容性问题。
    • MySQL 数据源暂不支持 CPU 内存防爆能力。
  • 归档链路支持:
    • OceanBase MySQL 到 OceanBase MySQL 。
    • MySQL 到 MySQL。
    • MySQL 到 OceanBase MySQL 。
    • OceanBase MySQL 到 MySQL。
  • 以下情况不支持归档:
    • 若表中不包含主键 PRIMARY KEY,不支持进行归档。
    • 若表中包含 bit、enum、set、xml 、geometry字段类型,不支持进行归档。
    • 若归档条件中包含 limit 语句,不支持进行归档。
    • 若表中包含外键,不支持进行归档。