技术分享 | ClickHouse 冷热存储分离方案线上实践

news2024/12/24 21:22:19

作者:任坤

现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


1、背景

线上某clickhouse集群,最早采用SAS机器,后来因为容量不足又陆续添加了4台SATA机器。

最后的架构演变为5分片 * 2副本,包括6台SAS和4台SATA机器,导致读写延迟非常高,引发业务方频繁抱怨。

经协商后决定将硬盘升级为SSD,然而预算被卡的很紧,原本采购的4台SSD机器最终被砍成了1台,最终只能被迫采用SSD + SATA的冷热存储分离架构。

我们将新采购的机器SSD硬盘拆卸,分散部署到6台已有的SATA机器上,将SSD挂载到/data,SATA挂载到/data1。

ck最新写入的数据先落到SSD,稍后根据配置的规则自动将冷数据迁移到SATA。

2、线上实践

部署ck集群,6台机器采用3分片 * 2副本,config.xml的path变量设置为 /data/clickhouse_ssd/ ,任选3台机器混布一套3节点zookeeper集群。

ck默认会分别创建1个名为default的磁盘和存储策略,磁盘由config.xml的path设定,存储策略default默认选择path设置的磁盘,可通过system.disks和system.storage_policies查看。

我们要做的是手工创建1个存储策略,指定热盘和冷盘路径,让数据先落热盘,然后根据设置规则自动迁移到冷盘。

为每个ck节点新建配置文件/etc/clickhouse-server/config.d/storage.xml,为了节省篇幅直接上截图。

先为系统中的存储目录打上磁盘标签,再创建一个名为moving_from_ssd_to_hdd的存储策略,按顺序引用热盘和冷盘标签。

以上配置是先将数据写到/data/clickhouse_ssd,随后再慢慢迁移到/data1/clickhouse_hdd。

表数据以part为单位迁移,move_factor取值范围[0,1),值越大则会越快速的将part迁移到冷盘,也可以手工迁移指定part,比如alter table tab_name move part ‘xxxx_xx’ to volume cold;
创建表时加上storage_policy = 'moving_from_ssd_to_hdd’选项,就可以完成冷热存储分离设置。

线上运行了小半年,既解决了读写延迟问题,又很好的节省了硬件成本。
前几天维护需要挨个重启ck集群实例,重启第1个实例就遇到如下错误,

2022.10.31 17:32:06.569278 [ 33885 ] {} <Error> Application: DB::Exception: "default" disk path should be provided in <path> not it <storage_configuration>: Cannot attach table `system`.`query_thread_log` from metadata file /data/clickhouse_ssd/store/db1/db144952-38ab-46ee-af64-e84158d35c12/query_thread_log.sql from query ATTACH TABLE system.query_thread_log UUID '8205cfb0-ccd4-45cf-bdaa-ffce82a84a7d' (`event_date` Date, `event_time` DateTime, `event_time_microseconds` DateTime64(6), `query_start_time` DateTime, `query_start_time_microseconds` DateTime64(6), `query_duration_ms` UInt64, `read_rows`

多番尝试后最终搜索到解决方法 https://github.com/ClickHouse/ClickHouse/issues/11678,这句话点出了根本原因,

It is not allowed to use identical paths for different disks, the path for any non-default disks should not collide with the default path

config.xml的path标签已经将/data/clickhouse_ssd目录声明为default,上面的storage.xml重复声明了/data/clickhouse_ssd目录,导致重启时出现判断冲突。

解决方案:修改storage.xml配置文件,修改后内容如下,

此时的system.storage_policies表返回信息如下,

再次重启ck实例,这次成功执行。

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

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

相关文章

母胎级教学,工业路由器远程维护PLC详细操作指南

1、前言随着工业4.0大力推进&#xff0c;对工业现场设备的稳定性提出了更高的要求&#xff0c;大多数的设备制造商不能持续监测及管理设备&#xff0c;因为现场设备分布比较分散&#xff0c;客户不能集中管理&#xff0c;如果通过视频或电话沟通问题&#xff0c;则准确度不够&a…

【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)

█ jar文件中Class转java文件不准 █ 系列文章目录 提示&#xff1a;这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【安卓学习之常见问题…

K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停

目录 一、资源说明 二、基本参数 四、部分代码说明 接线说明 1、STC89C52RCXY-160D模块 2、STM32F103C8T6XY-160D模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目所有材料清单 八、注意事项 九、接线表格 一、资源说明 单片机型号 测试…

【UNIAPP】APP快速免费生成一键发布页面

参考官方文档&#xff1a;https://uniapp.dcloud.net.cn/uniCloud/hosting.html# 效果预览地址&#xff1a;https://hellouniapp.dcloud.net.cn/portal 一、创建并运行uni-admin 1、创建项目 2、运行项目 3、关联到浏览器打开。 二、登录后台界面 1、进入主页面 2、如…

