ClickHouse 分片集群备份一致性分析文档

目录标题

  • ClickHouse 分片集群备份一致性分析文档
    • 1. 问题背景
    • 2. 环境信息
      • 2.1 集群配置
      • 2.2 Pod 列表
      • 2.3 备份配置
    • 3. 官方备份方案分析
      • 3.1 Altinity clickhouse-backup 工具
      • 3.2 工作原理 - FREEZE 机制
      • 3.3 ClickHouse 内置 BACKUP/RESTORE 命令
    • 4. 分片备份一致性问题
      • 4.1 核心问题
      • 4.2 为什么无法保证跨分片一致性?
      • 4.3 恢复时的额外问题
    • 5. 存储快照方案分析
      • 5.1 官方文档说明
      • 5.2 存储快照的局限性
      • 5.3 当前环境的存储限制
    • 6. 方案对比
    • 7. 官方推荐的快照备份方案(如果使用)
    • 8. 结论
    • 9. 参考链接

ClickHouse 分片集群备份一致性分析文档

1. 问题背景

在 ClickHouse 分片集群环境中,如何保证所有分片备份时的数据一致性是一个关键问题。本文档分析了官方提供的备份方案及其局限性,并提供了环境中的实际配置情况。

2. 环境信息

2.1 集群配置

项目
集群名称ck-5330623f
分片数量2 (shardsCount: 2)
副本数量2 (replicasCount: 2)
存储类型csi-localpv (hostPath)
存储路径/opt/qfusion/localpv/
ClickHouse 版本24.8.7.41

2.2 Pod 列表

ck-5330623f-replica0-0-0 # 分片0,副本0 ck-5330623f-replica0-1-0 # 分片0,副本1 ck-5330623f-replica1-0-0 # 分片1,副本0 ck-5330623f-replica1-1-0 # 分片1,副本1 (Pending) ck-5330623f-zk-0/1/2-0 # ZooKeeper 节点

2.3 备份配置

# chi-ck-5330623f-backup-configgeneral:remote_storage:nonebackups_to_keep_local:0backups_to_keep_remote:0clickhouse:username:rdsadminhost:localhostport:9000sync_replicated_tables:true# 关键配置restore_schema_on_cluster:""# 未启用集群级别恢复

3. 官方备份方案分析

3.1 Altinity clickhouse-backup 工具

官方文档链接:

  • Examples.md - Sharded cluster backup

推荐备份方式:

# 备份 - 只在每个分片的第一个副本上运行shard_number=$(clickhouse-client -q"SELECT getMacro('shard')")clickhouse-backup create_remote shard${shard_number}-backup

推荐恢复方式:

# 步骤1: 在所有副本上恢复 schemashard_number=$(clickhouse-client -q"SELECT getMacro('shard')")clickhouse-backup restore_remote --rm --schema shard${shard_number}-backup# 步骤2: 只在每个分片的第一个副本上恢复数据clickhouse-backup restore_remote --rm shard${shard_number}-backup

3.2 工作原理 - FREEZE 机制

clickhouse-backup工具使用 ClickHouse 的ALTER TABLE ... FREEZE命令:

ALTERTABLE...FREEZEPARTITION...

实现方式:

  • 使用hardlinks将数据复制到/var/lib/clickhouse/shadow/目录
  • 几乎不消耗额外磁盘空间(因为是硬链接)
  • 不阻塞表的正常操作
  • 本质上是文件级别的"快照",不是存储卷快照

3.3 ClickHouse 内置 BACKUP/RESTORE 命令

官方文档链接:

  • Backup and Restore in ClickHouse
-- 语法BACKUP|RESTORE[ASYNC]TABLE|DATABASE|ALL[ONCLUSTER'cluster_name']TO|FROMDisk|S3|File(...)[SETTINGS...]

4. 分片备份一致性问题

4.1 核心问题

问题陈述: 官方没有提供原子性跨分片备份的方案,无法保证每个分片同时备份以保持数据一致性。

GitHub Issue 链接:

  • Issue #326 - Best practice to backup and restore sharding clickhouse

用户提出的核心问题:

“I am concern about the synchronization and atomicity of the operation. For example, does it matter that the backup time of different shard are slightly different?”

该问题至今没有官方明确解答

4.2 为什么无法保证跨分片一致性?

原因说明
分片独立备份必须分别对每个分片执行备份,无法做到原子性
时间差存在各分片备份完成时间不同,存在时间窗口
无分布式事务ClickHouse 分片间没有跨分片事务保证
Distributed 表是视图Distributed 表不存储实际数据,只是查询路由

4.3 恢复时的额外问题

GitHub Issue 链接:

  • Issue #299 - How to backup and restore correctly the cluster with distributed tables and shards

报告的问题:

  • 从分片1恢复数据后,数据被意外复制到分片2
  • 最终导致两个分片包含相同数据(完全不符合预期)

5. 存储快照方案分析

5.1 官方文档说明

链接:

  • Alternative backup methods

官方关于文件系统快照的描述:

