clickhouse数据备份恢复以及保留指定备份
最近在对clickhouse做备份,以及设置保留策略。定时任务的实现使用的是宝塔提供的
备份脚本
#!/bin/bash
#获取当前日期,并命名备份文件
filename="testtb_`date +%Y%m%d`.tsv"
#判断备份文件是否已存在
if [ ! -f " /home/backup/$filename" ]; then
#如不存在,执行备份命令
clickhouse-client --password 12 --query="select * from testdb.testtb" > /home/backup/$filename
else
#如已存在,打印"文件存在"
echo "文件已存在"
fi
#将数据导入到数据库命令
# cat /home/backup/$filename | clickhouse-client --password 12 --query "insert into testdb.testtb FORMAT TSV"
保留最近7天的备份文件并删除其他备份文件
back_path=/home/backup
find $back_path/ -mtime +7 -name "testtb_*.tsv" -exec rm -rf {} \;
# 命令说明
find 筛选指定目录下文件
-mtime +7 根据当前时间筛选出往前 7 天的文件
-name 查找的文件,可以模糊匹配
-exec 对上一步结果进行删除处理
保留最新3个备份文件并删除其他备份文件
back_path=/home/backup
ls $back_path -t |grep 'testtb_' | sed -n '4,$p' | xargs -I {} rm -rf {}
# 命令说明
ls -t 列出文件,并按最后更新时间倒序
grep 'testtb_' 过滤出包含'testtb_' 的文件或文件夹
sed -n ‘4,$p’ 对上一步的结果再次进行过滤,保留第4行到最后一行,即除最新3个文件之外的文件或目录
xargs -I {} rm -rf {} 对上一步筛选出的文件或目录,进行删除处理
欢迎大家留言,以便于后面的人更快解决问题!另外亦欢迎大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉!
------愿来生只做陌上的看花人,无须入尘缘,仅行于陌上,看一川风花,无爱无伤-----