---
title: ClickHouse混合部署测试指导-官方技术文章-鲲鹏社区
description: ClickHouse混合部署功能测试验证。
keywords: ClickHouse,混合部署测试,指导,官方技术文章,鲲鹏社区,环境信息,集群规划,混合部署功能验证
url: https://www.hikunpeng.com/developer/techArticles/20250912-7?envFlag=1
section: (其他)
---

# ClickHouse混合部署测试指导-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20250912-7?envFlag=1
描述: ClickHouse混合部署功能测试验证。
关键词: ClickHouse,混合部署测试,指导,官方技术文章,鲲鹏社区,环境信息,集群规划,混合部署功能验证

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

ClickHouse混合部署测试指导

ClickHouse混合部署测试指导

安装部署ClickHouse

发表于 2025/09/12

0

作者 | 朱勇

## 1 环境信息

鲲鹏硬件环境信息：

| CPU | 鲲鹏920 5220处理器（32核） |
| --- | ---|
| 内存 | 384G |
| 硬盘 | 系统盘：1 * RAID 0（1 * 1.2T SAS HDD）数据盘：12 * RAID 0（12 * 8T SATA HDD） |
| 网卡 | 业务网络10GE管理网络GE |
| 操作系统 | openEuler 22.03 LTS |

x86硬件环境信息：

| CPU | Intel 5218R（20核40线程） |
| --- | ---|
| 内存 | 384G |
| 硬盘 | 系统盘：1 * RAID 0（1 * 1.2T SAS HDD）数据盘：12 * RAID 0（12 * 8T SATA HDD） |
| 网卡 | 业务网络10GE管理网络GE |
| 操作系统 | CentOS 7.4 |

如果仅仅是测试混合部署的功能，那么对Arm和x86的核数没有要求，只要是Arm和x86架构的机器就行。

软件信息：

| 软件 | 版本 |
| --- | ---|
| Bisheng JDK | jdk8u342 |
| ZooKeeper | 3.8.0 |
| ClickHouse | 22.8.13.20 |

## 2 集群规划

使用2+2部署一个ClickHouse集群，验证混合部署的功能。

| 机器名称 | 用途 | 机器IP地址 |
| --- | --- | ---|
| Arm机器1(agent1) | 分片1 副本1 | xx.xx.xx.132 |
| x86机器2(agent2) | 分片1 副本2 | xx.xx.xx.133 |
| x86机器1(agent3) | 分片2 副本1 | xx.xx.xx.134 |
| Arm机器2(agent4) | 分片2 副本2 | xx.xx.xx.138 |

## 3 部署

请参见《大数据OmniMV ClickHouse 性能测试指南》部署ClickHouse。注意分配/副本的写法，比如：

```
<remote_servers><ck_cluster><!-- 数据分片1  --><shard><internal_replication>true</internal_replication><replica><host>ARM节点1 IP</host><port>9000</port></replica><replica><host>X86节点2 IP</host><port>9000</port></replica></shard><!-- 数据分片2  --><shard><internal_replication>true</internal_replication><replica><host>X86节点1</host><port>9000</port></replica><replica><host>ARM节点2</host><port>9000</port></replica></shard></ck_cluster></remote_servers>
```

每个节点的<macros></macros>标签需要有差异，根据shard，replica来进行配置：

```
<macros><cluster>mycluster</cluster><shard>0x</shard><replica>0x</replica></macros>
```

集群验证：

在每个节点上启动ClickHouse Server节点。

```
cllickhouse start
```

进入ClickHouse Client节点。

```
clickhouse client -h 192.168.58.168 --port 19000 -n -m
```

如启动不成功或进入不了数据库，可通过以下命令启动。

```
/usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid
```

启动后远程连接窗口。重新连接服务器再尝试进入数据库。

首先可以查看cluster信息。

```
select * from system.clusters where cluster='mycluster';
```

创建on cluster表。

```
CREATE TABLE customer on cluster mycluster(C_CUSTKEY UInt32,C_NAME String,C_ADDRESS String,C_CITY LowCardinality(String),C_NATION LowCardinality(String),C_REGION LowCardinality(String),C_PHONE String,C_MKTSEGMENT LowCardinality(String))ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default.customer','{replica}') ORDER BY (C_CUSTKEY);
```

