原理
DETACH会使表脱离clickhouse的管理,源表依然可以读写操作,但是备份前的数据已经完全脱离clickhouse管理,将数据文件移动到对应分区的detached目录,然后使用 attach 同样可以将表再次交付给clickhouse管理。
注意:必须要在主副本上执行 alert table xxx DETACH PART or PARTITION 。
操作演示
操作和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 就可以实现类似的存算分离和存储备份功能。
网友评论