冷热数据分层存储"

 

配置冷热存储策略

更新时间 2023-09-06

创建对象存储策略后,若需使用冷热分离存储数据,将冷热数据分离存储,可在建表时添加语句指定冷热存储策略。

本小节主要介绍配置冷热存储策略,包括配置基于磁盘容量和基于 TTL 时间规则的存储。

约束限制

  • 添加 TTL 语句后,将优先基于 TTL 时间规则存储,再基于磁盘容量规则存储。
  • 不支持修改冷热存储策略参数值。

前提条件

  • 已创建对象存储策略。

基于磁盘容量规则

添加冷热存储策略语句如下:

 SETTINGS storage_policy = '<策略名称_hot_to_cold>'

以下示例建表语句,在 ossp_hot_to_cold冷热存储策略上,将数据将先存储在热数据盘 default,当热数据盘达到存储阈值,更早的数据将转移到 ossp 对象存储磁盘。

$ echo "CREATE TABLE test.t_local
(
   EventDate DateTime,
   CounterID UInt32,
   UserID UInt32
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventDate) 
ORDER BY (CounterID, EventDate)
SETTINGS storage_policy = 'ossp_hot_to_cold'"
| curl 'http://<ChronusDB 用户名>:<ChronusDB 密码>@<高可用 IP>:8123/' --data-binary @-

基于 TTL 时间规则

在基于磁盘容量规则存储基础上,添加 TTL 语句,可将指定时间前冷数据全部迁移。

添加 TTL 语句后,将优先基于 TTL 时间规则存储,再基于磁盘容量规则存储。

添加 TTL 存储语句

参考如下语法,添加 TTL 语句。

TTL <time_column> + INTERVAL <number> TO DISK '<disk_name>' |TO VOLUME '<volume_name>'
SETTINGS storage_policy = '<策略名称_hot_to_cold>'
参数 说明
time_column 日期或日期时间类型的列。
  • 只能包含字母、数字、下划线。
  • number 间隔时间和单位。
  • 常用单位包括 Day、Week、Month、Year。
  • disk_name 将数据片段移动到该磁盘`。
    volume_name 将数据片段移动到该卷。

    说明

    更多 TTL 语句说明,请参见 TTL

    以下示例简表语句,以 date 为时间列,在 ossp_hot_to_cold策略上,将180之前所有数据转移到 ossp 冷数据盘。

    $ echo "CREATE TABLE test.t_local
    (
        `date` EventDate DateTime,
        `f1` CounterID UInt32,
        `f2` UserID UInt32,
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(EventDate) 
    ORDER BY (CounterID, EventDate)
    TTL EventDate + INTERVAL 180 DAY TO DISK 'ossp' 
    SETTINGS storage_policy = 'ossp_hot_to_cold'"
    | curl 'http://<ChronusDB 用户名>:<ChronusDB 密码>@<高可用 IP>:8123/' --data-binary @-
    

    修改 TTL 存储语句

    添加 TTL 语句后,可修改 TABLETTLINTERVAL 等参数。可参考如下语法,修改 TTL 存储规则。

    说明

    -更改 TTL 存储策略后,存量数据和新增数据将全部按照新策略进行存储。

    -修改 TTL 存储策略后,已存入冷数据盘中的数据,将不能自动移动到热数据盘。如果需要移动,请参见移动冷热数据盘的数据。

    ALTER TABLE <table_name> ON CLUSTER default MODIFY TTL <time_column> + INTERVAL <number> TO DISK '<disk_name>'
    SETTINGS storage_policy = '<策略名称_hot_to_cold>'
    
    参数 说明
    table_name 表名称。
    time_column 日期或日期时间类型的列。
  • 只能包含字母、数字、下划线。
  • number 间隔时间和单位。
  • 常用单位包括 Day、Week、Month、Year。
  • disk_name 将数据片段移动该磁盘。
    这篇文档解决了您的问题吗?
    0
    0