“Some local filesystems provide snapshot functionality (for example, ZFS), but they might not be the best choice for serving live queries. A possible solution is to create additional replicas with this kind of filesystem and exclude them from the Distributed tables that are used for SELECT queries.”

5.2 存储快照的局限性

即使使用存储快照(ZFS/LVM/云盘快照),仍然无法解决跨分片一致性问题

问题说明
分片独立快照必须分别对每个分片的存储做快照
时间差各分片快照时间不同,数据仍存在时间窗口的不一致
无原子性存储层无法感知应用层的分片逻辑

5.3 当前环境的存储限制

存储类型: csi-localpv 底层类型: hostPath (普通本地目录) 文件系统: 不支持快照 (ext4/xfs,非 ZFS/LVM)

结论: 当前环境无法使用存储快照方案

6. 方案对比

备份方式跨分片一致性优点缺点
clickhouse-backup (FREEZE)❌ 无保证硬链接节省空间、不阻塞操作逐分片备份、有时间差
存储快照 (ZFS/LVM)❌ 无保证快速、存储层原生支持需要特定文件系统、仍有时间差
BACKUP ON CLUSTER❌ 无保证原生 SQL 命令、易用官方未保证跨分片原子性
暂停写入 + 备份✅ 有保证可确保一致性影响业务可用性

7. 官方推荐的快照备份方案(如果使用)

如果环境支持 ZFS 等快照文件系统,官方推荐的架构:

┌─────────────────────────────────────────────────────────────┐ │ 应用查询 │ │ │ │ │ ▼ │ │ Distributed Table │ │ / \ │ │ / \ │ │ Shard 1本地表 Shard 2本地表 │ │ (正常副本) (正常副本) │ │ \ / │ │ \ / │ │ 专用备份副本 ← 排除在 Distributed 查询之外 │ │ (使用 ZFS/LVM) │ │ │ │ │ └──► 做存储快照备份 │ └─────────────────────────────────────────────────────────────┘

实施步骤:

  1. 为每个分片创建专用的备份副本
  2. 使用 ZFS/LVM 等支持快照的文件系统
  3. 将这些副本从 Distributed 表中排除(不影响正常查询)
  4. 对专用副本进行快照

8. 结论

  1. 官方没有提供原子性跨分片备份方案- Altinity clickhouse-backup 工具需要逐个分片进行备份

  2. 无法保证所有分片同时备份- 从官方示例可以看到,需要为每个分片单独执行备份

  3. 数据一致性无法保证- 分片间没有分布式事务保证,即使能同时触发备份,各分片执行时间也会有差异

  4. 存储快照无法解决根本问题- 存储快照只是改变了备份的实现方式,但本质上仍需要逐个分片操作

  5. 可能的解决方案(需自行实现):

    • 应用层暂停写入 → 备份所有分片 → 恢复写入
    • 使用专用备份副本 + 文件系统快照
    • 只备份本地表,恢复时重新创建分布式表
    • 使用 ReplicatedMergeTree 引擎 + 利用 ZooKeeper 的一致性保证

9. 参考链接

类型链接
官方文档ClickHouse Backup and Restore
官方文档Alternative backup methods
GitHub Issue#326 - Shard backup atomicity concerns
GitHub Issue#299 - Shard restore problems
官方示例Examples.md - Sharded cluster backup
技术博客Introduction to ClickHouse Backups - Altinity

文档生成时间: 2026-01-08
环境: 210集群 (ck-5330623f)

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

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

相关文章

NPP 北方森林:美国苏必利尔国家森林,1983-1984 年,R1

