当前位置: 首页 > news >正文

clickhouse-备份恢复

一、简介

备份恢复是数据库常用的手段,可能大多数公司很少会对大数据所使用的数据进行备份,这里还是了解下比较好,下面做了一些简单的介绍,详细情况可以通过官网来查看,经过测试发现Disk中增量备份并不好用,而File中的增量是好用的,也可以看下开源工具clickhouse-backup的备份功能

二、备份恢复详解

1.备份恢复通用命令

# 在 ClickHouse 23.4 版本之前,ALL 仅适用于 RESTORE 命令。BACKUP|RESTORETABLE [db.]table_name [AS [db.]table_name_in_backup][PARTITION[S] partition_expr [,...]] |DICTIONARY [db.]dictionary_name [AS [db.]name_in_backup] |DATABASE database_name [AS database_name_in_backup][EXCEPT TABLES ...] |TEMPORARY TABLE table_name [AS table_name_in_backup] |VIEW view_name [AS view_name_in_backup]ALL TEMPORARY TABLES [EXCEPT ...] |ALL DATABASES [EXCEPT ...] } [,...][ON CLUSTER 'cluster_name']TO|FROM File('<path>/<filename>') | Disk('<disk_name>', '<path>/') | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Secret access key>')[SETTINGS base_backup = File('<path>/<filename>') | Disk(...) | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Secret access key>')]

2.在Disk或File备份时需要的设置

可以直接在/etc/clickhouse-server/config.xml文件中更改也可以在/etc/clickhouse-server/config.d中新创建个backup_disk.xml文件,如果使用的是backup_disk.xml文件,要把clickhouse注释去掉

<!-- <clickhouse> -->
<storage_configuration><disks><backups><type>local</type><path>/backups/</path></backups></disks>
</storage_configuration>
<backups><allowed_disk>backups</allowed_disk><allowed_path>/backups/</allowed_path>
</backups>
<!-- </clickhouse>-->

3.BACKUP 和 RESTORE 的命令详解

  • 备份的目标或还原的源: 这是基于之前定义的磁盘。 例如Disk(‘backups’, ‘filename.zip’)
  • ASYNC:异步备份或恢复
  • PARTITIONS:要恢复的分区列表
  • 设置:
    • compression_method(压缩方法)和compression_level(压缩级别)
    • password(磁盘上文件的密码)
    • base_backup:此源的先前备份的目的地。 例如,Disk(‘backups’, ‘1.zip’)
    • Structure_only:如果启用,则允许仅备份或恢复CREATE语句,而无需表的数据
    • storage_policy:正在恢复的表的存储策略。 请参阅使用多个块设备进行数据存储。 此设置仅适用于 RESTORE 命令。 指定的存储策略仅适用于具有 MergeTree 系列引擎的表。
    • s3_storage_class:用于S3备份的存储类别。 例如,STANDARD

4.备份时的异常报错:

Code: 76. DB::Exception: Received from localhost:9000. DB::ErrnoException. DB::ErrnoException: Cannot open file /backups/com2.zip.lock, errno: 13, strerror: Permission denied. (CANNOT_OPEN_FILE)

这是因为我们clickhouse是由用户clickhouse启动的,而指定的备份目录的属组和属主是root,所以我们需要执行如下操作

chown -R clickhouse:clickhouse /backups

5.备份到disk

5.1 全量备份恢复

# 备份
BACKUP TABLE com TO Disk('backups', 'com.zip')
# 恢复,恢复的时候要注意和备份的表名一致,不然会出现找不到表的报错
RESTORE TABLE com FROM Disk('backups', 'com.zip');
# 如果表包含数据,上面的 RESTORE 将失败,您必须删除该表才能测试 RESTORE,或者使用设置allow_non_empty_tables=true:
# 恢复表到一个新的表中
RESTORE TABLE com as com2 FROM Disk('backups', 'com.zip')

5.2 增量备份恢复

