Clickhouse节点替换

本文档详细介绍了如何在Clickhouse集群中替换故障节点。首先,在备用机器上部署Clickhouse,确保配置文件和数据目录正确。接着,通过停用集群、交换IP地址、同步数据文件、解压并授权给clickhouse用户来实现节点替换。最后,启动服务并验证数据一致性,处理可能遇到的异常问题。

背景:Clickhouse集群中某分片编号为2的副本节点硬盘故障,需要用新机器替换损坏的机器。

(ck版本:22.8.2..11)

操作过程: 

1、启用备用的clickhouse机器(11.66.1.96),在机器上部署ck
    1)安装CK:rpm -ivh *.rpm
    2)从ck集群中与损坏的机器互为副本节点的机器上拷贝配置文件config.xml和users.xml,然后要记得调整数据目录及<macro>
中的宏(特别是replica)。
     注意:*默认数据目录最好要与损坏节点的一致,因为CK本身保存数据时metadata和data目录下有特别多软链接。如果一定要放在其他目录,也要自己建软链接等保证CK内部软链接能够访问到数据。
           *配置文件和数据目录的权限一定要给clickhouse用户,这点特别重要,否则CK服务会开不起来,且日志中不会有任何提示。
    3)开启ck服务,并建本地表等测试ck是否正常,验证完后停止CK服务。
    4)ck服务设置为开机启动:service enable clickhouse-server
    5)从ck集群其他机器上拷贝/etc/hosts中CK主机映射到备用机器上。
    6)确保该节点与ck集群其他节点、zookeeper集群节点网络可通,以便能顺利切换。
  
  =====开始进行Clickhouse节点替换
 2、停止CK集群各节点的服务。
 3、将备用机器IP与损坏的节点IP互换
   1)修改损坏的clickhouse机器IP为11.66.1.40 --随便找个ping不通的就行
   2)修改备用的clickhouse机器IP为11.66.1.95 
   3)修改损坏的clickhouse机器IP为11.66.1.96 
 4、将与损坏的机器互为副本节点的机器上数据文件同步到备用的clickhouse机器对应路径下 
   注意:因CK的目录结构中很多软链接,所以有些目录要先压缩再scp同步(否则软链接会变成实际目录,导致CK开不起来),store目录可以直接scp到备用节点。
  cd /data01/clickhouse/default_data
    tar -zcvf access.tar access  
    tar -zcvf data.tar data 
    tar -zcvf dictionaries_lib.tar dictionaries_lib 
    tar -zcvf flags.tar flags 
    tar -zcvf logs.tar logs -------可不同步,在备用节点直接建空目录
    tar -zcvf metadata.tar metadata 
    tar -zcvf metadata_dropped.tar metadata_dropped 
    tar -zcvf preprocessed_configs.tar preprocessed_configs 
    tar -zcvf tmp.tar tmp 
    scp -r -P 100 /data01/clickhouse/default_data/*.tar test@11.66.1.40:/data01/clickhouse/default_data  
    scp -r -P 100 /data01/clickhouse/default_data/store test@11.66.1.40:/data01/clickhouse/default_data 
    
    有设置存储策略时,对应目录的数据也要同步:(这里有default_data和data两个数据目录)
    scp -r -P 100 /data01/clickhouse/data/store test@11.66.1.40:/data01/clickhouse/data
    
 6、登录备用节点进行文件解压及授权给clickhouse用户
        cd /data01/clickhouse/default_data
        tar -zxvf access.tar  
        tar -zxvf data.tar 
        tar -zxvf dictionaries_lib.tar 
        tar -zxvf flags.tar  
        tar -zxvf logs.tar  
        tar -zxvf metadata.tar  
        tar -zxvf metadata_dropped.tar 
        tar -zxvf preprocessed_configs.tar  
        tar -zxvf tmp.tar 
        
        chown -R clickhouse:clickhouse /data01/clickhouse 

 7、启动备用的clickhouse机器的clickhouse服务并验证数据是否与副本节点一致(停服务前可以先查副本节点的某张本地表,查看各分区数据量,这里进行初步比对)
 8、启动CK其他节点服务并验证所有节点是否正常

碰到的异常:

CK启动过程中近30张表报"The local set of parts of table xxx (23b8e95c-76eb-409b-9114-a107b44b2ced) doesn't look like the set of parts in ZooKeeper",服务无法启动,将对应的"/home/clickhouse/store/3fe/3fe23bac-1d6f-46b2-8861-348812152350/XXX.sql"移到备份目录后,CK启动正常。

2022.11.07 20:50:07.941913 [ 20198 ] {} <Error> Application: DB::Exception: The local set of parts of table XXX (23b8e95c-76eb-409b-9114-a107b44b2ced) doesn't look like the set of parts in ZooKeeper: 6.57 million rows of 6.57 million total rows in filesystem are suspicious. There are 9 uncovered unexpected parts with 6569922 rows (9 of them is not just-written with 6569922 rows), 0 missing parts (with 0 blocks), 0 covered unexpected parts (with 0 rows).: Cannot attach table `XX`.`XXX` from metadata file /home/clickhouse/store/3fe/3fe23bac-1d6f-46b2-8861-348812152350/XXX.sql from query ATTACH TABLE XX.XXX UUID '23b8e95c-76eb-409b-9114-a107b44b2ced' (`etl_time` DateTime COMMENT '时间', 。。。) ENGINE = ReplicatedMergeTree。。。

2022.11.07 20:50:38.897977 [ 20588 ] {} <Error> Application: Caught exception while loading metadata: Code: 231. DB::Exception: The local set of parts of table XX.XXX (23b8e95c-76eb-409b-9114-a107b44b2ced) doesn't look like the set of parts in ZooKeeper: 6.57 million rows of 6.57 million total rows in filesystem are suspicious. There are 9 uncovered unexpected parts with 6569922 rows (9 of them is not just-written with 6569922 rows), 0 missing parts (with 0 blocks), 0 covered unexpected parts (with 0 rows).: Cannot attach table `XX`.`XXX` from metadata file /home/clickhouse/store/3fe/3fe23bac-1d6f-46b2-8861-348812152350/XXX.sql from query ATTACH TABLE XX.XXX UUID '23b8e95c-76eb-409b-9114-a107b44b2ced' (`etl_time` DateTime COMMENT '时间',。。。) ENGINE = ReplicatedMergeTree。。。. (TOO_MANY_UNEXPECTED_DATA_PARTS), Stack trace (when copying this message, always include the lines below):

问题修复方案:ck连副本节点查看建表语句,放到新替换节点执行,然后连zk,将已经存在的zk路径删除,再在新替换节点重新建表成功。

    修复完成后验证新替换的节点本地表数据量与副本节点完全一致,同时数据是从HIVE同步过来的,修复后比对CK表数据量与HIVE的也完全一致。

首次在新替换节点建表报错:

Received exception from server (version 22.8.2):
Code: 253. DB::Exception: Received from 11.66.1.95:9000. DB::Exception: Replica /clickhouse/tables/7/XXX/replicas/ck-host-014 already exists. (REPLICA_IS_ALREADY_EXIST)

连ZK删除路径:rmr /clickhouse/tables/7/XXX/replicas/ck-host-014

其他问题:本来想把数据目录移走,发现部分表在副本节点上数据目录指向的实际目录就不存在,新替换节点也就不存在,不知道啥情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值