NPP Boreal Forest: Superior National Forest, USA, 1983-1984, R1 简介 该数据集包含两个文件(.txt 格式)。其中一个文件提供了美国明尼苏达州东北部苏必利尔国家森林(Superior National Forest,简称 SNF,位于西经…

材料中心物流信息管理系统的设计与实现

摘  要 近年来,伴随着互联网技术的快速发展和大力应用,各种信息化软件应运而生。当下,随着国内经济由于疫情的影响在全面复苏,各大企业也在注重企业材料成本的管控。在此之前,各大企业针对生产环节中的材料管理都是依…

架构演进过程

一、单体架构优点: 简单:开发部署都很方便,小型项目首选 缺点: 项目启动慢可靠性差可伸缩性差扩展性和可维护性差性能低 二、垂直架构垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构。 垂直架构…

每日 AI 评测速递来啦(1.8)

司南Daily Benchmark 专区今日上新! RFC Bench 一个用于在真实新闻语境下评估大语言模型金融虚假信息识别能力的评测基准,以段落级别为评测粒度,刻画金融新闻中语义由分散线索共同构成的上下文复杂性。 https://hub.opencompass.org.cn/da…

基于微信小程序的点餐小程序开发与设计

摘要 近年来,伴随者互联网产业的快速发展,各种信息化软件应运而生。当下,人们出门在外一部手机就可以解决线下所有的交易支付,人们对于信息化软件的使用也已不陌生。经济的发展,人均收入的提高,人们去餐饮店…

金融级数据治理+企业级架构管控:五度易链的数据治理方案与技术路径

在数字化转型的浪潮中,数据已成为企业核心战略资产。然而,许多机构仍面临数据孤岛、质量不一、标准缺失、难以复用等治理难题。如何系统化整合数据资源、提升数据质量、构建可用的标签体系,并建立长效管理机制,是当前企业推进数据…

K8s资源管理与项目生命周期

前言 在 Kubernetes(简称 K8s)生态中,kubectl 是与集群交互的核心命令行工具,它充当了开发者/运维人员与 K8s API Server 之间的“桥梁”——将用户指令转化为 API Server 可识别的请求,进而实现对集群资源&#xff0…

2026 国自然申请书大改,不变的是对内容质量的高要求

作为常年奋战在国自然申报一线的科研人,今年看到 2026 年申请书 “瘦身提质” 的改革通知时,我直接慌了神。取消固定提纲、精简为三大核心部分、30 页篇幅限制,沿用多年的写作习惯被彻底打破,更让人焦虑的是,距离申报截…

区间取反与区间数一【牛客tracker 每日一题】

区间取反与区间数一 时间限制:2秒 空间限制:256M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助…

基于PyTorch的CBOW模型实现与词向量生成

文章目录一. CBOW模型详解1.1 Word2Vec与分布式表示1.2 CBOW模型原理数学表达1.3 网络架构详解代码中的网络层说明:1.4 训练目标与优化1.5 CBOW 与 Skip-gram 比较1.6 词向量的应用与提取二. 数据准备与预处理2.1 语料库与基本参数设置2.2 构建词汇表2.3 构建训练数…

基于大数据的颈椎病预防交流与数据可视化分析平台设计与实现

摘 要 现代快节奏生活中,长时间低头用电子设备、不良坐姿及运动不足等现象普遍,致颈椎病发病率激增,严重影响生活工作。公众健康意识提升,对颈椎病防治关注度高,却受限于传统方法,亟需科学个性化方案。大数…

【力扣hot100题】合并区间(9)

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals [[1,3],[…

DeepBI 帮亚马逊卖家突破销售瓶颈,暴增近20倍销量!

做亚马逊的你,是不是也有这种无力感?店铺销售规模卡在瓶颈难突破,广告烧得凶,利润却薄如纸;熬夜调关键词、算数据,销量还是原地踏步,甚至越优化越亏?深圳的家具类卖家陈总也曾深陷这…

交互式教学:将阿里通义Z-Image-Turbo集成到Jupyter Notebook的秘诀

交互式教学:将阿里通义Z-Image-Turbo集成到Jupyter Notebook的秘诀 作为一名数据科学讲师,我经常需要在课堂上演示AI图像生成技术。传统的命令行工具或独立应用往往让学生感到陌生,而Jupyter Notebook作为数据科学教学的标准环境,…

连锁店管理力不从心?让智能体接管30%重复工作

在连锁商业规模持续扩张的当下,一个核心矛盾日益凸显:消费者对个性化、即时性体验的需求不断升级,而传统依赖店长经验与人工巡检的运营模式,在成本、效率和一致性上渐趋乏力。门店越开越多,管理半径越来越广&#xff0…

模型压缩魔法:让Z-Image-Turbo在消费级GPU上流畅运行

模型压缩魔法:让Z-Image-Turbo在消费级GPU上流畅运行 你是否想在配备中等性能显卡的PC上运行Z-Image-Turbo,却被原始模型的显存要求劝退?本文将介绍如何通过模型压缩技术,让这个强大的图像生成模型在消费级GPU上流畅运行。目前CSD…

AI+教育创新:Z-Image-Turbo在教学场景中的快速部署

AI教育创新:Z-Image-Turbo在教学场景中的快速部署 作为一名教育科技创业者,你是否想过将AI图像生成技术融入在线课程?无论是自动生成教学插图、创建个性化学习素材,还是让学生通过文字描述快速可视化知识点,Z-Image-Tu…

一份精美的Excel,究竟需要多久?

作为一名财务分析师,我每天超过60%的工作时间都在与Excel打交道。从最初简单的数据录入,到如今复杂的财务模型构建,这看似普通的软件已经陪伴了我八年职业生涯。但直到最近,我才真正理解“精美的Excel”意味着什么,以及…

ACPI!PciConfigSpaceHandlerWorker函数中的hal!HalGetBusDataByOffset----重要

ACPI!PciConfigSpaceHandlerWorker函数中的hal!HalGetBusDataByOffset 1: kd> g Breakpoint 14 hit eax00000000 ebx89d376f8 ecx00000100 edx89ddf118 esi00000000 edi00000000 eip804f25ee espf791abdc ebpf791ac48 iopl0 nv up ei pl zr na pe nc cs0008 ss0010…

AI生成内容版权探索:Z-Image-Turbo云端环境下的水印集成

AI生成内容版权探索:Z-Image-Turbo云端环境下的水印集成 随着AI生成图像的普及,如何有效标识版权成为内容平台亟需解决的问题。Z-Image-Turbo作为新一代开源图像生成模型,凭借亚秒级生成速度和出色的中文理解能力,正被广泛应用于…