应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

ClickHouse备份与恢复

  本文转载自万能修实验室作者:公先生ID:dropudatabase
  我们评估一款数据库产品,除了稳定性和易用性外,数据安全也十分重要,备份与恢复往往是最后一道安全门。
  但如果备份策略不完善、恢复手段无效,一旦发生数据误删除就真的抢救无效扑街了。
  目前Clickhouse的备份方式有以下几种:
  文本文件导入导出
  表快照
  ALTERTABLEFREEZE
  备份工具ClickhouseBackup
  ClickhouseCopier
  下面就逐个试试吧。数据备份概述
  https:clickhouse。techdocsenoperationsbackup
  1。文本文件导入导出
  测试数据
  MySQL中源数据6。70G,表数据量899万测试表数据量899万MySQL中源数据6。70G0rowsinset。Elapsed:71。482sec。Processed8。99millionrows,6。70GB(125。77thousandrowss。,93。71MBs。)
  导出clickhouseclientqueryselectfromcaihao。chtestcustomerdataclickhousetmpcaihao。chtestcustomer。tsv
  导入(注意FORMAT后面大写)多个文件可以用chtestcatdataclickhousetmpcaihao。chtestcustomer。tsvclickhouseclientqueryinsertintocaihao。chtestcustomerFORMATTSV
  速度:导入需要20多秒
  CH文件磁盘占用368MB368chtestcustomer
  备份文件3。5G压缩后139MB〔rootclickhouse01tmp〕duhsm3539caihao。chtestcustomer。tsv〔rootclickhouse01tmp〕gzipcaihao。chtestcustomer。tsv〔rootclickhouse01tmp〕duhsm139caihao。chtestcustomer。tsv。gz
  对比下占用空间:
  MySQL6。7G
  ClickHouse368M
  导出文本3。5G
  压缩后139M
  2。CTAS表快照
  1本地复制表clickhouse01:)createtablech1aschtestcustomer;CREATETABLEch1ASchtestcustomerOk。0rowsinset。Elapsed:0。006sec。clickhouse01:)insertintotablech1selectfromchtestcustomer;INSERTINTOch1SELECTFROMchtestcustomerOk。0rowsinset。Elapsed:18。863sec。Processed8。99millionrows,6。70GB(476。59thousandrowss。,355。13MBs。)
  2远程复制表
  https:clickhouse。techdocsensqlreferencetablefunctionsremote语法remote(addressesexpr,db,table〔,user〔,password〕〕)remote(addressesexpr,db。table〔,user〔,password〕〕)例子:dbadocker:)insertintotablech1selectfromremote(10。222。2。222,caihao。chtestcustomer,chapp,qwerty123);INSERTINTOch1SELECTFROMremote(10。222。2。222,caihao。chtestcustomer,chapp,qwerty123)Ok。0rowsinset。Elapsed:17。914sec。Processed8。99millionrows,6。70GB(501。85thousandrowss。,373。95MBs。)
  3。ALTERTABLEFREEZE
  语法:ALTERTABLEtablenameFREEZE〔PARTITIONpartitionexpr〕
  该操作为指定分区创建一个本地备份。
  如果PARTITION语句省略,该操作会一次性为所有分区创建备份。整个备份过程不需要停止服务
  注意:FREEZEPARTITION只复制数据,不备份元数据。元数据默认在文件varlibclickhousemetadatadatabasetable。sql
  1。备份的步骤:
  确认shadow目录为空:
  (默认位置:varlibclickhouseshadow)
  OPTIMIZETABLE把临时分区的数据,合并到已有分区中OPTIMIZETABLEcaihao。testrestoretabPARTITION202010FINAL;
  或者OPTIMIZETABLEcaihao。testrestoretabFINAL;
  让ClickHouse冻结表:echonaltertablecaihao。chtestcustomerfreezeclickhouseclient
  备份后的文件〔rootclickhouse01shadow〕lldataclickhousedatashadowtotal8drwxrx3clickhouseclickhouse4096Oct1615:341rwr1clickhouseclickhouse2Oct1615:34increment。txt〔rootclickhouse01shadow〕duhsm30911increment。txt
  按日期保存备份:mkdirpdataclickhousedatabackup20201016cprdataclickhousedatashadowdataclickhousedatabackup20201016
  最后,为下次备份清理shadow目录:rmrfdataclickhousedatashadow
  2。手动恢复
  从备份中恢复数据,按如下步骤操作:
  如果表不存在,先创建。查看。sql文件获取执行语句(将ATTACH替换成CREATE)。
  从备份的datadatabasetable目录中,将数据复制到varlibclickhousedatadatabasetabledetached目录
  运行ALTERTABLEtATTACHPARTITION操作,将数据添加到表中
  测试把数据恢复到一个新表testrestoretab中
  1获取建表语句:catdataclickhousedatametadatacaihaochtestcustomer。sql
  然后将DDL语句中的ATTACHTABLE改为CREATETABLE
  2备份复制到表的detached目录中:cprldataclickhousedatabackup20201016shadow1datacaihaochtestcustomerdataclickhousedatadatacaihaotestrestoretabdetachedchownclickhouse:clickhouseRdataclickhousedatadatacaihaotestrestoretabdetached
  3将数据添加到表中attachpartitionechoaltertablecaihao。testrestoretabattachpartition202010clickhouseclientechoaltertablecaihao。testrestoretabattachpartition202009clickhouseclient
  要把所有分区都执行一遍,最终detached目录下所有的分区,都移动到了上一目录
  4确认数据已还原:echoselectcount()fromcaihao。testrestoretabattachclickhouseclientclickhouse01:)selectcount()fromtestrestoretab;SELECTcount()FROMtestrestoretabcount()89900201rowsinset。Elapsed:0。002sec。clickhouse01:)selectcount()fromchtestcustomer;SELECTcount()FROMchtestcustomercount()89900201rowsinset。Elapsed:0。002sec。
  数据量和原表一致
  4。ClickhouseBackup
  ClickhouseBackup简介
  https:github。comAlexAkulovclickhousebackup
  使用限制:
  支持1。1。54390以上的ClickHouse
  仅MergeTree系列表引擎
  不支持备份Tieredstorage或storagepolicy
  云存储上的最大备份大小为5TB
  AWSS3上的parts数最大为10,000
  安装方式1:二进制文件安装
  clickhousebackup下载:wgethttps:github。comAlexAkulovclickhousebackupreleasesdownloadv0。6。0clickhousebackup。tar。gz
  解压即用tarxfclickhousebackup。tar。gzcdclickhousebackupsudocpclickhousebackupusrlocalbin
  安装方式2:rpm安装:wgethttps:github。comAlexAkulovclickhousebackupreleasesdownloadv0。6。0clickhousebackup0。6。01。x8664。rpmrpmivhclickhousebackup0。6。01。x8664。rpm
  查看版本〔rootclickhouse01clickhousebackup〕clickhousebackupvVersion:0。6。0GitCommit:7d7df1e36575f0d94d330c7bfe00aef7a2100276BuildDate:20201002
  编辑配置文件:mkdirpetcclickhousebackupvietcclickhousebackupconfig。yml
  添加一些基本的配置信息general:remotestorage:nonebackupstokeeplocal:7backupstokeepremote:31clickhouse:username:defaultpassword:host:localhostport:9000datapath:dataclickhousedata
  查看全部默认的配置项clickhousebackupdefaultconfig
  查看可备份的表clickhousebackuptables
  创建备份
  1。全库备份clickhousebackupcreate
  备份存储在中datapathbackup下,备份名称默认为时间戳,可手动指定备份名称。例如:clickhousebackupcreatechbk20201020
  备份包含两个目录:
  metadata目录:包含重新创建所需的DDLSQL
  shadow目录:包含作为ALTERTABLE。。。FREEZE操作结果的数据。
  2。单表备份
  语法:clickhousebackupcreate〔t,tables。〕pre
  备份表caihao。chtestcustomerclickhousebackupcreatetcaihao。chtestcustomerchtestcustomer
  3。备份多个表clickhousebackupcreatetcaihao。testrestoretab,caihao。ch1chbak2tab
  查看备份文件〔rootclickhouse01backup〕clickhousebackuplistLocalbackups:test20201019(createdat2010202014:18:40)chbk20201020(createdat2010202014:20:35)20201020T062708(createdat2010202014:27:08)chtestcustomer(createdat2010202015:17:13)chbak2tab(createdat2010202015:33:41)
  删除备份文件〔rootclickhouse01backup〕clickhousebackupdeletelocaltest20201019〔rootclickhouse01backup〕〔rootclickhouse01backup〕clickhousebackuplistLocalbackups:chbk20201020(createdat2010202014:20:35)20201020T062708(createdat2010202014:27:08)chtestcustomer(createdat2010202015:17:13)chbak2tab(createdat2010202015:33:41)
  清除shadow下的临时备份文件〔rootclickhouse01shadow〕clickhousebackupclean2020102014:19:13Cleandataclickhousedatashadow
  数据恢复
  语法:
  clickhousebackuprestore备份名〔rootclickhouse01〕clickhousebackuprestorehelpNAME:clickhousebackuprestoreCreateschemaandrestoredatafrombackupUSAGE:clickhousebackuprestore〔schema〕〔data〕〔t,tables。〕OPTIONS:configFILE,cFILEConfigFILEname。(default:etcclickhousebackupconfig。yml)〔CLICKHOUSEBACKUPCONFIG〕tablevalue,tablesvalue,tvalueschema,sRestoreschemaonlydata,dRestoredataonlypre
  一些参数:
  table只恢复特定表,可使用正则。
  如针对特定的数据库:tabledbname。
  schema只还原表结构
  data只还原数据
  备份到远程目标
  Clickhousebackup支持从远程对象存储(例如S3,GCS或IBM的COS)上载和下载备份。
  例如AWS的S3,修改配置文件etcclickhousebackupconfig。yml
  s3:accesskey:secretkey:bucket:存储桶BUCKET名称region:useast1path:somepathinbucket备份路径
  然后即可以上传备份:nbsp;clickhousebackupupload20200706T2013022020070715:22:32Uploadbackup20200706T2013022020070715:22:49Done。
  或者下载备份:nbsp;sudoclickhousebackupdownload20200706T2013022020070715:27:16Done。
  备份保留策略
  general:下的2个参数来控制备份的保留策略
  backupstokeeplocal:0本地备份保留个数
  backupstokeepremote:0远程备份保留个数
  默认为0,即不自动做备份清理。
  可以设置为:
  backupstokeeplocal:7
  backupstokeepremote:31
  使用clickhousebackupupload上传备份可以使用参数difffrom
  将文件与以前的本地备份进行比较,仅上载新的更改的文件。
  必须保留先前的备份,以便从新备份中进行还原。
  备份恢复测试:
  测试库有3张表,数据量一样dbadocker:)showtables;SHOWTABLESnamech1数据量8990020ch2数据量8990020ch3数据量8990020
  做个备份:bk3tabclickhousebackupcreatebk3tab
  进行数据破坏:truncatetablech1;insertintoch2selectfromch3;droptablech3;
  此时的数据量dbadocker:)showtables;SHOWTABLESnamech1数据量0ch2数据量8990020217980040ch3被drop
  只使用schema恢复ch3表的表结构clickhousebackuprestorebk3tabtablecaihao。ch3schema
  只有表结构,没数据dbadocker:)selectcount()fromch3;SELECTcount()FROMch3count()0
  用data恢复ch3表中数据
  (注意,由于是ATTACHPART操作,如果执行2次的话,数据会翻倍)clickhousebackuprestorebk3tabtablecaihao。ch3data
  数据已导入dbadocker:)selectcount()fromch3;SELECTcount()FROMch3count()8990020
  恢复其他表:〔rootdbadocker〕clickhousebackuprestorebk3tab2020102017:42:37Createtablecaihao。ch12020102017:42:37cantcreatetablecaihao。ch1:code:57,message:Tablecaihao。ch1alreadyexists。
  由于要新建表,只能把表drop掉才能全库恢复。
  直接dropdatabase,然后全库恢复clickhousebackuprestorebk3tab
  验证后数据是全部恢复成功了dbadocker:)showtables;SHOWTABLESnamech1ch2ch3
  dbadocker:)selectcount()fromch1;SELECTcount()FROMch1count()8990020
  加到每日备份任务中:mkdirpdataclickhousescriptsvidataclickhousescriptsCHFullBackup。sh
  !binbashBACKUPNAMECHFullBackup(dateYmdTHMS)usrbinclickhousebackupcreateBACKUPNAMEusrbinclickhousebackupuploadBACKUPNAME
  由于需要副本环境才能使用,ClickhouseCopier就不做测试了。
  数据库的后悔药
  备份作为数据库最后的后悔药意义十分重大:
  没有做备份,小心被删库;
  一旦删了库,就要快跑路;
  万一被抓住,十五年起步。
  所以,如果做不好备份恢复,就苦练跑路甩锅,情况不好,拔腿就跑。