[附源码]Python计算机毕业设计Django校园帮平台管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【2023-Pytorch-分类教程】手把手教你使用Pytorch训练自己的分类模型

之前更新过一起tf版本的训练自己的物体分类模型&#xff0c;但是很多兄弟反应tf版本的代码在GPU上无法运行&#xff0c;这个原因是tf在30系显卡上没有很好的支持。所以我们重新更新一期Pytorch版本的物体分类模型训练教程&#xff0c;在这个教程里面&#xff0c;你将会学会物体…

[附源码]计算机毕业设计面向高校活动聚AppSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【电商项目实战】新增收货地址(详细篇)

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot电商项目实战 ✨学习社区&#xff1a; &#x1f449;不会压弯的小飞侠 ✨知足上进&#x…

刷爆力扣之最短无序连续子数组

刷爆力扣之最短无序连续子数组 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&…

Windows+Visual stdio+CUDA编程方式及测试

目录一、visual stdio内针对工程的配置1、新建一个空项目2、配置CUDA生成依赖项3、配置基本库目录4、配置静态链接库路径5、配置源码文件风格6、扩展文件名配置二、样例测试测试样例1样例1问题&#xff1a;找不到helper_cuda.h文件测试样例2测试样例3一、visual stdio内针对工程…

Java餐厅点餐系统uniapp源码带安装教程

一套Java开发的餐厅点餐半成品系统&#xff0c;前端使用uniapp编写&#xff0c;经过本地测试&#xff0c;这套系统还有一些功能没完善好&#xff0c;有能力的朋友可以在这套系统基础上进行二次开发。 技术架构 后端技术框架&#xff1a;springboot shiro layui 前端技术框架…

springboot项目作为静态文件服务器

springboot项目作为静态文件服务器 springboot默认文件作用 使用 spring initialzr 创建 spring boot 项目 https://start.spring.io/ static 存放静态资源 template 存放模板页面 , 例如 thymeleaf 自定义静态文件存放目录 springboot 自动装配 , 默认静态资源的目录是 s…

Flink 知识点整理及八股文问题<第一部分 Flink简介>

本篇为Flink的第一大部分&#xff0c;初识Flink&#xff0c;全篇参考自 尚硅谷2022版1.13系列 整个系列的目录如下&#xff1a; <一>Flink简介 <二>Flink快速上手 <三>Flink 部署 <四>Flink 运行时架构 <五>DataStream API <六>Flin…

kubernetes—数据存储

数据存储 在前面已经提到&#xff0c;容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&#xff0c;保存在容器中的数据也会被清除。这种结果对用户来说&#xff0c;在某些情况下是不乐意看到的。为了持久化保存容器的数据&#xff0c;kubernetes引…

[附源码]计算机毕业设计旅游度假村管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Python项目】Python基于tkinter实现一个笔趣阁小说下载器 | 附源码

前言 halo&#xff0c;包子们上午好 笔趣阁小说应该很多小伙伴都知道 但是用Python实现一个笔趣阁小说下载器 那不是爽歪歪呀 基于tkinter实现的Python版本的笔趣阁小说下载器今天小编给大家实现了 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件…

【多线程(四)】线程状态介绍、线程池基本原理、Executors默认线程池、ThreadPoolExecutor线程池

文章目录4.线程池4.1状态介绍4.2线程的状态-练习14.3线程的状态-练习24.4线程的状态-练习34.5线程池-基本原理4.6线程池-Executors默认线程池4.7线程池-Executors创建指定上限的线程池4.8线程池-ThreadPoolExecutor4.9线程池-参数详解4.10线程池-非默认任务拒绝策略总结4.线程池…

用一个原始密码针对不同软件生成不同密码并保证相对安全

使用一个密码并在数据泄漏时保护自己的其它账号 关于密码 现在好多软件&#xff0c;好多网站都需要我们设置密码&#xff0c;这个时候我们的处理办法一般分为2种。 对不同的软件设置不同的密码&#xff0c;这种理论上是最安全的&#xff0c;但是记不住啊&#xff0c;所以不实…

微信小程序自动化框架的搭建python+minium

说明 公司要求做小程序的自动化&#xff0c;网上找各种资料&#xff0c;最后确定使用腾讯自研的框架minium&#xff0c;虽然版本已经不继续维护更新了&#xff0c;但是不影响我们使用来做自动化开发。 minium提供一个基于unittest封装好的测试框架&#xff0c;MiniTest是mini…

Acrel-1200分布式光伏运维平台

行业现状 “十四五”期间&#xff0c;随着“双碳”目标提出及逐步落实&#xff0c;本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划&#xff0c;国家发改委能源研究所可再生能源发展中心副主任陶冶表示&#xff0c;“双碳”目标意味着国家产业…