冷数据归档
冷数据通常指在集群中某些数据库表中几乎没有更新且读取频率非常低的数据。如果您有降低成本的需求,可以使用PolarDB MySQL版提供的冷数据归档功能,将这部分数据转存至低成本的对象存储服务(OSS),以降低数据存储成本。
技术原理
PolarDB MySQL版支持将数据归档为CSV、ORC和IBD三种格式。不同格式的归档原理有所差别,详细原理如下所示:
CSV或ORC格式 | IBD格式 |
您可以采用手动或自动两种方式进行数据归档。归档后的数据格式将转变为CSV或ORC格式,并分成多个文件存储在OSS上。同时,PolarDB存储空间内的这部分数据将被自动删除,存储费用也将随着存储空间容量的降低而减少。随后,PolarDB的节点可以通过阿里云内网访问OSS上的数据。更多信息,请参见手动归档冷数据与自动归档冷数据。 说明 归档分区表功能目前处于灰度阶段,如需使用,请前往配额中心,根据配额ID | 本方案在InnoDB存储引擎下使用OSS,而无需修改表所使用的存储引擎。您可以手动将IBD格式文件的存储位置从PolarDB存储空间迁移至OSS。归档后OSS上的IBD格式文件仍具有DML能力,并且保留了原有的索引结构,因此归档后的IBD格式文件仍然具备原有的索引能力。同时,PolarDB存储空间内的这部分数据将被自动删除,存储费用也将随着存储空间容量的降低而减少。更多信息,请参见归档为IBD格式。 说明 归档为IBD格式目前处于灰度发布阶段。如需使用,请前往配额中心,根据配额ID |
归档格式对比
归档冷数据时,您可以根据以下对比评估选择适合的格式进行归档。
对比项 | CSV | ORC | IBD |
开源格式 | 是 | 是 | 否 |
归档方式 |
| 手动归档: | 手动归档: |
归档速度 | 较ORC格式快 说明 只支持使用单线程方式归档数据。 | 慢 说明 只支持使用单线程方式归档数据。 | 较CSV格式快 说明 支持使用单线程和多线程并行归档两种方式。 |
查询速度 |
说明 支持使用单线程和多线程两种方式读取数据。 |
说明 只支持使用单线程方式读取数据。 | 快 说明 支持使用单线程和多线程两种方式读取数据。 |
支持事务 | 否 | 否 | 是 |
索引能力 | 否 | 否 | 是 |
归档后的数据修改方式 | OSS上的归档表只读,需要将OSS数据导回至PolarDB存储空间,再进行修改。 | 归档后的表能正常执行DML操作。 | |
占用的存储空间 | 与没有索引的InnoDB引擎中的表占用的存储空间一致。 | 相同数据量的情况下,占用的存储空间为CSV格式文件占用的存储空间的45%。 | 与InnoDB引擎中的IBD文件占用的存储空间一致。 |
备份恢复 | 不支持。 说明 进行备份操作时,不会对OSS上已归档的冷数据进行备份,因此不支持通过备份进行库表恢复、备份恢复或按时间点还原操作。 | ||
归档后影响 |
|
|
归档普通表、OSS外表以及分区表均存在相关限制。请在进行归档操作之前仔细阅读,以避免对您的业务产生影响。
冷数据归档后,数据将存储在系统默认的对象存储服务(OSS)上,而非存储在您的OSS中。目前,仅支持在PolarDB控制台上查看归档后的数据列表。
版本要求
归档为CSV或ORC格式
产品系列为标准版或集群版时,内核版本需为如下版本之一:
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或以上。
使用说明
归档冷数据
您需要先登录PolarDB控制台并开启冷数据归档功能,然后连接数据库集群,再执行冷数据归档操作:
普通表
手动将冷数据归档为CSV或ORC格式。更多信息,请参见归档普通表。
分区表
手动将分区表的部分分区数据归档或归档至OSS外表。更多信息,请参见归档分区表或分区表归档至OSS外表。
创建DLM策略自动归档冷数据。更多信息,请参见自动归档冷数据。
查询冷数据
普通表:无需修改表的访问方式即可查询到归档数据。
分区表:
归档至OSS外表:需要修改表的访问方式才可查询到归档数据,即查询指定的归档表。
归档分区表:归档后的表为混合分区表,具体查询方式请参考查询混合分区。
说明由于归档后的冷数据为单表多文件格式,在查看冷数据时,您可以采用并行查询进行查询优化,详情请参见冷数据并行查询。
修改冷数据
CSV或ORC格式
如果您有低频修改OSS上冷数据的需求,您可以通过
ALTER
语法将OSS上的冷数据导回至PolarDB存储空间进行修改。数据导回后,会同步删除OSS上的冷数据。完成数据修改后,您可以将修改后的表数据再次归档至OSS。更多信息,请参见将OSS数据导回至PolarDB存储空间。IBD格式
与归档前的修改操作无差异,使用归档前的SQL语句修改即可。
删除冷数据
对于不同的表和归档类型,删除方式存在差异,具体区别如下。更多信息,请参见删除OSS上对应的文件。
普通表和OSS外表
你需要使用
DROP TABLE
删除归档表,然后再通过CALL dbms_oss.delete_table_file('database_name', 'table_name');
来删除归档后的冷数据。分区表
通过
CALL dbms_oss.delete_table_file('database_name', 'table_name');
来删除归档后的冷数据。
费用
冷数据按照OSS中冷数据存储的容量收取费用,具体收费如下。同时,您可以购买PolarDB存储包来抵扣OSS中冷数据的存储容量,以减少这部分费用。详细信息,请参见存储包。
中国内地 | 中国香港及海外 |
0.00021/GB/小时 | 0.000294/GB/小时 |
示例:以中国内地为例,若您开启并执行了冷数据归档操作,归档的数据量大小为100 GB,则每小时费用为100 GB×0.00021元/GB/小时=0.021元/小时。
如何查看冷数据归档数据量大小,请参考查看冷数据归档信息。
专家面对面
若您对冷数据归档功能有任何问题,可通过钉钉搜索群号入群咨询。您可以直接@群内专家,并附上您要咨询的问题。同时,群内也有PolarDB智能小助手7*24小时在线回答您的问题。
钉钉群号:24490017825