Clickhouse MergeTree异常数据处理

作者:俊达

说明

clickhouse mergetree的数据文件如果遇到数据损坏,可能会导致clickhouse无法启动。

本文章说明如何处理这类问题。

测试

我们先人为模拟破坏mergetree数据文件:

detach table:

ck01 :) detach table metrics;DETACH TABLE metricsQuery id: bb7f334b-5203-4040-8282-eb45b01b1b72Ok.0 rows in set. Elapsed: 0.001 sec.

清空data.mrk文件

root@ck01:/data/clickhouse/clickhouse/data/local/metrics/20221129_12_12_0# ls -l
total 36
-r--r----- 1 root root 251 Dec  6 05:37 checksums.txt
-r--r----- 1 root root 129 Dec  6 05:37 columns.txt
-r--r----- 1 root root   1 Dec  6 05:37 count.txt
-r--r----- 1 root root 164 Dec  6 05:37 data.bin
-r--r----- 1 root root 176 Dec  6 05:37 data.mrk3
-r--r----- 1 root root  10 Dec  6 05:37 default_compression_codec.txt
-r--r----- 1 root root   8 Dec  6 05:37 minmax_tt.idx
-r--r----- 1 root root   4 Dec  6 05:37 partition.dat
-r--r----- 1 root root  24 Dec  6 05:37 primary.idxroot@ck01:/data/clickhouse/clickhouse/data/local/metrics/20221129_12_12_0# echo > data.mrk3

配置参数

max_suspicious_broken_parts默认为10,表示可以容忍10个part数据异常。这里我们将max_suspicious_broken_parts设置为0。

root@ck01:/data/log/clickhouse-server# cd /data/etc/clickhouse-server/config.d/root@ck01:/data/etc/clickhouse-server/config.d# cat max_suspicious_broken_parts.xml
<?xml version="1.0"?>
<yandex><merge_tree><max_suspicious_broken_parts>0</max_suspicious_broken_parts></merge_tree>
</yandex>

启动实例

2022.12.06 06:50:39.749105 [ 64066 ] {} <Error> Application: DB::Exception: Suspiciously many (1 parts, 592.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): Cannot attach table `local`.`metrics` from metadata file /data/clickhouse/clickhouse/store/8a5/8a567911-82c1-402d-8e61-76dd938e89ef/metrics.sql from query ATTACH TABLE local.metrics UUID 'def88518-fd7b-418d-a7dd-6564e38bba39' (`tt` DateTime, `tags` Map(String, String), `metric` String, `value` Float64, `str_value` String) ENGINE = MergeTree PARTITION BY toYYYYMMDD(tt) ORDER BY (metric, tt) SETTINGS index_granularity = 8192, max_suspicious_broken_parts = 0
2022.12.06 06:50:39.749145 [ 64066 ] {} <Information> Application: shutting down
2022.12.06 06:50:39.749151 [ 64066 ] {} <Debug> Application: Uninitializing subsystem: Logging Subsystem
2022.12.06 06:50:39.749253 [ 64067 ] {} <Information> BaseDaemon: Stop SignalListener thread

这时候,我们发现,实例已经无法正常启动了。

解决方法

方法1:

如果可以接受数据丢失,可以将参数max_suspicious_broken_parts设置得大一些

<?xml version="1.0"?>
<yandex><merge_tree><max_suspicious_broken_parts>1000</max_suspicious_broken_parts></merge_tree>
</yandex>

方法2:

使用force_restore_data标记文件

touch /data/clickhouse/clickhouse/flags/force_restore_data
clickhouse-server --config-file /data/etc/clickhouse-server/config.xml --daemon

启动后,可以从detached_parts表中查看detach的part信息:

