clickhouse数据备份和恢复

数据库自动化运维

0.前言

ClickHouse 作为高性能的面向列的 SQL 数据库管理系统 (DBMS),在在线分析处理 (OLAP)领域用的非常广泛,越来越多的公司使用ClickHouse来存储运营相关数据。对于ClickHouse里存储的重要数据,数据备份和数据恢复也是非常重要的,今天就来看下如何对ClickHouse的数据做数据备份和还原操作。

1.工具简介

为了简化clickhouse数据备份和恢复,官方推荐了一款工具clickhouse-backup,今天我们讨论的clickhouse数据备份和恢复就是基于这款工具来做的。clickhouse-backup是altinity提供的一个clickhouse数据库备份和恢复的工具,开源项目地址:https://github.com/Altinity/clickhouse-backup
clickhouse-backup工具包含如下功能:
(1)支持单表/全库备份;
(2)支持备份上传到S3/FTP等存储;
(3)支持单表/全库恢复。

2.工具安装

本次实验是在Rocky8 Linux操作系统上完成的,为了简化安装部署,直接使用rpm包的方式安装。本次安装的版本是2.5.20,rpm包为:clickhouse-backup-2.5.20-1.x86_64.rpm。
如果想使用其他版本的clickhouse-backup,可以到官网下载:https://github.com/Altinity/clickhouse-backup/releases 安装命令非常简单,如下:

cd ~/install/ck # 切换到rpm包所在目录
yum install -y clickhouse-backup-2.5.20-1.x86_64.rpm

安装完成之后,可以看下安装的版本,命令如下:

clickhouse-backup -v

输出如下:

Version:         2.5.20
Git Commit:      ab47d585e8418888a5169e6c0160c9859b5d6ed9
Build Date:      2025-04-01

3.配置修改

clickhouse-backup安装完成之后,需要修改clickhouse-backup的配置文件,主要要修改clickhouse的连接方式,默认情况下,clickhouse-backup的配置文件在/etc/clickhouse-backup/目录下,文件命为config.yml.example,将其拷贝为config.yml,命令如下:

cp /etc/clickhouse-backup/config.yml.example /etc/clickhouse-backup/config.yml

之后修改如下几项配置:

clickhouse:
    username: <username> // 登录clickhouse的用户名
    password: <password> // 登录clickhouse的密码
    host: localhost // clickhouse连接地址
    port: 9000 // clickhouse连接端口

修改完成之后保存配置文件。

4.数据备份

4.1.全库备份

全库备份的命令非常简单,如下所示:

clickhouse-backup create

备份完成之后,会在clickhouse数据目录下生成一个backup目录,并创建一个当天日期+时间的目录存放备份数据,如下所示(默认情况下数据目录为/var/lib/clickhouse):

ls /var/lib/clickhouse/backup/
2025-04-02T07-05-07

检查发现存在该目录,说明备份完成。

4.2 单表备份

单表备份的命令同样简单,如下所示:

clickhouse-backup create -t <db_name>.<table_name> <backup_dir_name>

命令说明:
(1) -t:说明是备份表
(2)db_name: 库名
(3)table_name:待备份的表名
(4)backup_table_name:备份后的备份目录名(可不指定,默认为日期+时间目录)

4.3 多表备份

备份多表和备份单表的命令基本一致,多个表之间用逗号隔开,如下所示:

clickhouse-backup create -t <db_name>.<table_name1>,<db_name>.<table_name2> <backup_dir_name>

命令中各项参数的含义也和单表备份一样。

5.数据恢复

5.1 全库恢复

全库恢复命令同样很简单,如下所示:

clickhouse-backup resotre /var/lib/clickhouse/backup/2025-04-02T07-05-07

5.2 恢复表结构

恢复表结构命令如下:

clickhouse-backup restore 备份名 --table 库名.表名 --schema

5.3 恢复表数据

恢复表数据命令如下:

clickhouse-backup restore 备份名 --table 库名.表名 --data

注意:
备份过程中有时候会出现如下报错恢复过程可能会存在这个报错,warn can’t create table 'dbname.tablename': code: 57, message: Directory for table data store/05c/07cbcdec-fa1d-rcf8-97c6-98868b16fa39/ already exists, will try again backup=2025-04-01T02-06-53 operation=restore 这个时候只需要删掉/var/lib/clickhouse/backup/2024-03-11T02-06-53/metadata/dbname/tablename.json中的UUID '07cbcdec-fa1d-rcf8-97c6-98868b16fa39'即可

6.结语

可以看到clickhouse-backup功能还是很强大的,并且操作简单,开源免费,日常运维过程中可以将其放到定时任务脚本里面,自动完成日常数据备份。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论