在/etc/clickhouse-server/config.xml配置文件中,在remote_servers节点增加配置如下图所示(两个clickhouse实例都是一样的)
下面配置的为一个shard分片,第一个分片中有两个replica副本
- <remote_servers>
- <cluster1116>
- <shard>
- <internal_replication>trueinternal_replication>
- <replica>
- <host>192.168.0.11host>
- <port>9000port>
- <user>defaultuser>
- <password>111111password>
- replica>
- <replica>
- <host>192.168.0.16host>
- <port>9000port>
- <user>defaultuser>
- <password>111111password>
- replica>
- shard>
- cluster1116>
- remote_servers>
配置zookeeper(两个clickhouse实例都是一样的)
- <zookeeper>
- <node index="1">
- <host>192.168.0.11host>
- <port>2181port>
- node>
- zookeeper>
配置弘,每个实例上,都填写自己的机器名
- <macros>
- <layer>cluster86layer>
- <shard>01shard>
- <replica>aa-server11replica>
- macros>
layer 指定我们的集群标志,或者使用cluster关键字shard 指定的是集群分片信息中的配置,在集群我配置的是01replica 配置当前节点的备份同步节点信息create database {new_database_name} ON CLUSTER {cluster_name};
上面语句中{new_database_name} 替换成新的数据库名称,{cluster_name}替换成集群名称
通过上面命令创建了数据库后,集群的两个节点就都有这个数据库了(执行命令的节点新建数据库后将命令写入ZK中,另外一个节点从ZK中获取信息创建数据库)
将
- ATTACH TABLE t_0addc621
- (
- `id` String,
- `reportName` String,
- `updateTime` Nullable(DateTime)
- )
- ENGINE = MergeTree()
- PARTITION BY toYYYYMM(date)
- ORDER BY id
- SETTINGS index_granularity = 8192
改成
- CREATE TABLE IF NOT EXISTS aa_db.t_0addc621 on cluster chcluster
- (
- `id` String,
- `reportName` String,
- `updateTime` Nullable(DateTime)
- )
- ENGINE = ReplicatedMergeTree('/clickhouse/aa_db/01/t_0addc621','{replica}')
- PARTITION BY toYYYYMM(date)
- ORDER BY id
- SETTINGS index_granularity = 8192
然后执行创建到数据库中
单节点集群的建表语句用的表引擎为MergeTree,读写分离的表引擎要变成ReplicatedMergeTree:
ENGINE = ReplicatedMergeTree('/clickhouse/aa_db/01/t_0addc621','{replica}')
3.1获取单节点中全部的建表语句放入一个文件夹中
可以从ch的metadata文件夹/data/clickhouse/metadata获取,也可以直接在DBeaver连接单节点库获取表sql

3.2linux服务器(之前的单节点的那一台)新建一个文件夹,并上传文件
[root@dc-server08 metadata]# mkdir -p /data/chtemp/metadata
[root@dc-server08 metadata]# cd /data/chtemp/metadata
上传文件到文件夹下面

3.3 修改ch_table_change.sh,并执行,将全部的建表sql语句修改成带集群的、引擎为ReplicatedMergeTree的
[root@dc-server08 metadata]# vi ch_table_change.sh

保存后执行
[root@dc-server08 metadata]# ./ch_table_change.sh
3.4 跑sql建表
[root@dc-server08 metadata]# for file in `ls | grep .sql`;do clickhouse-client --user default --password 1111111 -d aa_db --multiquery < $file;done
[root@dc-server08 metadata]# vim ./ch_insert.sh

保存后执行
[root@dc-server08 metadata]# ./ch_insert.sh
执行完成后集群的两个节点的表就都有数据了
ClickHouse ReplicatedMergeTree家族引擎_七年·的博客-CSDN博客_clickhouse replicatedmergetree
ClickHouse Replicated*MergeTree复制表原理、Distributed分布式表原理_我叫周利东的博客-CSDN博客_clickhouse复制表
ClickHouse和他的朋友们(13)ReplicatedMergeTree表引擎及同步机制_老叶茶馆_的博客-CSDN博客
ClickHouse实战-ReplicatedMergeTree分布式表 - 腾讯云开发者社区-腾讯云
clickhouse-client命令行参数及常用案例_upupfeng的博客-CSDN博客_clickhouse-client