目录

rsync-备份-clickhouse

目录

rsync 备份 clickhouse

raync 备份 clickhouse 到远程主机

📌 使用 rsync 备份 ClickHouse 数据到远程主机

ClickHouse 的数据通常存储在 /var/lib/clickhouse/ 目录下,如果你想将 ClickHouse 数据备份到远程主机,可以使用 rsync。

✅ 1. rsync 备份 ClickHouse 数据

rsync -avz --progress --delete /var/lib/clickhouse/ user@remote_host:/backup/clickhouse/

🔹 参数解释:

-a:归档模式,保留权限、时间戳、符号链接等(相当于 -rlptgoD)。

-v:显示详细信息。

-z:压缩数据,提高传输效率。

–progress:显示进度。

–delete:同步删除远程已删除的文件(可选)。

/var/lib/clickhouse/:本机 ClickHouse 数据目录。

user@remote_host:/backup/clickhouse/:远程主机的备份目录。

🚀 示例(远程主机 IP 为 192.168.1.100,用户名为 backup):

rsync -avz --progress /var/lib/clickhouse/ backup@192.168.1.100:/backup/clickhouse/

✅ 2. 仅备份 store/ 目录(数据表)

ClickHouse 主要的表数据存储在 store/ 目录,你也可以仅备份该目录:

rsync -avz --progress /var/lib/clickhouse/store/ backup@192.168.1.100:/backup/clickhouse/store/

✅ 3. 仅备份 metadata/(表结构)

ClickHouse 表结构 存储在 /var/lib/clickhouse/metadata/ 目录:

rsync -avz --progress /var/lib/clickhouse/metadata/ backup@192.168.1.100:/backup/clickhouse/metadata/

✅ 4. 计划任务定期备份

如果你希望每天凌晨 2 点自动备份 ClickHouse 数据到远程主机,可以添加 crontab 任务:

crontab -e
0 2 * * * rsync -avz --progress /var/lib/clickhouse/ backup@192.168.1.100:/backup/clickhouse/

✅ 5. 使用 rsync 增量备份

如果你想使用 增量备份(仅传输新数据),可以加上 –link-dest 选项:

rsync -avz --progress --delete --link-dest=/backup/clickhouse/latest /var/lib/clickhouse/ backup@192.168.1.100:/backup/clickhouse/$(date +\%F)/
ln -sfn /backup/clickhouse/$(date +\%F) /backup/clickhouse/latest

这样每次备份只会存储增量数据,但可以恢复完整的数据。

✅ 6. 备份 ClickHouse 并压缩

rsync -avz /var/lib/clickhouse/ backup@192.168.1.100:/backup/clickhouse/ && tar -czvf /backup/clickhouse.tar.gz /backup/clickhouse/

这将:

先 rsync 备份数据到远程主机

再使用 tar 打包 gzip 压缩备份文件

📌 总结

操作 命令

完整备份 ClickHouse

rsync -avz --progress /var/lib/clickhouse/ backup@remote_host:/backup/clickhouse/

仅备份 store/(数据表)

rsync -avz --progress /var/lib/clickhouse/store/ backup@remote_host:/backup/clickhouse/store/

仅备份 metadata/(表结构)

rsync -avz --progress /var/lib/clickhouse/metadata/ backup@remote_host:/backup/clickhouse/metadata/

增量备份

rsync -avz --progress --link-dest=/backup/clickhouse/latest /var/lib/clickhouse/ backup@remote_host:/backup/clickhouse/$(date +\%F)/

自动定时备份 crontab -e 添加

0 2 * * * rsync -avz --progress /var/lib/clickhouse/ backup@remote_host:/backup/clickhouse/

🚀 推荐使用 rsync 进行增量备份,并结合 crontab 实现自动定期备份! 🎯

警告

备份完成后,如果想用这个备份数据直接启动新的 clickhouse 需要删除 store 目录下的空目录(因为在备份过程中源 clickhouse 如果是启动状态就会有空目录被备份)

find /tmp/test -type d -empty -delete