clickhouse-DETACH分区操作

原理

DETACH会使表脱离clickhouse的管理,源表依然可以读写操作,但是备份前的数据已经完全脱离clickhouse管理,将数据文件移动到对应分区的detached目录,然后使用 attach 同样可以将表再次交付给clickhouse管理。
注意:必须要在主副本上执行 alert table xxx DETACH PART or PARTITION 。

参考文档:https://clickhouse.tech/docs/en/sql-reference/statements/alter/partition/#alter_attach-partition-from

操作演示

操作和FREEZE没多大区别,只是备份的目录在detached下而已,且备份前数据已经脱离clickhouse的管理了,表依据可以读写,其他操作区别不大。

主要操作命令

echo -n "alter table demo_db.demo_table DETACH  PART '20210510_3_3_0'" | clickhouse-client -h xxxx --port 29000 -u default --password xxxx
echo -n "alter table demo_db.demo_table ATTACH  PART '20210510_3_3_0'" | clickhouse-client -h xxxx --port 29000 -u default --password xxxx

Tips

1,与FREEZE类似,同样是本地文件操作,不过需要注意的是,表依然可以读写,只是老数据完全脱离ck管理了,一般也不会这样玩,麻烦!!!,
2,不过在做一些存算分离框架,数据备份的情况下这个功能还是有用的,比如可以使用一个k8s临时集群写数据,然后DETACH文件到s3获得hdfs,然后使用定时任务pull到正式集群磁盘,然后attach 就可以实现类似的存算分离和存储备份功能。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容