You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ClickHouse现有表扩展存储至新增挂载磁盘

ClickHouse表扩展存储:让新数据写入新增磁盘

前提确认

先确认新增磁盘已被ClickHouse识别,执行以下查询获取磁盘名称:

SELECT name, path FROM system.disks;

记录新增磁盘的name(例如new_disk)。


1. 配置存储策略

ClickHouse通过**存储策略(Storage Policy)**控制数据存储位置,需修改ClickHouse配置文件(可在/etc/clickhouse-server/config.d/下新增自定义配置文件,或修改主config.xml):

<storage_configuration>
    <policies>
        <!-- 自定义策略名称,例如new_data_policy -->
        <new_data_policy>
            <volumes>
                <!-- 指定新增磁盘作为优先写入的存储卷 -->
                <new_disk_volume>
                    <disk>new_disk</disk> <!-- 替换为你查到的新增磁盘name -->
                </new_disk_volume>
                <!-- 可选:保留原有磁盘作为 fallback,当新磁盘空间不足时使用 -->
                <old_disk_volume>
                    <disk>default</disk> <!-- 原有磁盘name -->
                </old_disk_volume>
            </volumes>
            <!-- 可选:磁盘剩余空间低于10%时触发数据迁移,按需调整 -->
            <move_factor>0.1</move_factor>
        </new_data_policy>
    </policies>
</storage_configuration>

修改后重启ClickHouse服务生效:

sudo systemctl restart clickhouse-server

2. 为目标表绑定存储策略

执行ALTER TABLE语句,将目标表的存储策略设置为刚创建的策略:

ALTER TABLE your_table_name MODIFY SETTING storage_policy = 'new_data_policy';

替换your_table_name为实际表名。


3. 验证配置效果

  • 确认表的存储策略已生效:
SELECT name, value 
FROM system.table_settings 
WHERE name = 'storage_policy' 
  AND database = 'your_database_name' 
  AND table = 'your_table_name';
  • 插入测试数据后,查看新分区的存储磁盘:
SELECT partition, disk_name 
FROM system.parts 
WHERE table = 'your_table_name' AND active = 1 
ORDER BY modification_time DESC LIMIT 10;

新生成的分区应显示在新增磁盘上。


补充说明

  • 仅对MergeTree系列引擎的表生效(绝大多数生产场景使用该引擎),新写入/合并生成的分区会自动使用新策略;
  • 若需迁移现有旧数据到新磁盘,可使用ALTER TABLE ... MOVE PARTITION语句逐个迁移分区,或使用clickhouse-copier工具批量迁移。

内容的提问来源于stack exchange,提问作者Marat_Galiev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:42:48