云服务器内容精选

  • 原理介绍 OBS对象存储是支持海量数据存储,并提供安全可靠的、低成本的分布式存储服务,ClickHouse基于OBS的优势构建冷热分离存储架构。ClickHouse实例所在的SSD云盘存放最近时间生成并且频繁访问的“热数据”,OBS存放较早时间生成且访问不频繁的“冷数据”,在建表的时候使用TTL实现数据根据特定时间策略进行冷热存储。 图1 冷热存储原理图 表1 模块说明 参数 描述 Volume 卷,有序的磁盘的集合。 Storage Policy 存储策略,卷的集合以及卷之间数据移动的规则。
  • 自定义冷热分离数据存储策略 使用clickhouse client客户端命令连接ClickHouseServer节点,具体请参考ClickHouse客户端使用实践。 创建配置冷热存储TTL策略的ReplicatedMergeTree表。 ClickHouse支持表级别的TTL表达式,允许您设置基于时间的规则,从而能够自动的在指定的磁盘或者卷之间移动数据,以实现了数据在不同的存储层之间的分层存储。 具体建表语句参考如下: CREATE TABLE example_table on cluster default_cluster ( d DateTime, a Int ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/example_table', '{replica}') PARTITION BY toYYYYMM(d) ORDER BY d TTL d + INTERVAL 3 YEAR, d + INTERVAL 1 YEAR TO VOLUME 'cold_obs_volume' SETTINGS storage_policy = 'hot_cold_separation_policy'; 以上示例,加粗部分为TTL配置。该示例将example_table表中d时间列三年后的冷数据删除,d时间列一年后的冷数据转存到OBS。 TTL表达式只是一个简单的SQL表达式,里边包含了时间以及时间的间隔,例如: 数据存活的时间为date_time时间的3天之后。 TTL date_time + INTERVAL 3 DAY 数据存活的时间为date_time时间的1年之后。 TTL date_time + INTERVAL 1 YEAR INTERVAL支持的操作:second,minute,hour,day,week,month,quarter,year。 storage_policy:指定自定义存储策略配置。当前示例为3“_clickhouse.storage_configuration.disks”参数中自定义的策略名。
  • 导入数据ClickHouse测试验证 执行以下命令插入验证数据: insert into example_table values('2023-12-27','10086'); -- hot data insert into example_table values('2023-12-26','10086'); -- hot data insert into example_table values('2022-12-24','10086'); -- cold data insert into example_table values('2022-11-24','10086'); -- cold data insert into example_table values('2018-10-01','10086'); -- deleted data insert into example_table values('2017-10-01','10086'); -- deleted data 查询表数据。 tesspmrB0002.mrs-dviw.com :) select * from example_table FORMAT CS V; SELECT * FROM example_table FORMAT CSV Query id: 3d6bfcb4-f082-4e97-8d95-f885e22ae689 "2023-12-27 00:00:00",10086 "2023-12-26 00:00:00",10086 "2022-11-24 00:00:00",10086 "2022-12-24 00:00:00",10086 4 rows in set. Elapsed: 0.037 sec. 当前系统时间为2024年4月份,根据TTL策略规则example_table表d列为'2018-10-01'和'2017-10-01'的数据已被删除。 执行以下查询hot data和cold data的存储路径。 select name, partition, active, path from system.parts where database = '数据库名' and table= '表名' and active = 1; 图10 冷热数据查询结果 当前系统时间为2024年4月份,example_table表d列为'202211'和'202212'超过一年的数据存储到了名disk_s3的OBS下。
  • 操作场景 ClickHouse基于开源ClickHouse的multi-volume storage特性,允许将ClickHouse表存储在包含多个设备的卷当中。通过在volume中定义不同类型的磁盘,根据数据的“冷”、“热”程度将数据存放在不同类型的磁盘上,即冷数据存储在OBS,热数据存储在ClickHouse中。实现了ClickHouse集群在提供查询性能的同时又能以低成本的方式实现数据的长期存放。 配置ClickHouse数据冷热分离存储的整体流程如下: 创建OBS并行文件系统 创建云服务委托并绑定集群 创建普通账号委托并绑定集群 ClickHouse集群添加OBS磁盘信息 配置磁盘存储策略 自定义冷热分离数据存储策略 导入数据ClickHouse测试验证
  • 购买ELB并配置对接ClickHouse 购买ELB并获取其私有IP地址 详细操作步骤请参考创建共享型负载均衡器。 登录“弹性负载均衡器”控制台,在“负载均衡器”界面单击“购买弹性负载均衡”。 在“购买弹性负载均衡”界面,“实例规格类型”选择“共享型”,“所属VPC”和“子网”参数需要和 MRS 集群保持一致,其他参数保持默认即可。 单击“立即购买”,确认配置信息,并单击“提交”。 创建完成后,在“负载均衡器”界面,选择对应的区域即可看到新建的负载均衡器。查看并获取该负载均衡器的私有IP地址。 添加ELB监听器 详细操作步骤请参考添加监听器。
  • 购买ELB并配置对接ClickHouse 购买ELB并获取其私有IP地址 详细操作步骤请参考创建共享型负载均衡器。 登录“弹性负载均衡器”控制台,在“负载均衡器”界面单击“购买弹性负载均衡”。 在“购买弹性负载均衡”界面,“实例规格类型”选择“共享型”,“所属VPC”和“子网”参数需要和MRS集群保持一致,其他参数保持默认即可。 单击“立即购买”,确认配置信息,并单击“提交”。 创建完成后,在“负载均衡器”界面,选择对应的区域即可看到新建的负载均衡器。查看并获取该负载均衡器的私有IP地址。 添加ELB监听器 详细操作步骤请参考添加监听器。