docker部署Clickhouse集群遇到的坑--第二部

项目场景:

容器部署Clickhouse分布式集群必须将数据目录挂载出来,但是网上有些文章并不适合生产:

例如:https://blog.csdn.net/yangshenggu/article/details/122730803 像这篇文章挂载的数据目录就有可能会有的sql执行不了参考文章


问题描述

在参考上面的方式docker部署clickhouse分布式集群时,就出现了以下问题。能create 库.表,却不能删除表

例如:在执行drop table default.test命令时报错:

std::exception. Code: 1001, type: std::__1::__fs::filesystem::filesystem_error, e.what() = filesystem error: in rename: Invalid cross-device link [/var/lib/clickhouse/store/ab3/ab3f8bca-75d4-4a55-ab3f-8bca75d45a55/payment_order.sql] [/var/lib/clickhouse/metadata_dropped/default.payment_order.4b66a887-e3bd-410c-8b66-a887e3bd710c.sql] Cannot print extra info for Poco::Exception (version 21.7.6.1)

原因分析:

像这样的 Code: 1001,网上一点可用信息都没有,于是我从filesystem error: in rename: Invalid cross-device link 这里出发分析问题:网上看到这么一句话 硬链接限制:1.不能跨文件系统。2,不能连接目录。只能在同一个分区建立数据关联,就恍然大悟了

进一步分析

docker启动脚本为(如果你用host网络,就不能加-p):
docker run -d --name=clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
--ulimit nofile=262144:262144 \
-v /data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v /data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v /data/clickhouse/log:/var/log/clickhouse-server \
-v /data/docker/store:/var/lib/clickhouse/store \
yandex/clickhouse-server:22.1.2.2
clickhouse 数据目录:
[root@prd-clickhouse01 clickhouse]# ls
access  cores  data  dictionaries_lib  flags  format_schemas  metadata  metadata_dropped  preprocessed_configs  status  store  tmp  user_files
可以看出,上面的报错,大概就是metadata_dropped目录和store目录不在同一个文件系统,metadata_dropped目录没有挂载出来就在docker文件系统里,store目录挂载出来了那就在虚拟机的文件系统里

解决方案:

将两个目录放在同一个文件系统即可:

1,docker stop 容器名
2,docker rm 容器名
3,重写启动脚本如下:
docker run -d --name=clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
--ulimit nofile=262144:262144 \
-v /data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v /data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v /data/clickhouse/log:/var/log/clickhouse-server \
-v /data/docker/database:/var/lib/clickhouse:wr \
yandex/clickhouse-server:22.1.2.2
4,执行启动脚本
5,测试建表:
prd-clickhouse01 :) clickhouse-client -udefault  --password=j780UJy9D2tn
CREATE TABLE test_table01( \
    province        String, \
    province_name         String, \
    create_date           date \
) ENGINE = MergeTree(create_date, (province), 8192);
Query id: 05dde134-c20d-4e4a-b975-233d1e824a73
Ok.
0 rows in set. Elapsed: 0.010 sec. 
6,测试删表:
prd-clickhouse01 :) drop table test_table01;
DROP TABLE test_table01
Query id: 3a853f06-efb9-4bde-b10c-d2cb441ba914
Ok.
0 rows in set. Elapsed: 0.002 sec. 
prd-clickhouse01 :) show tables;
SHOW TABLES
Query id: 610a00c5-759d-450a-97d6-01e1cedf5ace
Ok.
0 rows in set. Elapsed: 0.004 sec. 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day-day-up2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值