男人是耙子,女人是匣子,勤俭兴家今天我们来谈谈勤俭兴家。一个家要想兴旺发达,既要靠勤奋,也要靠节俭,二者缺一不可。我父亲给我讲过一个故事。从前有户人家,老人在的时候,生活过得殷实,一家人都在……孩子爱吃的糖醋大虾,鲜酸微甜,营养又解馋,吃一次念念不忘大家好,这里是杨爸的育儿经,主题介绍简单的育儿辅食和育儿知识,只为分享对孩子更好的。本款美食适合3周岁以上的孩子品尝。大虾在我们的日常生活中应该是非常不错的肉食食材。……诺必行婴宝教你如何让孩子拥有一个超强的大脑如今,基本上每个家庭都是独生子女,所以孩子的教育已经成为整个家庭的重中之重。那些处于超级大脑的人让我们羡慕,希望自己的孩子进入这类人群。面对这些新手父母,我们该怎么做才能让孩子……他是重度自闭症孩子,是艺术天才,现在他要当钢琴调律师自闭症孩子长大了能做什么?在这方面,我们常常不敢有太多幻想和奢望,反倒是自闭症孩子们一次次给我们带来惊喜。最近,又有自闭症孩子解锁了新职业钢琴调律师!韦一哲……科学干预阶梯式教学孩子回归校园不再是奢望在中国,自闭症患者超过1000万,这样一个惊人的数字背后是无数家庭的的痛苦和担忧。我最大的愿望就是孩子能尽快康复,顺顺利利地进入普通幼儿园,一位自闭症患儿的妈妈说道。孩子能够早……如何给新生宝宝换尿片?宝宝的尿片要及时的更换,不然的话,宝宝会大声哭闹哈,那么如何才能更好的给宝宝换尿片呢?下次给大家分享一些小技巧,希望能帮到大家!1。换尿布时可以先把宝宝放在床上,然后用两……频繁出现胸闷胸痛无大碍流言:出现胸闷的情况,只要不严重,就不用过多担心,可能是劳累或喝酒过多等所致,休息一会症状就可以缓解。即便是心脏病,吃点速效救心丸就没事了。真相解读:先看一则……学生即将返校宿管阿姨在线接单给大学生晒被子钱阿姨,返校那会儿好像有雨,您可以帮忙我们晒一下被子吗?几天前,来自江苏信息职业技术学院移动通信专业学生夏利君鼓起勇气给宿管阿姨发去短信。受疫情影响,许多高校都延长寒假时……素菜也能这么香!农村人这么吃,个个热乎又好吃,健健康康活到老大家都知道,大多数人从中年开始,就会变得大腹便便,产生赘肉。其中有一个原因是,人到中老年,肠胃消化吸收功能降低,运动也往往下降,一来一去,自然就会发胖。所以,中老年……读艺术大学就是有背景?无稽之谈不能当真,高质量学校也需要实力正所谓取长补短用自己的长处来对自己的短处进行补充,现在不少的学生在小时候就可以学习各种艺术,舞蹈类,乐器类,画画,雕塑等等。艺术学习可以说是解决了那些文化课成绩不高但却拥……七彩路系列课第二季感统小组课游戏的魅力聪聪是一名孤独症谱系的孩子,他在幼儿园没办法正常的参加课间操和体能课。每次课间操和体能课的时候,他总是满操场的跑。老师带着他站在队伍里面,他总是东倒西歪的,还时不时……东北的7所211大学排名,辽宁大学垫底,前三名也算是实至名归不知道从何时起,东北地区就被冠上了素质低这顶帽子。东北三省作为老工业基地,在重工业方面是拥有非常雄厚的发展历史的,并且在全国的排名中,都是名列前茅的。但是,这也不能扭转外……
让宝宝学会说话的小技巧!怎样让孩子语言爆发快速增长?现在还有家长不知道怎样教自己的孩子说话吗?看到这篇文章的家长请认真看完!大部分家长都很担心在宝宝出生以后不会说话,或者是说话晚的情况。看到别人家的宝宝在一岁左右就会说话,……列那狐的故事狐口逃生的小白兔,论技能的重要,懂得拒绝别人《列那狐的故事》狐口逃生的小白兔,论技能的重要,懂得拒绝别人在这里列那狐的计谋中,小白兔朗伯从头到尾总是很被动的。如果当时他懂得拒绝狐狸的邀请,或许就不会有这么危险的经历……一定要从小给孩子立下10个规矩,少一个都不行!第十个能救命每个孩子都是一粒种子,我愿做阳光,给他们以温暖;我愿做雨露,给他们以滋润;我愿做土壤,给他们以勃勃生机。孩子是每个家庭的希望,在孩子成长的过程中我们都会遇到各种问题,孩子……货运船舶紧急遇险施口中队迅速救援7月8日下午2时许,一阵急促的电话铃声骤然响起,正在值班的合肥市交通运输综合行政执法支队南淝河大队施口中队值班人员接到12395指令,恒远货9918在湖区28号标段区域船舶突然……宝宝睡眠时间过长,需要叫醒喂奶吗?判断标准月龄和出生特点文凝妈当了妈妈之后,最操心的就是宝宝的喂养和睡眠。宝宝不停吃、宝宝不爱吃、宝宝睡眠时间太长、宝宝频繁醒来,这些完全相对的问题,却都会让妈妈们感到焦虑。看到有位朋友提……爸气十足,平凡而伟大我的超人爸爸,谢谢你陪我长大爸爸,是一个特别有力量的词语,每每唤起都倍感安心。长得再大,走得再远,孩子永远是爸爸心里那个最重要的宝宝,而爸爸也永远是孩子心里那个最厉害的人。……孩子上学选择公立还是私立?如果符合条件,还是推荐公立学校现在的家长都非常重视孩子的成绩,而作为辅导孩子学习,掌管孩子教育的学校,就备受家长重视了。很多家长为了给孩子选一个好学校,绞尽脑汁,到处考察。我们都知道学校分为公立学校和……除了小白砖,卫生间瓷砖花式贴,竟美到窒息如果说客厅是镁光灯下的舞台,那么卫生间就像是街头艺术家最爱的那堵墙。大理石纹路、缤纷纯色、丰富拼花各种纷繁的类型足以让你眼花缭乱。你的家只会千篇一律的小白砖?不妨看看下面……大言不惭我们在为100年后的书法艺术而奋斗曾来德现担任中国国家画院副院长,终身一直从事书法与现代艺术研究和实践,他是当代丑书的主要干将之一,不仅自己写得丑,也在为写丑书的邵岩、曾翔等等摇旗呐喊。曾翔在湖南齐白石纪……厉害!河北10岁男孩上课偷偷画画,绘画行业的妈妈坦诚自己画不近日,河南南阳的网友分享了一则视频,视频中,这位妈妈无意中翻出10岁的儿子在上课时偷偷画的画,打开一看直接被惊呆了。只见没有学过画画的儿子竟然画出了各种建筑和科幻场景,不仅想象……无购房合同,如何证明合同关系?购买人无法提供购房合同时,提供何种证据能证明购买人与出售人之间具有购房合同关系?姚培福诉称与万顺公司签订了房屋买卖合同,购买了案涉房屋。该房屋买卖合同因万顺公司称需办理产……老师无意点开家长群200元红包,随后立马退还,却被家长截图举导语:学高为师,身正为范。百年大计,教育为先。孩子的教育离不开家长的细心照料,也离不开老师的殷切教导,双方对孩子的爱都是一样的,渴望孩子成才的心也是一样的。这一路上……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网