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

如何正确修改ClickHouse数据存储目录避免硬链接损坏

ClickHouse数据目录迁移常见问题及正确操作

跨盘mv损坏硬链接的影响

跨文件系统执行mv命令时,硬链接会被拆解为独立的重复文件,该问题对ClickHouse服务的影响如下:

  • 基础的写入、查询操作短时间内可以正常运行,但会产生不必要的磁盘空间占用:原来多份硬链接共享的磁盘块会被复制多份,磁盘占用量可能翻倍
  • 后续ClickHouse的核心操作会出现异常:ClickHouse大量依赖硬链接实现MergeTree引擎的零拷贝合并、分区快照、分区克隆/删除、数据备份等功能,硬链接失效后上述操作会直接报错,长期运行可能导致数据异常、服务不可用

正确的迁移步骤

  • 停止ClickHouse服务,确认无运行进程
sudo systemctl stop clickhouse-server
ps aux | grep clickhouse-server

确认输出中没有clickhouse-server的运行进程后再进行后续操作。

  • 复制原有数据目录到新路径,使用rsync保留硬链接、权限、属主等所有属性
sudo rsync -aH /var/lib/clickhouse/ /mnt/sdc/clickhouse/

命令末尾的斜杠不可省略,代表复制目录内的所有内容而非目录本身。复制完成后可通过diff -rq /var/lib/clickhouse /mnt/sdc/clickhouse校验两边数据一致性。

  • 修改存储路径配置
    推荐在config.d目录下新增自定义配置文件避免升级时被默认配置覆盖,新建/etc/clickhouse-server/config.d/custom-data-path.xml,写入以下内容:
<yandex>
    <path>/mnt/sdc/clickhouse/</path>
    <tmp_path>/mnt/sdc/clickhouse/tmp/</tmp_path>
    <user_files_path>/mnt/sdc/clickhouse/user_files/</user_files_path>
    <access_control_path>/mnt/sdc/clickhouse/access/</access_control_path>
    <format_schema_path>/mnt/sdc/clickhouse/format_schemas/</format_schema_path>
</yandex>

你也可以直接修改/etc/clickhouse-server/config.xml替换所有/var/lib/clickhouse相关路径。

  • 重命名原有数据目录用作回滚备份,避免直接删除
sudo mv /var/lib/clickhouse /var/lib/clickhouse.bak
  • 修正新目录的属主权限,保证ClickHouse进程有读写权限
sudo chown -R clickhouse:clickhouse /mnt/sdc/clickhouse
  • 启动服务并验证
sudo systemctl start clickhouse-server

启动后先检查服务状态sudo systemctl status clickhouse-server,再登录clickhouse-client执行SELECT path FROM system.disks确认存储路径已生效,再验证原有表的查询、写入功能正常。

  • 确认服务稳定运行3-7天无异常后,可删除旧目录备份释放磁盘空间
sudo rm -rf /var/lib/clickhouse.bak

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:09:03