首页/数据/NoSQL 速查/remote_servers 集群拓扑配置
ClickHouse56 条

remote_servers 集群拓扑配置

集群拓扑在 config.xml(或 conf.d 下的独立文件)用 remote_servers 定义:每个 shard 下挂多个 replica,配 internal_replication=true 时写副本表只写其中一个副本。

NoSQL 速查数据更新于 2026-10-13

集群拓扑在哪定义

集群拓扑在 config.xml(或 conf.d 目录下的片段文件)里用 remote_servers 定义:一个集群下面挂若干 shard,每个 shard 下再挂若干 replica,并写明主机与端口。节点自己属于哪个分片、哪个副本,由 macros 段里的分片与副本宏决定。

internal_replication 决定写入方式

internal_replication 设为 true 时,写入一张副本表只会写其中一个副本,其余副本由复制机制同步,配合 ReplicatedMergeTree 使用才有意义。设为 false 时写入会发往该分片的所有副本,由分布式表负责一致性,若同时又用了副本表就容易出现重复计数。

基本信息

配置位置config.xml 或 conf.d 下的片段文件
结构remote_servers 到集群名到 shard 再到 replica 列表
宏macros 里的分片与副本标识,供副本路径占位符使用
internal_replicationtrue 表示写一张副本表即可,由副本机制同步
校验SELECT * FROM system.clusters 查看展开后的拓扑

示例

示例
<remote_servers>
  <prod>
    <shard>
      <internal_replication>true</internal_replication>
      <replica>
        <host>ch-1</host>
        <port>9000</port>
      </replica>
      <replica>
        <host>ch-2</host>
        <port>9000</port>
      </replica>
    </shard>
  </prod>
</remote_servers>

-- 校验:查看展开后的分片与副本
-- SELECT cluster, shard_num, replica_num, host_name, is_local FROM system.clusters WHERE cluster = 'prod';

典型使用场景

  • 新集群搭建:定义分片与副本拓扑,并给每个节点配好宏
  • 扩容:增加分片或副本后同步更新各节点配置
  • 写入异常排查:确认 internal_replication 与表引擎是否匹配
  • 拓扑核对:用 system.clusters 确认每个节点看到的集群结构一致
  • 环境复刻:在测试环境搭一套同构集群做演练

要素与作用

要素作用注意
remote_servers定义集群拓扑集群名要与 DDL 中使用的名字一致
macros 分片与副本标识节点身份副本路径占位符依赖它
internal_replication写入策略true 配合副本表,false 由分布式表承担
system.clusters拓扑校验视图各节点看到的结果应当一致
配置改完后要用 system.clusters 校验展开结果,不要只看配置文件文本;各节点看到的拓扑必须一致,否则分布式查询会出现部分节点访问失败。
配置改动需要 reload 或重启才生效,滚动操作期间集群查询会短暂受影响;internal_replication 与表引擎搭配错误会造成数据重复或副本不同步。

易错点

  • internal_replication 设为 false 却仍使用副本表,容易出现重复写入或重复计数
  • 改完配置没有校验 system.clusters,集群名拼错会让 ON CLUSTER 语句直接失败
  • 忘记配置宏,副本路径占位符无法展开,建副本表时直接报错
  • 滚动重启期间同时发起结构变更,会让部分节点的配置与表结构暂时不一致

数据来源与参考

  • ClickHouse Docs: Server configuration (remote_servers)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