ck01 :) select * from detached_parts where table='metrics';SELECT *
FROM detached_parts
WHERE table = 'metrics'Query id: c6f61369-259d-4c07-b730-7572c3095bad┌─database─┬─table───┬─partition_id─┬─name─────────────────────────────┬─disk────┬─reason──────────┬─min_block_number─┬─max_block_number─┬─level─┐
│ local    │ metrics │ 20221129     │ broken-on-start_20221129_12_12_0 │ default │ broken-on-start │               12120 │
└──────────┴─────────┴──────────────┴──────────────────────────────────┴─────────┴─────────────────┴──────────────────┴──────────────────┴───────┘1 row in set. Elapsed: 0.002 sec.

异常数据被移到了detached目录

ls detached/
broken-on-start_20221129_12_12_0

如果不允许丢失数据,需要从备份中恢复数据。

可以使用alter table attach part命令从备份中将part恢复出来。

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索.NET中的定时器:选择最适合你的应用场景

概述&#xff1a;.NET提供多种定时器&#xff0c;如 System.Windows.Forms.Timer适用于UI&#xff0c;System.Web.UI.Timer用于Web&#xff0c;System.Diagnostics.Timer用于性能监控&#xff0c;System.Threading.Timer和System.Timers.Timer用于一般定时任务。在.NET 6及以上…

Java基础---反射

什么是反射&#xff1f; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 这么说可能比较抽象&#xff0c;可以简单理解为&#xff1a;反射就是一个人&#xff0c;可以把类里面的成员变量&#xff0c;成员方法&#xff0c;构造方法都获取出来。 并且可…

Springcloud智慧工地APP云综合平台源码 SaaS服务

目录 智慧工地功能介绍 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 具体功能介绍&#xff1a; 1.劳务管理&#xff1a; 2.施工安全管理&#xff1a; 3.视频监控管理&#xff1a; 4.机械安全管理&#xff1a; 5.危大工程监管&#xff1a; …

项目技术问题记录-内网环境下搭建LVS实现四层负载

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 lvs实现四层负载DR模式什么是lvs LVS是Linux Virtual Server的简写&#xff0c;意即Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统…

ctf_show笔记篇(web入门---反序列化)

目录 反序列化 254&#xff1a;无用&#xff0c;是让熟悉序列化这个东西的 255&#xff1a;直接使$isViptrue 256&#xff1a;还是使用变量覆盖 257&#xff1a;开始使用魔法函数 258&#xff1a;将序列化最前面的过滤了&#xff0c;使用绕过 259: 这一题需要看writeup才…

windows10 WSL启动Ubuntu虚拟机,安装DolphinScheduler

文章目录 1. 启动WSL与虚拟机2. 安装Docker与DolphinScheduler容器 1. 启动WSL与虚拟机 使用管理员权限运行命令&#xff1a; Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux重启后即可创建虚拟机 在Microsoft Store中搜索Ubuntu&…

研二双9找个日常实习都找不到,哎!

投了几家日常&#xff0c;要不就面完没反应&#xff0c;要不就秒挂&#xff0c;看不透了。是最近都在忙着处理春招和暑期实习吗&#xff0c;怎么连个日常实习都找不到&#xff1f; 个人背景双9&#xff0c;lc以前刷过200道&#xff0c;最近没怎么碰过。 腾讯 3.13 一面&#xf…

给老婆整了个短剧搜索机器人APP

最近短剧挺火&#xff0c;很多群友们都在做一些资源分享&#xff0c;老胡于是基于这些资源做了个短剧搜索引擎&#xff0c;挺多朋友喜欢看的&#xff0c;我老婆也在看哈哈&#xff0c;真上头&#xff0c;废话不多说&#xff0c;上短剧机器人。 短剧机器人 直接在微信群输入&…

麒麟 V10 一键安装 Oracle 11GR2(231017)单机版

Oracle 一键安装脚本&#xff0c;演示 麒麟 V10 一键安装 Oracle 11GR2 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚本第…

提升合规性!Zoho如何优化CRM产品合规性?

在企业数字化和信息化高速发展的今天&#xff0c;CRM管理系统成为越来越多企业的选择。然而&#xff0c;不是所有CRM供应商都有合规意识。合规性不应当只是一项法律规定&#xff0c;更是保证CRM供应商持续发展、赢得客户信赖以及应付监管压力的关键支撑。Zoho对企业合规性的重视…

