背景: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): |
连ZK删除路径:rmr /clickhouse/tables/7/XXX/replicas/ck-host-014
其他问题:本来想把数据目录移走,发现部分表在副本节点上数据目录指向的实际目录就不存在,新替换节点也就不存在,不知道啥情况。
本文档详细介绍了如何在Clickhouse集群中替换故障节点。首先,在备用机器上部署Clickhouse,确保配置文件和数据目录正确。接着,通过停用集群、交换IP地址、同步数据文件、解压并授权给clickhouse用户来实现节点替换。最后,启动服务并验证数据一致性,处理可能遇到的异常问题。


3353

被折叠的 条评论
为什么被折叠?



