一、下载地址
Releases · Altinity/clickhouse-backup · GitHub

二、上传到服务器解压安装
自行上传至服务器,解压命令:
tar xvf clickhouse-backup-linux-amd64.tar.gz

三、创建软连接
sudo ln -sv build/linux/amd64/clickhouse-backup /usr/local/bin/
sudo ln -sv build/linux/amd64/clickhouse-backup /usr/bin/
四、验证
clickhouse-backup -v

五、创建配置文件
查看clickhouse的数据存储路径
sudo vi /etc/clickhouse-server/config.xml
找到path标签,记录这个地址"/icc/tools/clickhouse/data"

创建clickhouse-backup的配置文件
sudo mkdir -p /etc/clickhouse-backup
sudo vi /etc/clickhouse-backup/config.xml
general:
remote_storage: none
backups_to_keep_local: 7 # 本地备份保留个数,默认0表示不自动做备份清理
backups_to_keep_remote: 31 # 远程备份保留个数
clickhouse:
username: default
password: ""
host: localhost
port: 9000 # 这个与jdbc链接里的端口没关系,就是9000
data_path: "/icc/tools/clickhouse/data" #clickhouse的数据的实际存储位置

注:
1、password配置项,我之前是设置了default的密码的,然后就在这里使用了那个密码,但是一直报错,所以就把default账号的密码文件删掉了
2、data_path配置项,这里就是clickhouse的数据存储路径
六、常用命令
sudo clickhouse-backup tables //查看可备份的表有哪些
sudo clickhouse-backup list //查看备份清单
sudo clickhouse-backup create -t 表名 备份名 //备份指定表
sudo clickhouse-backup create 备份名 //备份全库
sudo clickhouse-backup delete local 备份名 //删除本地备份
sudo clickhouse-backup restore 备份名 //还原本地备份
还原备份有可选参数:-table 只还原指定表 例:-table=数据库名.*(还原指定库)
还原时如果遇到类似问题:code: 57, message: Directory for table data store/e8c/e8c3a343-758d-4e9a-a8c3-a343758dce9a/ already exists after 1 times,需要找到备份文件夹中的/metadata/数据库名/表名.json文件,然后把UUID删掉(下图选中部分),再重新执行即可

七、配置定时备份脚本
编写脚本
vi ck_backup.sh
#!/bin/bash
clickhouse-backup create all_`date +%Y%m%d`
clickhouse-backup delete local all_`date -d "2 day ago" "+%Y%m%d"`
编辑定时任务
crontab -e
0 1 * * * sudo sh /icc/tools/crontab/ck_backup.sh &>>/icc/logs/ck_backup.log
如果sudo不成功的,可以添加如下配置
sudo vi /etc/sudoers
在末尾加上这一行
user01 ALL=(ALL) NOPASSWD:ALL
把user01替换成你的用户名即可