SELECT count(1)
FROM comQuery id: b8cb3ed4-4407-4969-b8cc-7bf0861daf5c┌─count()─┐
│     100 │
└─────────┘
# 删除一行数据
delete from com where hash='d98b7d731555ae78ce7cdd7c7f4c8f8e302e71aa';
SELECT count(1)
FROM comQuery id: 7af9fa24-408f-408e-a37d-3519b704dd8d┌─count()─┐
│      99 │
└─────────┘# 增量备份
BACKUP TABLE com TO Disk('backups', 'com_inc.zip') SETTINGS base_backup = Disk('backups', 'com.zip')# 查看备份结果
ll
-rw-r----- 1 clickhouse clickhouse  9405 Aug 17 16:54 com_inc.zip
-rw-r----- 1 clickhouse clickhouse 10574 Aug 17 16:03 com.zip# 增量恢复
RESTORE TABLE com as com3 FROM Disk('backups', 'com_inc.zip')# 插入数据
insert into com select * from com3 limit 3;
# 继续备份
BACKUP TABLE com TO Disk('backups', 'com_inc_2.zip') SETTINGS base_backup = Disk('backups', 'com.zip')# 查看备份结果,通过上面的实验和下面的结果我们可以看到com_inc_2.zip竟然比com_inc.zip还要大,而且还原数据的时候也不需要之前的全量备份,所以我们这里可以下一个结论,clickhouse的增量备份是伪增量备份,或者可以说就是全量备份
ll
-rw-r----- 1 clickhouse clickhouse 12295 Aug 17 17:00 com_inc_2.zip
-rw-r----- 1 clickhouse clickhouse  9405 Aug 17 16:54 com_inc.zip
-rw-r----- 1 clickhouse clickhouse 10574 Aug 17 16:03 com.zip

5.3 加密备份恢复

# 加密备份
BACKUP TABLE com  TO Disk('backups', 'com_pass.zip') SETTINGS password='123456'# 加密恢复
RESTORE TABLE com as com_pass FROM Disk('backups', 'com_pass.zip') SETTINGS password='123456'

5.4 压缩备份恢复

# 压缩备份
BACKUP TABLE com  TO Disk('backups', 'com_comp.zip') SETTINGS compression_method='lzma', compression_level=3# 压缩恢复貌似无法执行,官方也没有实例

5.5 恢复指定分区

RESTORE TABLE pat PARTITIONS '2', '3'FROM Disk('backups', 'pat.zip')

6.备份到s3

