ClickHouse如何引用多个配置文件
对新手来说配置文件这块刚开始可能有点晕。
官方有个关于多个配置文件的说明,可以说基本看不懂,传送口:https://clickhouse.com/docs/zh/operations/configuration-files/
我摸索了一番在这里做个说明以免以后又忘了。
1.ClickHouse默认的主配置文件是/etc/clickhouse-server/config.xml
2.其余需要生效的配置文件需要位于/etc/clickhouse-server/config.d/目录,并且必须为xml格式
3.以两个常用的元素为例子,比如元素remote_servers(集群相关)和zookeeper(zk相关),在/etc/clickhouse-server/config.xml均有例子给出,以如下标签块显示:
<remote_servers>...配置信息...</remote_servers>
<zookeeper>..配置信息..</zookeeper>(默认被注释)
当在/etc/clickhouse-server/config.xml或者/etc/clickhouse-server/config.d/目录中xml配置以上两个标签后,会自动生效。并且元素remote_servers无需重启即可生效,元素zookeeper则需要重启生效
4.以元素remote_servers为例子,
若该元素按照标签块<remote_servers>...配置信息1...</remote_servers>配置在/etc/clickhouse-server/config.xml,
按照标签块<remote_servers>...配置信息2...</remote_servers>配置在比如/etc/clickhouse-server/config.d/cluster2.xml中,则配置1和配置2均可同时生效。
5.以元素remote_servers为例子,
在同一配置文件中,配置了两次元素remote_servers,以第一个为准生效。
比如/etc/clickhouse-server/config.d/cluster2.xml同时存在<remote_servers>...配置信息1...</remote_servers><remote_servers>...配置信息2...</remote_servers>,生效的是配置1
6.以元素remote_servers为例子,该元素默认标签为<remote_servers>..</remote_servers>,若想自定义标签名字比如改为<cluster_config>..</cluster_config>并且生效,则需要配置:
<remote_servers incl="cluster_config" optional="true" />,并会使得<remote_servers>..</remote_servers>失效。
注意,新的标签<cluster_config>..</cluster_config>需要配置在文件/etc/metrika.xml中,该文件是默认进行标签替换后的存放文件。
7.在第6点中,若标签<cluster_config>..</cluster_config>不想放在/etc/metrika.xml中,而且比如放在/home/clickhouse/substitutions.xml中,则需在/etc/clickhouse-server/config.xml(config.d其他xml文件没试验过)中配置:
<include_from>/home/clickhouse/substitutions.xml</include_from>
8./etc/clickhouse-server/config.xml和/etc/clickhouse-server/config.d/*.xml中所有配置文件的配置信息,在clickhouse启动后会整理这些文件的配置并展示在/var/lib/clickhouse/preprocessed_configs/config.xml。
该文件不能去修改,会自动根据/etc/clickhouse-server/config.xml和/etc/clickhouse-server/config.d/*.xml被热修改生效的配置而自动修改。