clickhouse集群节点重新加入
故障节点重新加入集群
1、当前现状
1.1、现状情况:
由于之前clickhouse03节点磁盘直接打满,节点停止大概二十天时间,局限于扩容磁盘,因为其他节点清理历史的数据,所以腾出来了空间,我们现在需要对clickhouse03节点做完快照后,需要做数据同步.
| 集群节点 | 现状 | 分片副本 |
|---|---|---|
| clickhouse01 | 节点正常 | 分片1,副本1 |
| clickhouse02 | 节点正常 | 分片1,副本2 |
| clickhouse03 | 节点故障(磁盘做了快照) | 分片2,副本1 |
| clickhouse04 | 节点正常 | 分片2,副本2 |
需要的操作,需要将数据从clickhouse04 同步元数据到clickhouse03,以及对应的store目录中的数据
1.2、元数据表文件迁移到clickhouse03
类似下面这种,*.sql这种是数据定义的,需要迁移到clickhouse03对应的目录,以及库所对应的软链接文件,都要迁移到clickhouse03对应的目录
就是类似下面的这种数据

#clickhouse03节点操作:
备份原来的旧数据 /data/container/clickhouse/data/store/下面的所有文件
mkdir -p /root/clickhouse-20231223bak
cd /data/container/clickhouse/data/store
mv * /root/clickhouse-20231223bak/
#clickhouse04节点导出数据到clickhouse03 #拷贝元数据目录到clickhouse03 #打印确认
cd /data/container/clickhouse/data/metadata/
ls -l |egrep -v 'default|system' | awk '{print $NF}' | grep -w data | awk '{print $7}'
for i in `ls -l |egrep -v 'default|system' | awk '{print $NF}' | grep -w '/data/container/clickhouse' | awk -F '/' '{print $7}'`; do rsync -rvza -e "ssh -p 2022" /data/container/clickhouse/data/store/${i} root@192.168.0.150:/data/container/clickhouse/data/store/ ;done
1.3、元数据库文件迁移clickhouse03
##打印确认
cd /data/container/clickhouse/metadata/
ls -l |egrep -v 'default|system|information_schema|INFORMATION_SCHEMA' | egrep [a-z,A-Z,0-9,_]+.sql | awk '{print $NF}'
clickhouse03节点操作:
备份原来的旧数据 /data/container/clickhouse/data/metadata/下面的所有文件
#保留system, default相关的库文件和数据表文件,异除其他 没用的节点
cp metadata metadata.bak -r
mv blmdq20231128* ckhdq20200728* data_platform* dghhdq20200728* ghzhl20200602* hdhdq20200728* /tmp/
mv kchtljzdqxxssfjc20231127* lj* nw* /tmp/
#clickhouse04节点操作
同步数据
for i in `ls -l |egrep -v 'default|system|information_schema|INFORMATION_SCHEMA' | egrep [a-z,A-Z,0-9,_]+.sql | awk '{print $NF}'`; do rsync -rvza -e "ssh -p 2022" ${i} root@192.168.0.150:/data/container/clickhouse/data/metadata/ ;done