# 下面是s3的格式
S3('<S3 endpoint>/<directory>', '<Access key ID>', '<Secret access key>)
# 备份
BACKUP TABLE data TO S3('https://mars-doc-test.s3.amazonaws.com/backup-S3/my_backup', 'ABC123', 'Abc+123')
# 恢复
RESTORE TABLE data AS data3 FROM S3('https://mars-doc-test.s3.amazonaws.com/backup-S3/my_incremental', 'ABC123', 'Abc+123')

也可以通过配置文件来配置s3路径和ak,sk

<clickhouse><storage_configuration><disks><s3_plain><type>s3_plain</type><endpoint></endpoint><access_key_id></access_key_id><secret_access_key></secret_access_key></s3_plain></disks><policies><s3><volumes><main><disk>s3_plain</disk></main></volumes></s3></policies></storage_configuration><backups><allowed_disk>s3_plain</allowed_disk></backups>
</clickhouse>

配置后就可以如下面方式备份了

BACKUP TABLE data TO Disk('s3_plain', 'cloud_backup');
RESTORE TABLE data AS data_restored FROM Disk('s3_plain', 'cloud_backup');

7.备份到file

# 全量备份恢复
BACKUP TABLE com  TO File('/data/tools/backup/com')
RESTORE TABLE com as com6  FROM File('/data/tools/backup/com')
# 插入数据
insert into com select * from com6 limit 60;
# 增量备份
BACKUP TABLE com TO File('/data/tools/backup/com_inc') SETTINGS base_backup = File('/data/tools/backup/com')
# 查看数据大小或者serialization.json文件,可以看到这里确实是增量,file的增量是好用的
du -sh com
112K	com
du -sh com_inc
56K	com_inc
# 恢复增量数据,不用写setting base_backup了
RESTORE TABLE com as com8  FROM File('/data/tools/backup/com_inc')

8.备份状态检查

SELECT*
FROM system.backups
where id='7678b0b3-f519-4e6e-811f-5a0781a4eb52'
FORMAT Vertical

相关文章:

clickhouse-备份恢复

一、简介 备份恢复是数据库常用的手段&#xff0c;可能大多数公司很少会对大数据所使用的数据进行备份&#xff0c;这里还是了解下比较好&#xff0c;下面做了一些简单的介绍&#xff0c;详细情况可以通过官网来查看&#xff0c;经过测试发现Disk中增量备份并不好用&#xff0…...

(2018,ProGAN)渐进式发展 GAN 以提高质量、稳定性和变化

Progressive Growing of GANs for Improved Quality, Stability, and Variation 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. GAN 的渐进式发展 3. 使用小批量标准差增加变化 4. 生成器和判别器的归一化 4.1 均衡学习率 4.2 生成器中的像素特征向量归一化 5. 评…...

负载均衡下的 WebShell 连接

目录 负载均衡简介负载均衡的分类网络通信分类 负载均衡下的 WebShell 连接场景描述难点介绍解决方法**Plan A** **关掉其中一台机器**&#xff08;作死&#xff09;**Plan B** **执行前先判断要不要执行****Plan C** 在Web 层做一次 HTTP 流量转发 &#xff08;重点&#xff0…...

Postman的高级用法—Runner的使用​

1.首先在postman新建要批量运行的接口文件夹&#xff0c;新建一个接口&#xff0c;并设置好全局变量。 2.然后在Test里面设置好要断言的方法 如&#xff1a; tests["Status code is 200"] responseCode.code 200; tests["Response time is less than 10000…...

spring如何进行依赖注入,通过set方法把Dao注入到serves

1、选择Generate右键鼠标 你在service层后面方法的这些: 2、UserService配置文件的写法是怎样的&#xff1a; 3、我们在UserController中执行一下具体写法&#xff1a; 最后我们执行一下 &#xff1a; 4、这里可能出现空指针&#xff0c;因为你当前web层,因为你new这个对象根…...

Python使用图像处理库PIL(Python Imaging Library)和NumPy库来比较两副图像的相似度

目录 1、解释说明&#xff1a; 2、使用示例&#xff1a; 3、注意事项&#xff1a; 1、解释说明&#xff1a; 在Python中&#xff0c;我们可以使用图像处理库PIL&#xff08;Python Imaging Library&#xff09;和NumPy库来比较两副图像的相似度。常用的图像相似度计算方法有…...

clickhouse扩缩容

一、背景 我们之前已经学会了搭建clickhouse集群&#xff0c;我们搭建的是一套单分片两副本的集群&#xff0c;接下来我们来测试下clickhouse的扩缩容情况 二、扩容 扩容相对来说比较简单&#xff0c;我们原来的架构如下 hostshardreplica192.169.1.111192.169.1.212 现在…...

动漫3D虚拟人物制作为企业数字化转型提供强大动力

一个 3D 虚拟数字人角色的制作流程&#xff0c;可以分为概念设定-3D 建模-贴图-蒙皮-动画-引擎测试六个步骤&#xff0c;涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由视觉设计师来完成;而建模、装配(骨骼绑定)、渲染动画是由三维设计师来制作完成。…...

数据同步工具比较:选择适合您业务需求的解决方案

在当今数字化时代&#xff0c;数据已经成为企业的核心资产。然而&#xff0c;随着业务的扩展和设备的增多&#xff0c;如何实现数据的高效管理和同步成为了一个亟待解决的问题。本文将介绍几种常见的数据同步工具&#xff0c;并对比它们的功能、性能和适用场景&#xff0c;帮助…...

Python中数据结构列表详解

列表是最常用的 Python 数据类型&#xff0c;它用一个方括号内的逗号分隔值出现&#xff0c;列表的数据项不需要具有相同的类型。 列表中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。列表都可…...

引领行业高质量发展|云畅科技参编《低代码开发平台创新发展路线图(2023)》

8月8日-9日&#xff0c;中国电子技术标准化研究院于北京顺利召开《低代码开发平台创新发展路线图&#xff08;2023&#xff09;》封闭编制会。云畅科技、浪潮、百度、广域铭岛等来自低代码开发平台解决方案供应商、用户方、科研院所等近30家相关单位的40余位专家参与了现场编制…...

Ubuntu22.04编译Nginx源码

执行如下命令 # ./configure --sbin-path/usr/local/nginx/nginx --conf-path/usr/local/nginx/nginx.conf --pid-path/usr/local/nginx/nginx.pid输出结果&#xff0c;出现如下&#xff1a; Configuration summary using system PCRE2 library OpenSSL library is not used …...

视频上传,限制时长,获取视频时长

使用element的upload上传文件时&#xff0c;除了类型和大小&#xff0c;需求需要限制只能长传18秒内的视频&#xff0c;这里通过upload的before-upload&#xff0c;以及创建一个音频元素对象拿到durtaion时长属性来实现。 getVideoTime(file) {return new Promise(async (resol…...

Open3D 进阶(5)变分贝叶斯高斯混合点云聚类

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 系列文章(连载中。。。爬虫,你倒是爬个完整的呀?): Open3D 进阶(1) MeanShift点云聚类Open3D 进阶(2)DB…...

5、css学习5(链接、列表)

1、css可以设置链接的四种状态样式。 a:link - 正常&#xff0c;未访问过的链接a:visited - 用户已访问过的链接a:hover - 当用户鼠标放在链接上时a:active - 链接被点击的那一刻 2、 a:hover 必须在 a:link 和 a:visited 之后&#xff0c; a:active 必须在 a:hover 之后&…...

Synchronized与Java线程的关系

前言 ​ Java多线程处理任务时&#xff0c;为了线程安全&#xff0c;通常会对共享资源进行加锁&#xff0c;拿到锁的线程才能进行访问共享资源。而加锁方式通过都是Synchronized锁或者Lock锁。 ​ 那么多线程在协同工作的时候&#xff0c;线程状态的变化都与锁对象有关系。 …...

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…...

批量修改文件名怎么操作?

批量修改文件名怎么操作&#xff1f;不管你使用电脑处理工作还是进行学习&#xff0c;都会在电脑中产生很多的文件&#xff0c;时间一久电脑里的文件更加杂乱无章&#xff0c;这时候如果不对电脑中的文件进行及时的管理&#xff0c;那么很可能出现文件丢失而你自己还发现不了的…...

【LeetCode】538.把二叉搜索树转换为累加树

题目 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xff0c;二叉搜索树满足下列约束条件…...

linux 安装 kibana

首先下载 kibana https://www.elastic.co/cn/downloads/kibana 然后上传到linux /usr/local 目录下解压安装 修改config/kibana.yml 配置文件&#xff0c;将elasticsearch.hosts 然后再nginx 中做一个端口映射&#xff0c;实现在浏览器中输入后xxxx:5602 nginx 可以将请求转发…...

STM32入门——IIC通讯

江科大STM32学习记录 I2C通信 I2C&#xff08;Inter IC Bus&#xff09;是由Philips公司开发的一种通用数据总线两根通信线&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09;同步&#xff0c;半双工带数据应答支持总线挂载多设备…...

DTC 19服务学习2

紧跟上篇 0x04 reportDTCSnapshotRecordByDTCNumber 通过DTC和快照序列来获取DTC快照记录。 适用以下假设&#xff1a; — 服务器支持存储给定 DTC 的两个 DTCSnapshot 记录的能力。 — 此示例假定是上一个示例的延续。 — 假设服务器请求服务器存储的 DTC 编号 123456 的两个…...

【腾讯云 TDSQL-C Serverless 产品体验】基于腾讯云轻量服务器以及 TDSQL-C 搭建 LNMP WordPress 博客系统

文章目录 一、前言二、数据库发展与云原生数据库2.1 数据库发展简介2.2 云原生数据库简介2.2.1 云数据库与云原生数据库区别 三、腾讯云 TDSQL-C 数据库3.1 什么是腾讯云 TDSQL-C 数据库3.2 为什么推出 TDSQL-C 数据库&#xff1f;传统 MySQL 架构存在较多痛点3.2.1 传统 MySQL…...

【vue3】对axios进行封装,方便更改路由并且可以改成局域网ip访问(附代码)

对axios封装是在main.js里面进行封装&#xff0c;因为main.js是一个vue项目的入口 步骤&#xff1a; 在1处创建一个axios实例为http&#xff0c;baseURL是基础地址&#xff08;根据自己的需求写&#xff09;&#xff0c;写了这个在vue界面调用后端接口时只用在post请求处写路由…...

Java IO流(三)线程模型

传统阻塞I/O模式 其中黄色框表示对象,蓝色框表示线程,白色框表示API方法 特点 采用阻塞IO模式获取输入数据每个连接都需要独立的线程完成数据的输入,业务处理和处理结果数据返回 潜在问题 并发数很大时,需要对应每个连接请求创建一个线程,所以占用资源很大连接创建后,若当前…...

string(模拟实现与深拷贝)

目录 深拷贝与浅拷贝 浅拷贝&#xff1a; 深拷贝 写时拷贝(了解) 模拟实现 准备 完整代码 深拷贝与浅拷贝 浅拷贝&#xff1a; 也称位拷贝&#xff0c;编译器只是将对象中的值拷贝过来。如果对象中管理资源&#xff0c;最后就会导致多个对象共享同一份资源&#xff0c;当一…...

5.Vue_Element

文章目录 1 Ajax1.1 Ajax介绍1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步异步 1.2 Axios1.2.1 Axios的基本使用1.2.2 Axios请求方法的别名 2 前端工程化2.1 前端工程化特点2.2 Vue项目开发流程 3 Vue组件库Element3.1 Element介绍 1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 Ajax: 全…...

链路追踪jaeger

这里的链路指的是客户端向服务发起一个请求&#xff0c;该请求所经过的路线&#xff0c;也可以说是该请求经过的流量 例如&#xff1a; 客户端发起一个下订单的请求其流量过程&#xff1a; request—>service—>order-web—>order_srv—>mysql—>order_srv—&…...

神经网络基础-神经网络补充概念-42-梯度检验

概念 梯度检验&#xff08;Gradient Checking&#xff09;是一种验证数值计算梯度与解析计算梯度之间是否一致的技术&#xff0c;通常用于确保实现的反向传播算法正确性。在深度学习中&#xff0c;通过梯度检验可以帮助验证你的神经网络模型是否正确地计算了梯度&#xff0c;从…...

<kernel>kernel 6.4 USB-之-hub_port_connect()分析

&#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_port_connect()分析 kernel 6.4 USB系列文章如下&#xff1a; &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_event()分析 &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-port_event()分析 &#xff1c;kern…...

建设咨询网站/seo做得比较好的企业案例

Visual Studio 2019 EnterpriseBF8Y8-GN2QH-T84XB-QVY3B-RC4DFVisual Studio 2019 ProfessionalNYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y转载于:https://www.cnblogs.com/muyeh/p/10664545.html...

江阴做网站优化/钟南山今天感染新冠了

php下调用ueditor 1.2.6 使用方法说明发布于 2014-11-30 09:55:11 | 157 次阅读 | 评论: 0 | 来源: 网友投递UEditor富文本WEB编辑器UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器&#xff0c;具有轻量、可定制、用户体验优秀等特点。本文为大家讲解的是php…...

wordpress标签统一/微博营销

Java基础 文章目录Java基础一个Java文件里可以有多个类吗&#xff08;不含内部类&#xff09;&#xff1f;创建对象的方法面向对象和面向过程简述自动装箱拆箱Java代码块执行顺序java中的基本数据类型对应的字节数包装类型和基本数据类型的场景java中的关键字分类final关键字st…...

网站中图片中间是加号怎么做/免费文件外链网站

给axios配置公共请求地址 给axios把各个请求都需要使用的相同的根地址做统一配置&#xff0c;使得相同代码只维护一份&#xff0c;提升开发速度。 语法&#xff1a; axios.defaults.baseURL 公共根地址把axios配置成为vue实例成员 在Vue的大环境中不要直接使用axios&#…...

富阳做网站/torrentkitty磁力猫

利用EasySQLMAIL实现自动填写Excel表格并发送邮件 转自&#xff1a;http://blog.sina.com.cn/s/blog_1549483b70102witg.html 前一篇博文中记录了“利用EasySQLMAIL实现自动数据提取和邮件发送功能”,里面的方法只能将SQL语句查询出来的数据一行一行地原样转换到Excel表格中。但…...

学怎么做建筑标书哪个网站/网络营销策划总结

Tomcat 简介Tomcat是Apache软件基金会的Jakarta项目中开发的一个Servlet容器&#xff0c;实现了对Servlet和JavaServerPage(JSP)的支持,Tomcat本身也是一个HTTP服务器,Tomcat主要用来解析JSP语言&#xff0c;html格式的网页页面。Tomcat安装JDK下载JDK下载地址&#xff1a;http…...