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

Clickhouse学习笔记(15)—— Clickhouse备份

手动备份

参考官网:Backup and Restore | ClickHouse Docs

简单来说,就是我们可以通过ALTER TABLE ... FREEZE PARTITION ...命令为表分区创建一个本地副本,然后这个副本硬链接到/var/lib/clickhouse/shadow/文件夹,因此其不会耗费额外的硬盘空间

而且为了防止硬件问题,最好将该副本拷贝到其他的位置并且删除该本次副本;

接下来依照此思路进行试验:

本次备份

首先按创建用于存放备份数据的目录 shadow:

sudo mkdir -p /var/lib/clickhouse/shadow/

执行备份命令:(对表t_order_mt进行备份)

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

有关表t_order_mt可以参考

Clickhouse学习笔记(3)—— Clickhouse表引擎-CSDN博客

中MergeTree(合并树)部分

完成数据本地副本的备份之后查看其中的内容:

与原数据文件对比:

发现该副本是从/var/lib/clickhouse/store文件夹下直接拷贝的数据;


存储到其他路径

接下来将备份数据保存到其他路径:

创建backup文件夹:sudo mkdir -p /var/lib/clickhouse/backup/

拷贝数据:sudo cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/t_order_mt

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


数据恢复

  • 删除备份过的表:echo ' drop table t_order_mt ' | clickhouse-client
  • 重新创建表;
  • 然后备份复制到 detached 目录:sudo cp -rl /var/lib/clickhouse/backup/t_order_mt/1/store/092/092cf360-d509-4379-892c-f360d509d379/* /var/lib/clickhouse/data/default/t_order_mt/detached/
  • 执行attach:echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client
  • 查看数据:

clickhouse-backup

clickhouse的自动化备份工具,下载地址:https://github.com/AlexAkulov/clickhouse-backup/

首先上传并安装(rpm):sudo rpm -ivh clickhouse-backup-1.0.0-1.x86_64.rpm

该工具由两部分组成:

①配置文件,路径:/etc/clickhouse-backup/config.yml

注意:1.0.0不支持hdfs

②命令:/usr/bin/clickhouse-backup

常用操作

查看可用命令:clickhouse-backup help

显示要备份的表: clickhouse-backup tables

创建备份:clickhouse-backup create

创建完成后在/var/lib/clickhouse/backup文件夹中可以看到备份文件:

可以通过–name 标志指定备份名称

查看现有的本地备份:clickhouse-backup list

从备份恢复数据:sudo clickhouse-backup restore 2023-08-07T06-58-10

首先删除表t_order_mtecho 'drop table t_order_mt' | clickhouse-client

但是删除完成后发现store文件夹中依旧存在该表对应的数据文件:

可知此时还未完全删除

如果执行备份语句会报错:

但是无论是metadata还是store文件夹中,对应的sql语句都已删除

于是手动删除store文件夹下t_order_mt表对应的数据,之后重试备份恢复:

又有报错,但此时可以看到store中相应的数据已经恢复;

但此时去查询表是查不到的,而且再次备份又会出现同样的报错.......


解决方法:

先还原表结构:clickhouse-backup restore 2023-08-07T06-58-10 --schema

再还原数据:clickhouse-backup restore 2023-08-07T06-58-10 --data

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


其他注意事项:

(1)API 文档:https : //github.com/AlexAkulov/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.lryc.cn/news/231150.html

相关文章:

  • 想买GPT4会员却只能排队?来看看背后的故事!
  • Oracle(17)Managing Roles
  • 小程序中如何设置门店信息
  • SCons
  • 蓝桥杯每日一题2023.11.14
  • 力扣labuladong——一刷day33
  • spring cloud alibaba之nacos
  • python自动化第一篇—— 带图文的execl的自动化合并
  • 使用 Redis 实现分布式锁,解决分布式锁原子性、死锁、误删、可重入、自动续期等问题(使用SpringBoot环境实现)
  • mysql oracle统计报表每天每月每年SQL
  • 通过Python设置及读取PDF属性,轻松管理PDF文档
  • 10. 深度学习——模型优化
  • macos 上彻底卸载 DevEco Studio
  • Nginx(五) break,if,return,rewrite和set指令的执行顺序深究
  • 八大学习方法(金字塔模型、费曼学习法、布鲁姆学习模型)
  • K8S的基础知识
  • java:基于jjwt写一个jwt工具类
  • AK F.*ing leetcode 流浪计划之半平面求交
  • docker搭建zokeeper集群、kafka集群
  • 【java学习—十四】反射机制调用指定方法、指定属性(5)
  • PC端微信@所有人逻辑漏洞
  • 如何在Windows 10中进行屏幕截图
  • 【nlp】2.4 GRU模型
  • 国科云:浅谈DNS缓存投毒常见类型和防御策略
  • Linux命令(120)之tcpdump
  • 2311rust对接C
  • MYSQL字符串函数详解和实战(字符串函数大全,内含示例)
  • 从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)
  • Angular 指令介绍及使用(三)
  • 小学生加减乘除闯关运算练习流量主微信小程序开发