串行通信——CAN通信问答

通过几个问题来对CAN总线有一个初步的认识&#xff1a; Q1: CAN总线的全称是什么&#xff1f;它最初是为哪种应用环境而设计开发的&#xff1f; CAN总线全称为Controller Area Network&#xff0c;最初是为解决现代汽车中分布式电子控制系统之间的实时通信问题而设计开发的。…

Python探索反距离加权空间插值方法的深度

介绍 反距离加权 (IDW) 是一种广泛用于地理信息系统 (GIS) 和环境科学的空间插值技术,用于根据附近位置的值估计任何位置的缺失值。其基本原理很直观:距离兴趣点较近的位置比距离较远的位置更相似。本文深入探讨了 IDW 的方法、应用、优势和局限性,深入探讨了其在空间分析中…

招聘必备知识:求职者跟进邮件如何写?

写一封正确的招聘跟进邮件是一门艺术。在面试结束后给你的候选人发一封好的后续邮件可以为招聘工作创造奇迹&#xff0c;甚至最终入职的候选人也是如此。 与候选人保持良好的沟通&#xff0c;可以确保他们一直参与其中&#xff0c;给予他们应得的尊重和赞赏。然而&#xff0c;…

Javascript 元二分搜索 | 单边二分查找(Meta Binary Search | One-Sided Binary Search)

元二分搜索&#xff08;Steven Skiena 在《算法设计手册》第 134 页中也称为单边二分搜索&#xff09;是二分搜索的一种修改形式&#xff0c;它以增量方式构建数组中目标值的索引。与普通二分搜索一样&#xff0c;元二分搜索需要 O(log n) 时间。 元二分搜索&#xff0c;也称为…

机器学习——终身学习

终身学习 AI不断学习新的任务&#xff0c;最终进化成天网控制人类终身学习&#xff08;LLL&#xff09;&#xff0c;持续学习&#xff0c;永不停止的学习&#xff0c;增量学习 用线上收集的资料不断的训练模型 问题就是对之前的任务进行遗忘&#xff0c;在之前的任务上表现不好…

HarmonyOS系统开发ArkTS常用组件按钮及参数

Button组件有两种使用方式&#xff0c;分别是不包含子组件和包含子组件两种方式。不同方式Button 组件所需的参数有所不同。 1、不包含子组件 Button(label?: string, options?: { type?: ButtonType, stateEffect?: boolean }) label为按钮上显示的文字内容options.type…

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试&#xff0c;都逃不过被 JVM 问题轰炸的命运&#xff0c;为啥面试官喜欢拿 JVM 说事呢&#xff1f;V 哥认为&#xff0c;除了要问倒你&#xff0c;就是要压你薪水&#xff0c;咱绝对不能怂&#xff0c;俗话说的好&#xff1a;兵来将挡&#xff0c;水来土掩&#…

模拟面试

1.TCP通信中的三次握手和四次挥手过程 三次握手 1.客户端像向服务器端发送连接请求 2.服务器应答连接请求 3.客户端与服务器简历连接 四次挥手&#xff1a; 客户端或服务器端发起断开请求,这里假设客户端发送断开请求 1.客户端向服务器发送断开请求 2.服务器应答断开请求 3.服…

JavaSE(上)-Day6

JavaSE&#xff08;上&#xff09;-Day6 数组数组的定义数组的初始化打印数组分析数组索引数组内存图 方法方法的定义和调用方法的重载方法的内存图 二维数组二位数组的创建和初始化二维数组的内存图 数组 1.数组是一种容器&#xff0c;可以一次存储多个相同类型的数据 数组的…

nginx日志统计qps

1.QPS QPS全称为Queries Per Second&#xff0c;即每秒钟处理的请求数量。对于一个高并发应用来说&#xff0c;QPS是非常重要的性能指标&#xff0c;它反映了应用处理请求的能力。在实际应用中&#xff0c;QPS的大小取决于应用的负载和应用本身的性能。 QPS req/sec 请求数/…