创建分布式表。

```
CREATE TABLE default.customer_all on cluster mycluster as default.cusomer ENGINE = Distributed(mycluster, default, customer, rand());
```

查询分布式表，会利用所有的计算资源。

查询本地表，数据只会在同一个shard同步，然后计算资源也是只用到了本机的计算资源。

## 4 混合部署功能验证

### 4.1 ClickHouse标准数据集SSB测试验证

请参见《大数据OmniMV ClickHouse 性能测试指南》中的“SSB-分布式性能提升测试”章节。集群环境如下：

插入数据测试：

### 4.2 ClickHouse可靠性测试验证

须知：ClickHouse读写测试均需要验证。

验证机器的容错功能：其中一个节点的clickhouse server服务，比如ARM节点1或者X86节点1，其余3个节点仍然正常运行，预计SQL任务还是正常执行。

验证结果：

Arm节点1执行clickchouse stop

查询数据：

插入数据：

验证数据的完整性：同一个shard分片的clickhouse server服务，比如ARM节点1和X86节点2，如果失去了shard分片1，预计SQL任务会运行失败。

验证结果：

Arm节点1和x86节点2执行clickchouse stop

验证机器故障恢复功能：在ARM节点1和X86节点2同时故障的情况下，开始恢复其中一个节点，比如恢复ARM节点1，预计SQL任务还是会正常运行。

重新启动x86节点2：

x86节点2，重新启动arm节点1：

插入数据验证时存在异常，重新启动x86节点2后数据恢复正常。

验证机器故障节点替换功能：ARM节点1故障了，使用另外一个节点ARM3节点去替换ARM节点1，数据进行备份转移之后，进行查询，预计SQL任务可以正常运行。

Arm节点1停止服务：

```
clickhouse stop/usr/local/zookeeper/bin/zkServer.sh stop
```

修改agen2、agent3、agent4的配置文件并重启ClickHouse：

```
sed -i "s#10.44.119.181#10.44.119.132#g" /etc/clickhouse-server/config.xmlclickhouse restart
```

将arm节点1的“/etc/clickhouse-server/config.xml”复制到新增的节点arm3，启动ZooKeeper，启动ClickHouse。

```
sed -i "s#10.44.119.181#10.44.119.132#g" /etc/clickhouse-server/config.xml/usr/local/zookeeper/bin/zkServer.sh startclickhouse start
```

登录数据库。

```
clickhouse client -h localhost --port 19000 -n -m
```

创建本地表和分布式表，不要加“on cluster”，否则会报错，该表在其他节点已存在。

创建完本地表和分布式表后，会自动进行数据同步。期间可以在各节点上读写数据，但数据未同步完，但数据未同步完，在新节点上的数据会比较少，等同步完就和x86节点2数据一致了。

### 4.3 ClickHouse功能用例测试（主要是单节点功能测试）

请参见《ClickHouse功能测试初探 [了解详情](https://bbs.huaweicloud.com/blogs/272097)》。主要是单节点的功能用例测试，可能不涉及分布式用例，优先级较低。

可以使用clickhouse-test --help查看具体测试命令

预期在混合部署的模式下，单节点功能用例可以正常执行。

## 5 约束和条件

1. 节点扩容，历史数据不会自动同步。

新增节点，重新配置“/etc/clickhouse-server/config.xml”配置文件，新增<remote_servers>配置项，可以新增shard分片配置，之前的数据不会同步，后续新插入的数据会同步到该节点。

其余节点上的历史数据不会自动同步到该节点，需要手动插入数据。新增数据，会按照分片的数据插入到该节点。
2. 修改配置文件，需要重启ClickHouse服务。

比如，进行节点扩容，或者节点替换，过程中修改了“/etc/clickhouse-server/config.xml”配置文件，如果要生效配置，则需要重启clickhouse-server服务。

建议生产环境，集群规划相关的配置放在ZooKeeper配置项中，做到配置热生效。
3. 如果副本节点1故障，副本节点2刚插入完数据，副本节点1恢复，数据在同步过程中副本节点2故障，则可能丢失部分数据。

本页内容
