冷数据归档使用说明

本文将为您介绍如何使用冷数据归档。使用前,请先确认您要归档的格式以及您的集群是否满足要求。更多信息,请参见归档格式对比版本要求

版本要求

  • 归档为CSVORC格式

    • 产品系列为标准版集群版时,内核版本需为如下版本之一:

      • MySQL 8.0.1且修订版本为8.0.1.1.31及以上。

      • MySQL 8.0.2且修订版本为8.0.2.2.9及以上。

    • 产品系列为多主集群(库表)时,内核版本需为8.0.1.0.13及以上。

  • 归档为IBD格式

    内核版本需为MySQL 8.0.1且修订版本为8.0.1.1.43或以上。

归档冷数据

您需先开启冷数据归档。在进行冷数据归档时,您可以根据实际需求选择归档普通表或分区表。

查询冷数据

  • 普通表

    无论您选择什么归档格式,均可在无需修改表的访问方式的情况下查询归档数据。

  • 分区表

    • 归档至OSS外表:需要修改表的访问方式才可查询到归档数据,即查询指定的归档表。更多信息,请参见分区表归档至OSS外表

    • 归档分区表:归档后的表为混合分区表。更多信息,请参见查询混合分区

      您可以通过以下两种方式来查询不同引擎的分区数据。

      • 在控制台将 hybrid_partition_query_mix_engine_enabled参数设置为ON,执行查询语句时,查询结果中就会包含非InnoDB分区的数据。示例如下:

        SELECT * FROM t1;

        其中,t1表示需要查询的混合分区表。

      • 在控制台将 hybrid_partition_query_mix_engine_enabled参数设置为OFF,查询指定分区中的数据。示例如下:

        SELECT * FROM t1 partition (p1);

        其中,t1表示需要查询的混合分区表,p1表示需要查询的分区。

说明

由于归档后的冷数据为单表多文件格式,在查看冷数据时,您可以采用并行查询进行查询优化,详情请参见冷数据并行查询

修改冷数据

  • CSVORC格式

    如果您有低频修改OSS上冷数据的需求,您可以通过ALTER语法将OSS上的冷数据导回至PolarDB存储空间进行修改。数据导回后,会同步删除OSS上的冷数据。完成数据修改后,您可以将修改后的表数据再次归档至OSS。

    普通表

    语法

    ALTER TABLE table_name ENGINE[=]engine_name;

    参数说明

    参数

    参数说明

    table_name

    需要导回的OSS表的表名。

    engine_name

    导回后的引擎类型。

    注意事项

    OSS表为只读状态时,不支持执行修改操作(INSERTUPDATEDELETE)。如需修改已经归档的冷数据,您需要将OSS表转换成可读可写的表,如InnoDB表。修改只读状态下的OSS表时,报错信息如下:

    1036 - Table 't' is read only

    示例

    在数据库oss_test中将OSSt导回至PolarDB存储空间。

    ALTER TABLE `oss_test`.`t` ENGINE = InnoDB;

    修改InnoDBt的数据,修改完数据之后,再次将InnoDB引擎中的表t归档至OSS。示例如下:

    ALTER TABLE t ENGINE = CSV CONNECTION = 'default_oss_server';

    ALTER TABLE t ENGINE = CSV STORAGE OSS;

    分区表

    语法

    ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);

    参数说明

    参数

    参数说明

    table_name

    需要导回的OSS表的表名。

    part_name

    需要导回的分区名称。

    partition_definition

    与需要导回的分区的partition_definition保持一致。

    示例

    在数据库中,将归档在OSS上的分区表tp1分区上的数据导回至PolarDB存储空间。

    ALTER TABLE t REORGANIZE PARTITION p1 INTO(PARTITION p1 values less than(100));
  • IBD格式

    与归档前的修改操作无差异,使用归档前的SQL语句修改即可。

删除冷数据

说明
  • 当前仅满足以下版本的PolarDB MySQL集群支持删除OSS上对应的文件:

    • 8.0.1版本且小版本需为8.0.1.1.42及以上。

    • 8.0.2版本且小版本需为8.0.2.2.23及以上。

  • 若您的集群的小版本不满足以上版本要求时,暂不支持删除OSS上对应的文件。建议升级您集群的小版本,具体请参见版本管理

在您将OSS上的表删除或导回至PolarDB存储空间后,OSS上的文件将不会自动同步删除。确认数据不再使用后,您可以按照以下步骤删除OSS上相应的文件。更多信息,请参见删除OSS上对应的文件

  • 普通表和OSS外表

    你需要使用DROP TABLE删除归档表,然后再通过CALL dbms_oss.delete_table_file('database_name', 'table_name');命令来删除OSS上对应的文件。

  • 分区表

    通过CALL dbms_oss.delete_table_file('database_name', 'table_name');命令来删除OSS上对应的文件。

删除OSS上对应文件的操作为异步执行,需等待集群中的所有节点不再依赖该OSS文件后,方可完成完全删除。此外,在流量较大时,此过程可能会存在一定的延迟。

归档格式对比

归档冷数据时,您可以根据以下对比评估选择适合的格式进行归档。

对比项

CSV

ORC

IBD

开源格式

归档方式

手动归档:

手动归档:

归档速度

ORC格式快

说明

只支持使用单线程方式归档数据。

说明

只支持使用单线程方式归档数据。

CSV格式快

说明

支持使用单线程和多线程并行归档两种方式。

查询速度

  • 较差。在没有索引且使用串行查询的情况下,查询性能约为InnoDB存储引擎的五分之一到十分之一。

  • 行存节点上,较ORC格式快。

说明

支持使用单线程和多线程两种方式读取数据。

  • 较差。在没有索引且使用串行查询的情况下,查询性能约为InnoDB存储引擎的五分之一到十分之一。

  • 适合通过单独的列存节点进行AP查询。

说明

只支持使用单线程方式读取数据。

说明

支持使用单线程和多线程两种方式读取数据。

支持事务

索引能力

归档后的数据修改方式

OSS上的归档表只读,需要将OSS数据导回至PolarDB存储空间,再进行修改。

归档后的表能正常执行DML操作。

占用的存储空间

与没有索引的InnoDB引擎中的表占用的存储空间一致。

相同数据量的情况下,占用的存储空间为CSV格式文件占用的存储空间的45%。

InnoDB引擎中的IBD文件占用的存储空间一致。

备份恢复

不支持。

说明

进行备份操作时,不会对OSS上已归档的冷数据进行备份,因此不支持通过备份进行库表恢复、备份恢复或按时间点还原操作。

归档后影响

  • 归档普通表

    归档后,无需修改表的访问方式即可查询归档数据。

说明
  • 归档普通表、OSS外表以及分区表均存在相关限制。请在进行归档操作之前仔细阅读,以避免对您的业务产生影响。

  • 冷数据归档后,数据将存储在系统默认的对象存储服务(OSS)上,而非存储在您的OSS中。目前,仅支持在PolarDB控制台上查看归档后的数据列表。