ClickHouse副本节点数据损坏恢复

参考链接:https://blog.csdn.net/qq_42082701/article/details/127771766

参考链接:https://kb.altinity.com/altinity-kb-setup-and-maintenance/suspiciously-many-broken-parts/

shell 复制代码
# 背景
	CK配置为1分片2副本

# 配置参数,这里我们将max_suspicious_broken_parts设置为0
<?xml version="1.0"?>
<yandex>
     <merge_tree>
         <max_suspicious_broken_parts>0</max_suspicious_broken_parts>
     </merge_tree>
</yandex>
	

# 创建表/clickhouse/tables/{shard}/test,{shard}在配置各个节点的配置文件中可能不同,这里不使用占位符
	create database test on cluster default;
	create table test.test on cluster default (A UInt32) ENGINE = ReplicatedMergeTree('/clickhouse/tables/shard0/test', '{replica}') order by A settings max_suspicious_broken_parts=0;
	insert into test.test select number from numbers(100000);
	

# 分离表并使数据损坏
	detach table test.test;

# 损坏数据,/var/lib/clickhouse/data/default/test/all_*** 使数据文件损坏:对 2 个或更多数据文件重复此操作。
I have no name!@clickhouse-0-0:/$ ls /var/lib/clickhouse/data/test/test/all_0_0_0
checksums.txt  columns.txt  count.txt  data.bin  data.mrk3  default_compression_codec.txt  primary.idx

I have no name!@clickhouse-0-0:/$ echo > /var/lib/clickhouse/data/test/test/all_0_0_0/data.mrk3
I have no name!@clickhouse-0-0:/$ echo > /var/lib/clickhouse/data/test/test/all_0_0_0/data.bin

# 附上表格
clickhouse-0-0.clickhouse-0.maas.svc.cluster.local :) attach table test.test;
ATTACH TABLE test.test
Query id: 6cc3e7d7-8439-4f04-bc6a-5231ffce3ecb
0 rows in set. Elapsed: 0.013 sec. 
Received exception from server (version 22.9.5):
Code: 231. DB::Exception: Received from localhost:9000. DB::Exception: Suspiciously many (1 parts, 308.00 B in total) broken parts to remove while maximum allowed broken parts count is 0. You can change the maximum value with merge tree setting 'max_suspicious_broken_parts' in <merge_tree> configuration section or in table settings in .sql file (don't forget to return setting back to default value). (TOO_MANY_UNEXPECTED_DATA_PARTS)
  • 方法一
shell 复制代码
# 设置force_restore_data标志,然后重启Clickhouse,
# 在 ClickHouse Keeper 中使用任意内容创建节点/path_to_table/replica_name/flags/force_restore_data,或运行命令来恢复所有复制表
# 启动时,服务器删除这些标志并开始恢复
I have no name!@clickhouse-0-0:/$ touch /var/lib/clickhouse/flags/force_restore_data

# 重启后,正常启动,不报错,查询数据是否从另外一个副本集中copy过来

# 异常数据被移到了detached目录
I have no name!@clickhouse-0-0:/$ ls /var/lib/clickhouse/data/test/test/detached/
broken-on-start_all_0_0_0
  • 方法二
shell 复制代码
# 如果可以接受数据丢失,可以将参数max_suspicious_broken_parts设置得大一些
<?xml version="1.0"?>
<yandex>
     <merge_tree>
         <max_suspicious_broken_parts>1000</max_suspicious_broken_parts>
     </merge_tree>
</yandex>
相关推荐
一米阳光86615 小时前
软考(中级)软件设计师核心笔记(3)数据库系统——概念、数据库设计
数据库·笔记·职场发展·软考·软件设计师
蓝斯4975 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
前端工作日常6 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
奈斯先生Vector6 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
都叫我大帅哥6 小时前
Spring @Transactional 注解完全指南
java·spring
Java成神之路-6 小时前
G1 垃圾回收器 :SATB + TAMS核心机制深度解析
java·jvm
前端工作日常7 小时前
我学习到的JIT即时编译与机器码缓存失效
java·后端
带刺的坐椅7 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·solon·jetty·undertow·mcp-server·htttp
建筑工程企业管理系统8 小时前
erp工程项目管理系统落地价值:实现工程多项目成本精细化核算与管控
大数据·数据库·人工智能
xcLeigh8 小时前
Go入门:变量声明的五种方式详解
java·开发语言·golang