点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
文档基础信息
集群架构:三分片两副本(3 分片 × 2 副本) 部署主机:3 台 故障节点:192.168.100.12 故障原因:数据盘物理损坏,更换新磁盘 丢失分片:shard1、shard3 业务影响:无中断、无数据丢失 恢复方式:从健康副本自动同步数据 恢复结果:数据完整恢复,副本状态正常
集群部署结构
192.168.100.10 :shard1、shard2 192.168.100.11 :shard2、shard3 192.168.100.12 :shard3、shard1
shard1 副本 192.168.100.10、192.168.100.12 shard2 副本 192.168.100.10、192.168.100.11 shard3 副本 192.168.100.11、192.168.100.12

故障描述
192.168.100.12 数据盘物理损坏,无法正常读写; 更换新磁盘后,节点本地数据目录为空; 该节点上 shard1、shard3 两个分片数据全部丢失; 故障节点直接重建库表时报错:副本已存在,无法创建。
故障恢复
sql
show create database db_name;
show create table table_name;
plaintext
Received exception from server (version 22.3.2):
Code: 253. DB::Exception: Received from *.*.*.*:9000. DB::Exception: Replica /clickhouse/tables/my_cluster_name/db_name/user_info_local/02/replicas/my_cluster_name-02-2 already exists. (REPLICA_IS_ALREADY_EXIST)
sql
select * from system.macros;
plaintext
┌─macro───┬─substitution─────────┐
│ cluster │ my_cluster_name │
│ replica │ my_cluster_name-02-2 │
│ shard │ 02 │
└─────────┴──────────────────────┘
sql
select concat('SYSTEM DROP REPLICA ''副本名'' FROM ZKPATH ','''',zookeeper_path,'''',';') from system.replicas where database in ('pd');
plaintext
SYSTEM DROP REPLICA 'clickhouse-2-1' FROM ZKPATH '/clickhouse/pd/tables/1-2/gateway_logs';
SYSTEM DROP REPLICA 'clickhouse-2-1' FROM ZKPATH '/clickhouse/pd/tables/1-2/plugin_logs';
SYSTEM DROP REPLICA 'clickhouse-2-1' FROM ZKPATH '/clickhouse/pd/tables/1-2/summary_per_5m';
sql
SYSTEM DROP REPLICA 'my_cluster_name-02-2' FROM ZKPATH '/clickhouse/tables/my_cluster_name/db_name/user_info_local/02';
查看副本状态,确认 is_replica_active=1,queue_size=0; 对比故障节点与健康节点数据行数、分区、数据块一致; 新写入数据可正常同步至所有副本; 节点重启无异常,无报错日志。
报错原因 更换磁盘后本地数据丢失,但 ZooKeeper 中仍保留故障副本元数据,导致元数据与本地数据冲突,无法重建表。 清理 ZK 副本作用 执行 SYSTEM DROP REPLICA 命令,删除 ZooKeeper 中失效副本信息,解除冲突,允许重新创建副本。 自动恢复原理 集群为三分片两副本架构,所有分片均存在健康副本;故障节点重建表后,ReplicatedMergeTree 引擎自动连接 ZooKeeper,获取数据块清单,对比本地缺失数据后,从同分片健康副本全量拉取数据块,自动完成数据校验与同步,最终副本激活加入集群。

本文作者:刘杰厚 (上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




