大数据ClickHouse进阶(二十六):ClickHouse数据备份
【摘要】 ClickHouse数据备份在ClickHouse中存在副本,主要作用是保证数据的高可用,副本不能防止数据误删这类操作,ClickHouse提供了多种数据备份的方法来防止数据误删。一、导出文件备份如果数据的体量较小,可以通过dump的形式将数据导出为本地文件,具体操作如下:#在ClickHouse中创建表 test_backupcreate table test_backup(id UIn...
ClickHouse数据备份
在ClickHouse中存在副本,主要作用是保证数据的高可用,副本不能防止数据误删这类操作,ClickHouse提供了多种数据备份的方法来防止数据误删。
一、导出文件备份
如果数据的体量较小,可以通过dump的形式将数据导出为本地文件,具体操作如下:
执行导出数据命令:
数据备份完成之后,需要还原到表时,可以执行如下命令:
二、通过快照表备份
快照表实质上就是普通的数据表,使用快照表备份时首先需要建立一张与原表结构相同的数据表,然后再使用“Insert into select ”句式将原有数据表写入到备份表。
假设test_backup表需要在1号这天做备份,步骤如下:
如果考虑到容灾问题,也可以将备份表放置在不同的ClickHouse节点上,此时备份数据的SQL如下:
注意:remote中参数意义为remote(远程ClickHouse集群,连接ClickHouse库,备份的表,登录用户,用户密码)
测试如下:
三、按分区备份
基于数据分区的备份,ClickHouse目前提供了FREEZE与FETCH两种方式。
1、使用FREEZE备份
FREEZE的完整语法如下:
分区在备份之后,会统一保存到“/var/lib/ClickHouse/shadow/N”目录下,其中N是一个自增的整数,代表备份的次数(FREEZE执行的次数),具体次数由shadow子目录下的increment.txt文件记录。
使用FREEZE对分区进行备份测试:
在node1上对表test_backup分区“beijing”进行备份,具体操作如下:
以上命令执行完成之后,可以在“/var/lib/ClickHouse/shadow/1”下看到对应的数据。
在对应的数字目录中,目录结构为:/store/[database]/[table]/[partition_folder],如下:
对于备份的数据还原,需要借助ATTACH装载分区的方式实现,需要将shadow子目录下的分区文件复制到相应数据表的detached目录下,然后再使用ATTACH语句加载。
下面将备份的分区还原到表test_backup中,操作如下:
2、使用FETCH备份
FETCH 只支持ReplicatedMergeTree系列的表引擎,完整语法如下:
其工作原理与ReplicatedMergeTree同步数据的原理类似,FETCH通过指定的zk_path找到ReplicatedMergeTree的所有副本实例,然后选择一个最合适的副本,下载相应的分区数据。
FETCH备份分区数据案例如下:
将表test_fetch “beijing”分区数据进行备份,在node1节点上执行如下命令:
执行以上命令之后,将对应分区的数据下载到当前节点本地“/var/lib/ClickHouse/data/{database}/{table}/detached”目录下:
与FREEZE一样,对分区数据进行还原时,需要借助ATTACH装载分区来实现,具体操作如下:
FREEZE和FETCH虽然都能实现分区文件的备份,但不会备份数据表的元数据(也就是建表语句),为了做到万无一失的备份,还需要对元数据进行备份,元数据在“/var/lib/ClickHouse/metadata/{database}”目录下,找到对应表的sql文件单独保存即可。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)