clickhouse配置多块磁盘

1.概述

转载:clickhouse配置多块磁盘

最近让运维同学新搭了一个clickhouse集群,每台服务器都配置了多块磁盘,但是使用的时候还是按照以前的方式是使用的,导致系统盘空间不够。特此记录一下配置和使用方法。

2.集群配置

执行lsblk命令,可以看到本地机器的磁盘信息:
**在这里插入图片描述
主要需要修改的地方是config.xml文件,在配置文件中插入以下格式的语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!-- 存储路径 -->
<storage_configuration>
<disks>
<disk_name_0>
<path>/data1/clickhouse/</path>
</disk_name_0>
<disk_name_1>
<path>/data2/clickhouse/</path>
</disk_name_1>
<disk_name_2>
<path>/data3/clickhouse/</path>
</disk_name_2>
<disk_name_3>
<path>/data4/clickhouse/</path>
</disk_name_3>
<disk_name_4>
<path>/data5/clickhouse/</path>
</disk_name_4>
<disk_name_5>
<path>/data6/clickhouse/</path>
</disk_name_5>
</disks>
<policies>
<policy_name_1>
<volumes>
<volume_name_0>
<disk>disk_name_0</disk>
<disk>disk_name_1</disk>
<disk>disk_name_2</disk>
<disk>disk_name_3</disk>
<disk>disk_name_4</disk>
<disk>disk_name_5</disk>
</volume_name_0>
</volumes>
</policy_name_1>
</policies>
</storage_configuration>

disks设置磁盘的名字和路径,名字可以随意取。

policies是存储策略,建表的时候配置这个可以告知集群使用那个存储方式和路径。policy_name_1这个可以随意取名,相当于一个标识。

重启ClickHouse,运行下面的语句可以发现ClickHouse已经感知到了新增的磁盘。

1
2
3
4
5
SELECT 
name,path,formatReadableSize(free_space) AS free,
formatReadableSize(total_space) AS total,
formatReadableSize(keep_free_space) AS reserved
FROM system.disks

在这里插入图片描述

3.使用方法

ClickHouse会有一个名为“default”的磁盘,该磁盘指向config.xml中的data目录路径。还有一个相应的策略称为“default”。默认路径为:/var/lib/clickhouse。如果不指定存储策略,会使用默认的default策略,所有数据都存在默认路径下。

使用多个策略也很简单,只需要在新表上添加一个SETTINGS storage_policy =‘policy_name_1’;如果有多个SETTING,使用逗号隔开就好了,例如:SETTINGS index_granularity = 8192,storage_policy =‘policy_name_1’。

查询一下数据落盘情况:

1
2
3
SELECT table,disk_name,path
FROM system.parts
where table = 'bi_money_list'