【大数据clickhouse】clickhouse 数据备份与恢复

news2025/1/12 22:49:32

一、前言

 

与其他的数据存储引擎类似,clickhouse承载着大数据量级的数据存储,对于数据的备份与恢复也是必须考虑的,本文将通过操作演示下如何对clickhouse数据进行备份与恢复。

官网说明: 官网备份操作说明

clickhouse可以通过手动进行数据恢复,也可以通过工具进行恢复;

二、clickhouse 数据手动备份与恢复演示

ClickHouse 允许使用 ALTER TABLE ... FREEZE PARTITION ... 查询以创建表分区的本地副本。
这是利用硬链接(hardlink)到 /var/lib/clickhouse/shadow/ 文件夹中实现的,所以它通常不会因为旧数据而占用额外的磁盘空间。 创建的文件副本不由 ClickHouse 服务器处理,所以不需要任何额外的外部系统就有一个简单的备份。防止硬件问题,最好将它们远程复制到另一个位置,然后删除本地副本。

在正式操作之前,再温馨提示下,clickhouse使用rpm的方式安装时,几个安装后的数据文件目录位置:

bin/    /usr/bin
conf/   /etc/clickhouse-server
lib/    /var/lib/clickhouse
log/    /var/log/clickhouse

2.1  数据准备

在默认的数据库下,之前我们创建了下面这张表,并且有几条数据;

2.2  创建备份路径

创建用于存放备份数据的目录 shadow, 如果之前目录存在,先清空目录下的数据

2.3  执行备份命令

echo -n 'alter table t_order_mt freeze' | clickhouse-client

或者在客户端命令行执行

alter table t_order_mt freeze;

注意:使用了冻结命令之后并不会锁表

执行完毕上面的命令之后,在shadow目录下会多出下面的几个目录和相关的文件

一路cd进去,可以发现里面其实就是存放了按照分区存放的数据; 

2.4  将备份数据保存到其他路径

以上shadow相当于是数据文件备份的一个中间临时目录,因此需要将备份数据转移到其他目录,方便后面进行数据恢复时使用,按照下面的步骤依次执行;
#创建备份存储路径
sudo mkdir -p /var/lib/clickhouse/backup/

#拷贝数据到备份路径
sudo cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/my-backup-name

