若集群中某些库表的数据几乎没有更新、插入和修改操作,且读取频率非常低,如果您有降本需求,可以使用PolarDB MySQL版提供的冷数据归档功能,将这部分数据转存至低成本的OSS上存储,以降低数据存储成本。本章节介绍了冷数据归档方法、技术原理等内容。

技术原理

  • 归档为CSVORC格式的技术原理图如下:冷数据归档原理图集群中的热数据存储在PolarStore中,各个PolarDB节点通过分布式文件系统(PolarFileSystem)访问PolarStore中的数据。为降低数据存储成本,达到冷热数据分离管理的目的,您可以将PolarStore中的冷数据转存至OSS:

    • 对于普通表,您可以将冷数据归档为CSV或ORC格式并存储在OSS上,随后PolarDB节点可通过阿里云内网访问OSS上的数据。

    • 对于分区表,您可以将冷数据归档为CSV或ORC格式并存储在OSS上,或在读写节点上创建DLM策略来自动归档冷数据。目前冷数据归档功能支持将分区表中的部分数据以OSS外表的形式归档至OSS,同时也支持将分区表中的部分分区直接转存至OSS。

    归档后的数据格式会转变为CSV或ORC格式并分成多个文件存储在OSS上,PolarStore中的这部分数据会被自动删除,存储费用也会随着存储空间容量的降低而减少。

    说明
    • 归档分区表中的冷数据功能目前处于灰度阶段,如需使用,请前往配额中心,根据配额ID polardb_mysql_hybrid_partition找到配额名称,在对应的操作列单击申请来开通该功能。

    • 冷数据归档完成后,OSS上的归档表只读,且查询性能较差。在没有索引且使用串行查询的情况下,查询性能约为InnoDB存储引擎的五分之一到十分之一。您需要提前测试数据归档后是否能满足您的查询性能要求。

    • 当数据被归档为CSV或ORC格式作为冷数据存储后,不再支持事务。

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

  • 归档为IBD格式的技术原理图如下:

    image.png

    与归档为CSV和ORC格式的文件不同。该方案是在InnoDB存储引擎下使用OSS,而不用修改表所在的引擎。仅通过归档语句手动将IBD格式文件的存储位置从PolarStore迁移至OSS。归档完成后,PolarStore中的这部分数据会被自动删除,存储费用会随存储空间容量的降低而减少。归档至OSS的IBD文件仍具有DML能力。且IBD格式的文件保留了原有的索引结构,因此归档后的IBD格式的文件仍具备原有索引能力。详情请参见归档为IBD格式

    说明

    归档为IBD格式目前处于灰度发布阶段。如需使用,请前往配额中心,根据配额ID polardb_innodb_oss_enable找到配额名称,在对应的操作列单击申请来开通该功能。

费用

冷数据存储按照OSS中冷数据存储的容量收取费用,具体收费为:

  • 中国内地地域:0.00021元/GB/小时。

  • 中国香港及海外地域:0.000294元/GB/小时。

您可以购买PolarDB存储包,来抵扣OSS中冷数据的存储容量,以减少存储冷数据的费用。关于PolarDB存储包的说明,请参见什么是存储包

PolarDB存储包抵扣规则如下:

地域类型

抵扣因子

1 GB存储包的OSS存储空间抵扣量

中国内地

0.045

1/0.045=22.22 GB

中国香港及海外

0.045

1/0.045=22.22 GB

例如,您购买了一个容量为100 GB的PolarDB存储包,抵扣完存储空间使用量后还剩50 GB。您的集群的冷数据在中国内地地域使用了50 GB的OSS存储用量。此时,存储包将自动使用2.25 GB(50/22.22)的容量用于抵扣该部分的备份空间用量,最后该存储包还剩余47.75 GB容量。

若存储包中剩余容量不足以冷数据OSS存储用量,超出部分将正常按量付费。

说明

版本要求

  • 归档为CSVORC格式的集群的版本要求如下:

    • 当产品系列为集群版时,版本需为如下版本之一:

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

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

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

  • 归档为IBD格式的集群的版本要求如下:

    PolarDB MySQL版的集群版需为8.0.1版本且修订版本为8.0.1.1.38或以上。

不同文件格式对比

归档冷数据时,您可以根据实际需要,选择合适的归档文件格式。

文件格式

归档速度

读取速度

是否是开源格式

占用的存储空间

归档后的数据修改方式

IBD

较CSV格式快

说明

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

说明

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

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

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

CSV

较ORC格式快

说明

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

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

说明

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

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

需要将OSS数据导回至PolarStore,再进行修改。

ORC

说明

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

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

说明

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

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

使用说明

  • 归档冷数据

    您需要先登录PolarDB控制台开启冷数据归档功能,然后连接数据库集群,再执行冷数据归档操作:

  • 查询冷数据

    对普通表和分区表执行冷数据归档操作后,您可以通过以下方法查询归档后的冷数据:

    • 普通表:执行冷数据归档后,查询冷数据的方法和查询热数据的方法一致,不需要修改访问方式。

    • 分区表:执行冷数据归档后,查询冷数据的操作方法请参见查询混合分区

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

  • 修改冷数据

    • 修改CSVORC格式的冷数据。

      如果您有低频修改归档到OSS上冷数据的需求,您可以通过ALTER ENGINE语法将OSS数据导回至PolarStore进行修改。数据导回至PolarStore后,会同步删除OSS上的冷数据。修改完数据之后,您可以再次将修改后的表归档为OSS表。详情请参见将OSS数据导回至PolarStore

    • 修改IBD格式的冷数据。

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

  • 删除冷数据

    首先,你需要使用DROP TABLE删除归档表,然后再通过CALL dbms_oss.delete_table_file('database_name', 'table_name');来删除归档后的冷数据。

联系我们

若您对冷数据归档功能有任何问题,可通过钉钉搜索群号入群咨询。您可以直接@群内专家,并附上您要咨询的问题;同时群内也有PolarDB MySQL版 小助手24*7小时在线回答您的问题。

钉钉群号:24490017825