使用集群模式,需要在/etc/clickhouse-server/config.d下创建一个X文件(具体内容看其他大佬的帖子),然后在/etc/clickhouse-server/config.xml中include_from前面添加的X文件。
切回单机,则把/etc/clickhouse-server/config.xml中<include_from>标签删掉即可。
最开始用的单机模式,然后尝试了zk集群模式的副本和切片,当切回单机模式后启动报错。
报错信息如下:
No macro ‘shard’ in config while processing substitutions in ‘/clickhouse/tables/{shard}/st_order_mt’ at 20: Cannot attach table `default`.`st_order_mt` from metadata file /var/lib/clickhouse/metadata/default/st_order_mt.sql from query ATTACH TABLE st_order_mt (`id` UInt32, `sku_id` String, `total_amount` Decimal(16, 2), `create_time` DateTime) ENGINE = ReplicatedMergeTree(‘/clickhouse/tables/{shard}/st_order_mt’, ‘{replica}’) PARTITION BY toYYYYMMDD(create_time) PRIMARY KEY id ORDER BY (id, sku_id) SETTINGS index_granularity = 8192
网上查了很多帖子,都说是上述的两个xml配置的问题,试了两个多小时,各种办法都试了,还是解决不了问题。
最后是看了下面这个帖子才明白问题出在哪
ClickHouse常见问题及其解决方案_Quinto0的博客-CSDN博客
原来是我前面尝试zk集群模式的副本、切片的时候创建的表,仍然存在于clickhouse的数据库中,单机启动的时候,识别不了这些集群模式的表,从而导致clickhouse启动报错。
解决办法:将/var/lib/clickhouse/metadata/ 下的SQL与/var/lib/clickhouse/data/ 下的数据备份之后删除,并重启clickhouse服务。