配置ClickHouse冷热分离
ClickHouse可通过设置冷热分离容量策略和TTL冷热分离自定义策略将不同时期、不同访问频率的数据存储在不同介质上,既提升了查询性能,又降低了存储成本。
冷热分离容量策略和TTL冷热分离自定义策略协同工作,互不干扰。当同时设置时,存储数据触发某个策略条件,系统便会执行相应策略。
前提条件
- 创建ClickHouse集群,且正常运行。
- 已安装ClickHouse客户端。
开启冷热分离并设置容量策略
- 方式一(创建集群时开启):
- 登录表格存储服务控制台。
- 在集群管理界面,单击集群管理界面右上角的“购买集群”。
- 进入购买集群界面,在集群购买页面选择ClickHouse数据库引擎,开启冷热分离特性并设置冷热分离策略。
- 完成参数配置,单击“立即购买”,规格确认无误,单击“提交”。
- 方式二(已存在集群手动开启):
- 登录表格存储服务控制台。
- 在集群管理界面:
- 单击目标集群操作列“更多 > 开启冷热分离”,弹出“开启冷热分离”窗口,设置冷热分离策略,单击“确定”。
- 单击目标集群“集群名称 > 详情”进入集群详情页面。单击集群信息模块“是否开启冷热分离”右边的“开启”。弹出“开启冷热分离”窗口,设置冷热分离策略,单击“确定”。
节点已使用容量占节点总容量的比值大于等于冷热分存策略设置的比例时,数据将被自动移动到冷存储卷。
配置TTL冷热分离自定义策略
- 使用SSH工具访问ClickHouse集群。
- 普通集群参考使用客户端连接ClickHouse普通集群。
./clickhouse client --host 集群内网地址 --port 9000 --user admin --password password
- 安全集群参考使用客户端连接ClickHouse安全集群。
./clickhouse client --host 集群内网地址 --port 9440 --user admin --password password --secure --config-file /root/config.xml
- 普通集群参考使用客户端连接ClickHouse普通集群。
- 创建数据库并使用数据库。
CREATE DATABASE demo;
USE demo;
- 创建冷热分离数据表,并设置冷热分离策略。
- ClickHouse集群为单副本创建冷热分离表命令。
CREATE TABLE hot_cold_table ( `f1` Int64, `date` DateTime ) ENGINE = MergeTree() PARTITION BY date ORDER BY date TTL date + INTERVAL 90 DAY TO DISK 'cold_disk' SETTINGS storage_policy = 'hot_to_cold';
参数说明:
- storage_policy:指定存储策略,值指定为hot_to_cold。存储策略一旦指定,后期无法更改。
- TTL表达式只是一个简单的SQL表达式,里面包含时间以及时间间隔。表示超过90天转存OBS。
TTL date + INTERVAL 90 DAY TO DISK 'cold_disk'
- INTERVAL支持的操作:second,minute,hour,day,week,month,quarter,year。
- ClickHouse集群为单副本创建冷热分离表命令。
- 导入数据测试验证。
insert into hot_cold_table values('10086','2025-04-15'); -- hot data insert into hot_cold_table values('10086','2023-12-26'); -- cold data insert into hot_cold_table values('10086','2024-12-24'); -- cold data insert into hot_cold_table values('10086','2025-03-24'); -- hot data insert into hot_cold_table values('10086','2018-10-01'); -- cold data
- 查询表数据。
cloudtable-e474-jxf-server-1-1 :) select * from hot_cold_table FORMAT CSV; SELECT * FROM hot_cold_table FORMAT CSV Query id: b9bc7bdd-8c34-4eec-bb35-e383de1e5b0d 10086,"2025-03-24 00:00:00" 10086,"2025-04-15 00:00:00" 10086,"2018-10-01 00:00:00" 10086,"2023-12-26 00:00:00" 10086,"2024-12-24 00:00:00" 5 rows in set. Elapsed: 0.107 sec.
- 查看冷热数据存储路径。以当前系统时间计算,并根据TTL策略规定超过90天数据存储在冷盘中。
select name, partition, active, path from system.parts where database = 'demo' and table= 'hot_cold_table' and active = 1;
图1 冷热数据存储查询结果