一、clickhouse-backup 简介
clickhouse-backup 是社区开源的一个 clickhouse 备份工具,可用于实现数据迁移。其原理是先创建一个备份,然后从备份导入数据,类似于 MySQL 的 mysql dump + source。
使用限制:
- 支持1.154390以上的 clickhouse
- 仅支持 MergeTree 系列表引擎
- 不支持备份 Tiered storage 或 stora_policy
- 云存储上的最大备份大小为 5TB
- AWS S3上的 parts 数量最大为 10000
二、clickhouse-backup 安装
2.1、解压安装包
tar -zxf clickhouse-backup-linux-amd64.tar.gz -C /opt/module
解压后在 /opt/module 目录下会有一个build 目录
2.2、创建软连接
sudo ln -sv /opt/module/build/linux/amd64/clickhouse-backup /usr/local/bin/
2.3、测试 clickhouse-backup命令
clickhouse-backup -v
2.4、创建配置文件
sudo mkdir -p /etc/clickhouse-backup/
vim /etc/clickhouse-backup/config.yml
general:
remote_storage: none
backups_to_keep_local: 0 # 本地备份保留个数,默认0表示不自动做备份清理
log_level: info
clickhouse:
username: default #clickhouse 用户名
password: #密码
host: node1 #实际节点hostname
port: 9000 # tcp 端口
data_path: "/data/lib/clickhouse" #clickhouse的数据的实际存储位置
skip_tables:
- system.*
- INFORMATION_SCHEMA.*
- information_schema.*
config_dir: "/etc/clickhouse-server"
更多相关配置可以看官网 https://github.com/Altinity/clickhouse-backup?tab=readme-ov-file
三、备份数据
3.1、全库(default 库)备份
语法:
clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name>
例子:
sudo clickhouse-backup create -t default.* default_back_0225
3.2、备份单个表
例子:
sudo clickhouse-backup create -t default.test test_back_0225
3.3、备份多个表
例子:
sudo clickhouse-backup create -t default.test1,default.test2 test1_test2_back_0225
四、使用备份还原数据
将 default_back_0225 目录整个目录传送到目标服务器的/data/lib/clickhouse/backup 目录下,然后执行命令
clickhouse-backup restore default_back_0225 --data
运行完成后可以查看数据是否迁移成功
单表从备份还原
使用 --schema 恢复表的表结构
clickhouse-backup restore 备份名 --table 库名.表名 --schema
用 --data 恢复表中数据(注意:由于是ATTACH PARTITION操作,如果执行2次的话,数据会翻倍)
clickhouse-backup restore 备份名 --table 库名.表名 --data
- 注意:如果是从单节点的 MergeTree 引擎表还原至多节点的分布式本地表的ReplicatedMergeTree 引擎表,需要目标服务器已经建好库和表,库中表名与表结构需要和备份库一致。