docker部署Clickhouse集群遇到的坑--第二部
项目场景:容器部署Clickhouse分布式集群必须将数据目录挂载出来,但是网上有些文章并不适合生产:例如:https://blog.csdn.net/yangshenggu/article/details/122730803像这篇文章挂载的数据目录就有可能会有的sql执行不了参考文章问题描述在参考上面的方式docker部署clickhouse分布式集群时,就出现了以下问题。能create 库.表
·
项目场景:
容器部署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.
更多推荐
已为社区贡献1条内容
所有评论(0)