#为下次备份准备,删除 shadow 下的数据
sudo rm -rf /var/lib/clickhouse/shadow/*

执行过程

ClickHouse 是 使用文件系统硬链接来实现即时备份,而不会导致 ClickHouse 服务停机(或
锁定)。这些硬链接可以进一步用于有效的备份存储。在支持硬链接的文件系统(例如本地
文件系统或 NFS )上,将 cp -l 标志一起使用(或将 rsync –hard-links –numeric-ids 标志 一起使用)以避免复制数据。 注意:仅拷贝分区目录,注意目录所属的用户要是 clickhouse

2.5  数据恢复

模拟删除备份过的表

 drop table t_order_mt;

重新创建表

create table t_order_mt(
 id UInt32,
 sku_id String,
 total_amount Decimal(16,2),
 create_time Datetime
) engine =MergeTree
 partition by toYYYYMMDD(create_time)
 primary key (id)
 order by (id,sku_id);

将备份复制到 detached 目录

执行下面的命令

sudo cp -rl /var/lib/clickhouse/backup/my-backup-name/1/store/ecc/ecce0769-b776-4d10-acce-0769b776ed10/* /var/lib/clickhouse/data/default/t_order_mt/detached/

执行 attach命令

执行时如果出现上面的报错,说明clickhouse这个用户无操作权限,需要做一下授权

然后再次执行上面的attach命令,这时就attach成功了

执行完成后,查询下当前这张表,发现数据就恢复回去了

三、使用 clickhouse-backup做数据备份与恢复

上面,我们演示了手动做clickhouse的数据备份与恢复的过程,过程还是有点麻烦的,其实我们可以使用 Clickhouse 的备份工具 clickhouse-backup 帮我们自动化实现,工具地址:

clickhouse-backup 工具下载地址

前置准备

1、上传安装包工具

2、使用rpm安装

sudo rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm

注意:安装完毕后,默认在 /etc/clickhouse-backup/ 目录下

3、配置相关文件

配置文件大概长下面这样,核心要配置的文件默认情况下主要是下面几个

常用操作命令与数据表的备份操作

1、查看可用命令

clickhouse-backup help

2、显示要备份的表

 clickhouse-backup tables

3、查看现有的本地备份

clickhouse-backup list

执行这个命令,发现上面我们做手动备份时候创建的目录被识别到了

 注意,为了不影响后面使用命令备份数据造成混淆,建议先把之前的该目录下文件删除掉

4、创建备份

 sudo clickhouse-backup create

执行完成后,在 : /var/lib/clickhouse/backup 目录下就产生了新的备份数据;

 通过这种方式备份出来的数据和文件,看起来包含的内容更加全面

数据恢复操作

1、模拟删除备份过的表

删除default数据库

2、从备份还原

执行下面的命令进行数据恢复

sudo clickhouse-backup restore 2022-12-18T09-50-43

相关参数补充说明

--schema 参数:只还原表结构;
--data 参数:只还原数据;
--table 参数:备份(或还原)特定表。也可以使用一个正则表达式,例如,针对特定的
数据库: --table=dbname.*

执行这个命令时,会将系统中所有备份过的数据表都执行一次,如果已经存在了,会跳过 

3、数据检查

可以发现数库和数据表已经恢复回来了

其他补充说明

1、api文档链接

clickhouse-backup api文档地址

2、注意事项

切勿更改文件夹 /var/lib/clickhouse/backup 的权限,可能会导致数据损坏

3、关于远程备份说明

  • 较新版本才支持,需要设置 config 里的 s3 相关配置;
  • 上传到远程存储:sudo clickhouse-backup upload xxxx;
  • 从远程存储下载:sudo clickhouse-backup download xxxx;
  • 保存周期: backups_to_keep_local,本地保存周期,单位天;backups_to_keep_remote,远程存储保存周期,单位天;0 均表示不删除;

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

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

相关文章

NEMU(RISC-V64)基础知识(一)

目录 1、术语和定义 2、CISC和RISC的区别 3、vimtutor指令查看常见VIM使用命令 4、GDB调试 5、x86中寄存器 6、x86中指令的具体行为 7、中断和异常 8、RISC-V的中断 9、一条指令在NEMU中的执行过程 10、NEMU中的输入输出 11、在NEMU的运行时环境中执行程序步骤 12、…

HarmonyOS使用ArkUI绘制圣诞树

一、前言 起因我参加了 “挑战代码画颗圣诞树” 活动,又因为本次推出一个“圣诞定制勋章”活动,一个是传资源,一个是写文章,为了更好的把知识传递给大家,所以我又出了这篇文章,大家进来一起学习一下吧。 二…

Linux- 系统随你玩之--操作文件和目录

文章目录1、前言2、文件、目录相关的指令2.1、当前所在目录2.2、当前目录所有的文件和目录2.3、切换当前工作目录2.4、 创建目录与文件2.6 、拷贝文件3 、文本查看3.1、cat 查看文件内容3.2、head 查看前n行内容3.3、tail 查询后n行内容4、文本编辑4.1、vi 指令4.2、more 指令4…

华为三层交换机做中继,WinServer2012当DHCP服务器

ENSP桥接一台 Windows Server&#xff0c;当DHCP服务器 1、拓扑图 2、汇聚交换机设置 <Huawei>sys# 关闭消息提示 [Huawei]undo in en[Huawei]sys SW1# 批量创建 VLAN [SW1]vlan batch 10 20 30 100# 设置 VLAN 为 Trunk [SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]p…

【电商】电商后台---FMS财务管理系统

文章对电商财务系统进行了系统的介绍&#xff0c;希望通过此文能够加深你对电商系统的认识。 目前互联网电商公司的系统非常多、系统间的关系也非常复杂&#xff0c;最近各公司都热衷于中台&#xff0c;应用的技术也相当之多&#xff0c;技术实力弱点的公司只能借助于各平台加快…

uAvionix获得FAA合同,部署和演示多个无人机同时飞行的C波段频率分配管理(FAM)

uAvionix宣布&#xff0c;它已赢得美国联邦航空管理局(FAA)的合同&#xff0c;作为uAvionix SkyLine™指挥和控制通信服务提供商(C2CSP)管理平台的组件&#xff0c;对频率分配管理器(FAM)进行多次端到端演示。 这次大规模演示将使运营SkyLine平台的频率管理组织(FMO)能够将国际…

基于STM32与TB6600的机械臂项目(代码开源)

前言&#xff1a;本文为手把手教学STM32的机械臂项目——Robot Arm&#xff0c;本次项目采用的是STM32作为MCU。该机械臂的基础模型为国外开源项目&#xff0c;诸多前辈经过长时间的验证与改进&#xff0c;其机械臂精度可以满足日常需求。本项目机械臂为三自由度机械臂&#xf…

mongodb-9.数据库连接,集合创建

文章目录数据库连接集合创建查询删除查询显示指定字段限制查询条数 limit &#xff0c;skip排序索引创建聚合查询数据库连接 mongodb URL mongodb://[username:password]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]语法说明如下&#xff1a;…

JSP ssh网络点餐系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh网络点餐系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Mye…

vue3 antd项目实战——input输入框限制输入内容和长度,Form表单动态校验规则

input输入框设置只能输入中文&#xff0c;输入长度为20&#xff0c;输入不能为空知识调用场景复现解决方案1.下方有提示文字2.限制输入内容只能是中文3.限制输入长度为204.动态校验规则&#xff08;必填项&#xff09;input源代码&#xff08;按需调整即可&#xff09;知识调用…

【区块链 | EVM】深入理解学习EVM - 深入理解EVM操作码,让你写出更好的智能合约

那些非典型的开销导致经典的软件设计模式在合约编程语言中看起来既低效又奇怪。如果想要识别这些模式并理解他们导致效率变高/低的原因&#xff0c;你必须首先对以太坊虚拟机&#xff08;即 EVM&#xff09;有一个基本的了解。 你的一些编程“好习惯”反而会让你写出低效的智能…

Linux当中的Sersync实时同步服务及其实战举例

目录 一、实时同步 1.定义 2.原理 3.实时同步场景 4.实时同步工具 &#xff08;1&#xff09;sersync &#xff08;2&#xff09;Lysncd 二、实时同步实例 1.环境规划 2.配置思路 NFS存储服务如下&#xff1a; &#xff08;1&#xff09;安装NFS &#xff08;2&am…

40. 使用块的网络(VGG)

虽然AlexNet证明深层神经网络卓有成效&#xff0c;但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。 在下面的几个章节中&#xff0c;我们将介绍一些常用于设计深层神经网络的启发式概念。 与芯片设计中工程师从放置晶体管到逻辑元件再到逻辑块的过程类似&#x…

Node.js--》三大常见模块的使用讲解

目录 fs文件系统模块 fs.readFile()方法 fs.writeFile()方法 readFile与writeFile的使用 fs模块路径动态拼接问题 path路径模块 path.join()方法 path.basename() path.extname() path.parse() http模块 req请求对象 res响应对象 解决中文乱码问题 响应不同内容…

Python实现猎人猎物优化算法(HPO)优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的优…

计算机系统基础实验 - 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示

实验3 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 实验序号&#xff1a;3 实验名称&#xff1a;同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 适用专业&#xff1a;软件工程 学 时 数&#xff1a;2学时 一、实验目的 1.掌握定点数乘法溢出的判定方法…

Kafka触发Rebalance的场景分析

文章目录前言触发Rebalance的原因1. 消费者成员发生变化2. 分区数发生变化3. 订阅Topic发生变化Rebalance全流程介绍场景一&#xff1a;新成员入组场景二&#xff1a;成员主动离组场景三&#xff1a;成员崩溃离组场景四&#xff1a;组成员提交位移前言 所谓Rebalance就是让Con…

Python小工具-复制嵌套目录下的多个word文档到指定目录

文章目录Python小工具-复制嵌套目录下的多个word文档到指定目录需求原始数据工具实现思路代码实现1-6 配置项目7 定义file_type_to_reduce_dir函数完成文件复制或移动8 定义list_dir_by_level函数完成遍历调用函数并执行待改进地方完整代码自我反省Python小工具-复制嵌套目录下…

全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等

文章目录1 概述2 启动速度优化简介2.1 启动流程2.2 测量方法2.2.1 printk time2.2.2 initcall_debug2.2.3 bootgraph.2.2.4 bootchart2.2.5 gpio 示波器.2.2.6 grabserial.2.3 优化方法2.3.1 boot0启动优化2.3.1.1 非安全启动.2.3.1.2 安全启动2.3.2 uboot启动优化2.3.2.1 完全…

07、SpringCloud 系列:Alibaba - 介绍

SpringCloud 系列列表&#xff1a; 文章名文章地址01、Eureka - 集群、服务发现https://blog.csdn.net/qq_46023503/article/details/12831902302、Ribbon - 负载均衡https://blog.csdn.net/qq_46023503/article/details/12833228803、OpenFeign - 远程调用https://blog.csdn.…