暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHous手动备份及恢复

IT那活儿 2025-07-14
690

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!



前 言

ClickHouse允许使用ALTER TABLE ... FREEZE PARTITION ...查询以创建表分区的本地副本。这是利用硬链接(hardlink)/var/lib/clickhouse/shadow/文件夹中实现的,所以它通常不会因为旧数据而占用额外的磁盘空间。
创建的文件副本不由ClickHouse服务器处理,所以不需要任何额外的外部系统就有一个简单的备份。防止硬件问题,最好将它们远程复制到另一个位置,然后删除本地副本。


具体操作

2.1 创建备份路径
创建用于存放备份数据的目录shadowsudo mkdir -p var/lib/clickhouse/shadow/如果目录存在,先清空目录下的数据。
2.2 执行备份命令
echo -n 'altertable t_order_mt freeze' | clickhouse-client
2.3 将备份数据保存到其他路径
创建备份存储路径:
sudo mkdir -p var/lib/clickhouse/backup/
拷贝数据到备份路径:
sudo cp -r var/lib/clickhouse/shadow//var/lib/clickhouse/backup/my-backup-name
为下次备份准备,删除shadow下的数据:
sudo rm -rf var/lib/clickhouse/shadow/*
2.4 恢复数据
1)模拟删除备份过的表
echo ' droptable t_order_mt ' | clickhouse-client
2)重新创建表
cat events.sql | clickhouse-client
3)将备份复制到detached目录
sudo cp -rl

backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/*data/default/t_order_mt/detached/ClickHouse

使用文件系统硬链接来实现即时备份,而不会导致ClickHouse服务停机(或锁定)。这些硬链接可以进一步用于有效的备份存储。
在支持硬链接的文件系统(例如本地文件系统或NFS)上,将cp与-l标志一起使用(或将rsync与–hard-links和–numeric-ids标志一起使用)以避免复制数据。
注意仅拷贝分区目录,注意目录所属的用户要是clickhouse。
4)执行
attachecho 'altertable t_order_mt attach partition20200601' | clickhouse-client
5)查看数据
echo 'selectcount() from t_order_mt' | clickhouse-client

END


本文作者:王晋升(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论