Clickhouse设置多磁盘存储策略

设置多磁盘存储

clickhouse安装完成以后,配置了一个默认的存储空间, 这个只能配置一个目录,如果要使用多个磁盘目录,则需要配置磁盘组策略

查看当前的存储策略

复制代码
select name, path, formatReadableSize(free_space) as free, formatReadableSize(total_space) as total, formatReadableSize(keep_free_space) as reserved from system.disks;

可以看到只有一个default

复制代码
┌─name────┬─path─────────────────────┬─free─────┬─total────┬─reserved─┐
│ default │ /data06/clickhouse/ │ 1.54 TiB │ 1.82 TiB │ 0.00 B   │
└─────────┴──────────────────────────┴──────────┴──────────┴──────────┘

准备好磁盘目录

复制代码
mkdir /data01/clickhouse
mkdir /data02/clickhouse
mkdir /data03/clickhouse
mkdir /data04/clickhouse
mkdir /data05/clickhouse

chown -R clickhouse:clickhouse /data01/clickhouse
chown -R clickhouse:clickhouse /data02/clickhouse
chown -R clickhouse:clickhouse /data03/clickhouse
chown -R clickhouse:clickhouse /data04/clickhouse
chown -R clickhouse:clickhouse /data05/clickhouse

添加配置

添加配置到/etc/clickhouse-server/config.xml 中

复制代码
    <storage_configuration>
        <disks>
            <disk_hot1> <!-- 自定义磁盘名称 -->
                <path>/data01/clickhouse/</path>
            </disk_hot1> 
            <disk_hot2>
                <path>/data02/clickhouse/</path>
            </disk_hot2>
			<disk_hot3>
                <path>/data03/clickhouse/</path>
            </disk_hot3>
			<disk_hot4>
                <path>/data04/clickhouse/</path>
            </disk_hot4>
			<disk_hot5>
                <path>/data05/clickhouse/</path>
            </disk_hot5>
            <disk_cold>
                <path>/root/clickhouse_storage/cold/</path> 
                <keep_free_space_bytes>1073741824</keep_free_space_bytes>
            </disk_cold>
        </disks>



        <policies>
            <jbod_police> <!-- 自定义策略名称 -->
                <volumes>
                    <jbod> <!-- 自定义磁盘组名称 -->
                        <disk>disk_hot1</disk>
                        <disk>disk_hot2</disk>
						<disk>disk_hot3</disk>
						<disk>disk_hot4</disk>
						<disk>disk_hot5</disk>
                    </jbod>
                </volumes>
            </jbod_police>

            <hot_cold_police>
                <volumes>
                    <hot>
                        <disk>disk_hot1</disk> 
                        <disk>disk_hot2</disk> 
                        <max_data_part_size_bytes>1048576</max_data_part_size_bytes>
                    </hot>
                    <cold>
                        <disk>disk_cold</disk>
                    </cold>
                </volumes>
                <move_factor>0.2</move_factor>
            </hot_cold_police>
        </policies>
    </storage_configuration>
  • keep_free_space_bytes:选填项,表示不被使用的磁盘空间大小
  • jbod策略只需要配置一个磁盘组,part(如202107_0_0_0)储存轮询每个disk;适用于挂载了多块磁盘,但未配置RAID
  • hot/cold策略配置hot和cold两个磁盘组, part未超过(max_data_part_size_bytes选填项 * move_factor选填项, 默认0.1)则储存在hot磁盘组,超过则储存在cold磁盘组;适用于挂载了SSD和HDD磁盘
  • 磁盘策略可以配置多个

配置生效

依次重启每个节点:

/etc/init.d/clickhouse-server restart

再看磁盘disk就有多个了:

复制代码
:) select name, path, formatReadableSize(free_space) as free, formatReadableSize(total_space) as total, formatReadableSize(keep_free_space) as reserved from system.disks;

┌─name──────┬─path─────────────────────┬─free─────┬─total────┬─reserved─┐
│ default   │ /data03/clickhouse/ │ 1.54 TiB │ 1.82 TiB │ 0.00 B   │
│ disk_hot1 │ /data06/clickhouse/ │ 1.58 TiB │ 1.82 TiB │ 0.00 B   │
│ disk_hot2 │ /data07/clickhouse/ │ 1.61 TiB │ 1.82 TiB │ 0.00 B   │
│ disk_hot3 │ /data08/clickhouse/ │ 1.58 TiB │ 1.82 TiB │ 0.00 B   │
│ disk_hot4 │ /data09/clickhouse/ │ 1.58 TiB │ 1.82 TiB │ 0.00 B   │
│ disk_hot5 │ /data10/clickhouse/ │ 1.60 TiB │ 1.82 TiB │ 0.00 B   │
└───────────┴──────────────────────────┴──────────┴──────────┴──────────┘

存储策略也可以看到了,这个存储策略在建表的时候,可以指定

复制代码
 :) select policy_name, volume_name, volume_priority, disks, formatReadableSize(max_data_part_size) max_data_part_size, move_factor from system.storage_policies;

┌─policy_name─┬─volume_name─┬─volume_priority─┬─disks─────────────────────────────────────────────────────────┬─max_data_part_size─┬─move_factor─┐
│ default     │ default     │               1 │ ['default']                                                   │ 0.00 B             │           0 │
│ jbod_police │ jbod        │               1 │ ['disk_hot1','disk_hot2','disk_hot3','disk_hot4','disk_hot5'] │ 0.00 B             │         0.1 │
└─────────────┴─────────────┴─────────────────┴───────────────────────────────────────────────────────────────┴────────────────────┴─────────────┘
相关推荐
海南java第二人2 天前
ClickHouse 表引擎完全指南:从 MergeTree 到集成引擎的选型实践
clickhouse
lhyzws3 天前
CENTOS上的网络安全工具(三十七)SPARK on CLICKHOUSE
clickhouse
海南java第二人3 天前
用户行为漏斗分析是什么?ClickHouse 如何轻松实现?
clickhouse
时空无限5 天前
clickhouse 数据损坏无法启动问题修复
clickhouse
阿演6 天前
我把这个桌面数据库工具又升级了一轮:现在支持 ClickHouse,还能可视化建表和改表了
数据库·clickhouse·ai编程·数据库连接工具
海南java第二人6 天前
ClickHouse 稀疏索引深度解析:为什么 OLAP 数据库不用 B-Tree?
数据库·clickhouse
海南java第二人7 天前
ClickHouse 主键索引详解:不是唯一标识,而是排序规则
clickhouse
海南java第二人8 天前
ClickHouse 列式存储深度解析:优点、缺点与选型实战
数据库·clickhouse
努力攻坚操作系统9 天前
ClickHouse虚拟列
clickhouse
海南java第二人9 天前
ClickHouse 备份与恢复完全指南:从物理拷贝到内置备份的实战选择
clickhouse·备份与恢复