为了降低数据存储成本,同时保证查询性能,PolarDB-X支持将查询频度低的数据(称为冷数据)归档到OSS对象存储中。本文介绍了冷数据归档的方法。

功能介绍

开启冷数据归档功能后,需要对AUTO模式数据库下的TTL表,创建关联的冷数据归档表。创建完成后,在PolarDB-X实例的归档执行时间(即可维护窗口时间)内,原TTL表中的过期数据会定期地迁移到归档表中,PolarDB-X会自动执行冷数据归档操作。

由于归档任务对CN节点的CPU、IO资源有较大的消耗,因此在归档执行时间窗口之外,未完成的归档任务将会被悬挂起来,确保不影响实例的正常业务。当归档执行时间结束时,未完成的归档任务会暂停执行,在第二天相同的时间窗口内,再继续执行。

说明 在实例的基本信息页,支持修改可维护窗口时间。

PolarDB-X支持对归档数据进行备份,当前不再单独收取备份费用。

注意事项

  • PolarDB-X的5.4.14-16590002及以上版本支持该功能。
  • 仅AUTO模式下的TTL表支持该功能。
  • 绑定冷数据归档表后,原TTL表的DDL操作不支持同步到归档表。
  • 绑定归档表后,原TTL表的DDL操作会受到限制,可以先通过unarchive table {source_table_name}命令进行解绑,执行完DDL操作后重新绑定一张新的归档表。

    目前支持对原TTL表进行如下DDL操作:

    • 增加索引,减少索引 (包括普通索引和全局索引);
    • 清空表数据。
  • 冷数据存储需要单独计费,仅支持按量付费模式,收费标准如下:
    付费方式 存储价格
    按量付费 0.000167元/GB/小时

开启数据归档功能

  1. 登录云原生分布式数据库控制台
  2. 在页面左上角选择目标实例所在地域。
  3. 实例列表页,单击PolarDB-X 2.0页签。找到目标实例,单击实例ID。
  4. 在左侧导航栏中,单击数据恢复 > 数据归档
  5. 单击一键开启
    在弹出的对话框中单击确定,打开数据归档功能,进入归档数据详情页。456789

数据归档备份设置

  1. 归档数据详情页的数据归档备份区域,单击设置
  2. 数据归档备份设置对话框中,设置如下参数:
    456789
    • 数据归档备份:开关默认为打开,不可关闭。
    • 备份执行间隔:设置间隔多少天进行一次备份,取值范围为1~59天。
    • 备份保留策略:可选择备份数据在指定时间内保留或永久保留。
    • 备份保留时间:选择备份的保留时间,范围为30~730天。
    说明 OSS数据备份暂时无需单独计费,当前可免费使用。
  3. 单击确定

创建冷数据归档表

本文以创建TTL表t_order和关联的归档表t_order_oss为例说明创建冷数据归档表的步骤。

  1. 执行以下命令,在AUTO模式数据库中创建TTL表t_order。
    CREATE TABLE t_order (
        id bigint NOT NULL AUTO_INCREMENT,
        gmt_modified DATETIME NOT NULL,
        PRIMARY KEY (id, gmt_modified)
    )
    PARTITION BY HASH(id)
    PARTITIONS 16
    LOCAL PARTITION BY RANGE (gmt_modified)
    INTERVAL 1 MONTH
    EXPIRE AFTER 12
    PRE ALLOCATE 3;
    说明

    如果t_order表已经存在并且非TTL表,可执行以下命令,将其变更为TTL表:

    ALTER TABLE t_order
      LOCAL PARTITION BY RANGE (gmt_modified)
      STARTWITH '2021-01-01'
      INTERVAL 1 MONTH
      EXPIRE AFTER 12
      PRE ALLOCATE 6;

    TTL表的相关介绍及语法请参见TTL表功能

  2. 执行以下命令,创建归档表t_order_oss,并与t_order表绑定。
    CREATE TABLE t_order_oss LIKE t_order ENGINE = 'OSS' ARCHIVE_MODE = 'TTL';
    说明
    • ENGINE = 'OSS'表示表引擎为OSS服务,ARCHIVE_MODE = 'TTL'表示使用TTL模式进行表归档。
    • 归档表仅支持只读功能,不支持通过SQL直接写入数据。
  3. 当t_order表中的数据过期并归档到t_order_oss表中后,在归档数据详情页,可查看到归档表的归档状态。

    也可以通过查询information_schema.archive视图,查看归档表的归档状态。

关闭数据归档

  1. 归档数据详情页,单击右上角关闭归档按钮。
  2. 在弹出的对话框中单击确定,即可关闭数据归档功能。
    注意 关闭数据归档功能后,归档数据会被删除。

相关命令

命令或视图 用途
clear oss cache
  • 清空所有CN的本地缓存,释放磁盘空间(异步);
  • 读取最新缓存配置,重建缓存。
unarchive table {source_table_name} 由于冷数据归档表不支持DDL命令,因此涉及表结构变更的操作时,需要使用unarchive语法解除源TTL表和归档表的绑定关系。
set OSS_BACKFILL_SPEED_LIMITATION=XX 设置OSS数据归档的速度,取值范围为100000~300000,单位为:rows/s。
show filestorage 展示文件数据源配置,包含OSS URI、读限速、写限速、读流量、写流量信息,每5秒更新一次。
show cache_stats 展示缓存信息,包含缓存文件路径、文件数量、缓存空间大小、保留天数、命中和不命中次数统计。
show archive 展示数据库内部的TTL绑定情况,包含TTL表和归档表信息。
show files from {table_name} 展示归档表下,所有表文件信息(不含format文件和索引文件),包含拓扑信息、 文件内部行数、文件存储占用、创建时间、TSO时间。
check table {table_name} 展示归档表内所有表文件的存在性。
information_schema.files 展示归档表下各类文件的信息。主要包含:
  • 表文件;
  • 索引文件;
  • format文件。

示例如下:

select logical_table_name, file_name, file_type, extent_size, table_rows, create_time from information_schema.files where logical_table_name = {table_name};
information_schema.file_storage 展示文件数据源配置信息,包含文件数据源读锁、写锁的持有情况。

示例如下:

select URI, ENGINE, ROLE, READ_LOCK_COUNT, WRITE_LOCK_COUNT from information_schema.file_storage where ENGINE = 'OSS';
information_schema.archive 展示每一对TTL和归档表的归档情况,包含以下信息:
  • 上次归档触发时间;
  • 上次归档结束时间;
  • 下次归档触发时间;
  • 归档任务调度状态;
  • 归档任务状态。

示例如下:

select ARCHIVE_TABLE_NAME, LOCAL_PARTITION_TABLE_NAME, SCHEDULE_STATUS, LAST_FIRE_TIME, LAST_SUCCESS_ARCHIVE_TIME, ARCHIVE_STATUS from information_schema.archive where ARCHIVE_TABLE_NAME = {table_name};