00:00
那还有一块,咱们聊聊这个备份及恢复,那其实咱们前面不是,呃,应该入门级阶段介绍过一个,呃,复制表,复制表对吧?呃,你可能会觉得那就是它的高可用了,但不是,那你有没有想过一个问题,复制表我每一个分片都保存了一,比如说保存了一个副本,比如说它就是副本呗,他俩互为副本,好吧,一共俩分片,呃。那有没有可能这个机器直接没了呀,对吧,直接没了当场去世嘛,那这俩也没了,机房炸了对吧?或者谁想不开,被领导骂了委屈了,把机房减了啊,那这个时候你这些数据还能恢复吗?严重一点是不是这种情况,极端情况你还是数据会丢啊,那这个时候咱们可以怎么办?所谓的备份是什么?把这个节点上的数据我整体备份下来,我单独存在一个地方。对吧,存在你的看你的秘密基地哈,存在哪正常呢?它可以存哪呢?一个是本地磁盘。
01:07
但这样还不够安全,除了从本地,我是不是可以把这些备份放到其他地方再藏一份啊,比如说我的远程存储,比如说S3,亚马逊的S3对吧,这个就类似于咱们的一个哈杜了啊呃,里面的HDFS有点类似啊,用过亚马逊的应该都知道啊,就是一个分布式存储。那这个时候即使你的机器挂了,那我这些备份是不是还在啊。对吧,一样的道理,就像你买搜狗备份一样,道理是相通的,道理是相通的,那这一块我们看一下官网的一个介绍,其实它也有介绍啊,来这个页面。这个从哪进呢?再目录这个operations,呃,再往下有一个数据备份,点开就是,那其实英文你看不爽,我们先瞅一眼中文。
02:03
数据备份,他说,尽管我们有一些副本引擎、副本表、复制表,但是。它不能预防人为的操作失误啊,人为的比如说你不小心把数据给删了。那你怎么恢复啊,有同,那如果分片也合并了对吧,那不凉凉了吗?马上就山谷跑路,连夜扛着火车你就跑了对吧?那说不定人家要追究你刑事责任了呀,数据现在可是一个资产了啊呃。这种甚至说我整个数据直接损坏了硬件软件的一些bug,就说白了还不够安全呗,那这个时候我们就可以主动做一个备份啊,备份那有几种方式,第一种我将数据复制到其他地方,它这个是通过什么。消息队列,比如说卡不卡对吧?呃,相当于说其他地方再存一份呗,但这个我觉得。
03:06
呃。一般吧,好吧。那还有一种是文件系统快照,就给他做一个文件系统的快照。那这个呢。可能你要加一些磁盘呢,对吧,相当于说一个备用盘,有一个备用盘。那还有一个。Clickhouse copy。它是一个工具,但它最初的创建目的是为了重新切分。大表的PB级别的啊,但是既然能切分,那肯定涉及到数据的传输拷贝了,所以它也可以,呃,那还有一种是什么呢?手动执行命令,Out table,然后呢,Freeze partition freeze是不是冻结的意思啊?对吧,冻结,呃,那么大家注意,这种方式有一个优点啊,它并不会阻呃影响咱们克里克house的执行。
04:06
不会啊,而且它会将数据备份到咱们的一些路径下面,那这个时候你想干啥就为所欲为呢,那要恢复的时候,你备份的是freeze,那你恢复的时候就是attach。对吧,Attach叫附加,把它附加上去。还记得咱们一些数据路径下面是不是呃表的路径下面有一个文件夹叫tach啊,意思跟它相反对吧,把它移除啊,嗯,那回头呃,咱们也可以演示一下手动的操作,然后呢,他说这些操作是可以实现,没毛病,但是呢,有一个工具可以怎么样自动化,你看一说到这儿大家眼睛就亮了啊,就喜欢这种自动化的,你不用跟我讲那么多对吧,不用跟我说那么多这那的,你就是告诉我用什么能一把梭哈就行了啊没错,这个东西就可以,而且它很简单啊,其实就是把前面咱们一些操作给呃帮你做好就行了。
05:09
那他的官网地址在这儿啊。你点开就行了,我已经打开了,就这。Get up一个链接啊,那么你。一会儿再来聊这个吧,咱们先来演示一下手动,就刚才官网里边最后一种方式part操作。这一块。呃,这样啊,那这些我就不再去看了啊,我们先创建一个路径。用来干嘛呢?你看VAR lib click house是它的数据路径啊,啊存储路径啊,一些依赖一些数据,我创建一个。目录叫shadow啊,它的翻译叫影子对吧,说白了就是你的把数据的影子把它留下来啊呃,我们来看一下,那这边咱们操作过程中一定要时刻注意一个事儿啊,透视咱们的路径归属。
06:14
我是用root用户做的,那咱们click click house默认是用什么用户啊,Click click house用户,所以这个事你一定要记心上啊,不然回头你会出现一些问题,甚至丢数据啊,呃,所以我还是会选择先把它改一下click house click house shadow。好,再瞅一眼,你看这就舒服了呗,啊,不要鹤立鸡群对吧,不要想着与众不同,枪打出头鸟啊,好,那注意啊,这个目录是咱们要反复使用的,比如说你这一次备份完了,明天你还想备份一次,那这个时候你是不是先得把这个路径给什么清空了呀?因为不然你多次备份的数据混在一起,那不乱糟糟了吗?
07:02
那你可能会觉得,那我都备份完了,那还把它清了,那我数据怎么办?你难道不会再创建一个其他的路径来放吗?同学们。可不可以啊,是不是可以啊,这个只是一个临时的一个中转站而已嘛,对吧,中转站。好,来咱们继续啊,然后我们来执行备份命令,咱们有这张表对吧。啊,给大家瞅一眼呗,我在这瞅来,呃,Show tables。是default库,下面的是之前咱们入门建的一些表啊,呃,我现在就弄这张表,我要弄它。那我也不想来了啊,我直接在外面执行了。直接在外面执行,你在里面执行也行啊,我这个是干嘛一口把这句话,然后呢,放到客户端执行去啊,就偷个懒呗,偷个懒。
08:00
好吧,咱们执行来在这边我直接跑就行了,诶按错了。看我的命令,Out table please,对吧?把它冻结好,我冻结完之后,难道这张表就用不了了吗?你看还可以用的呀,不影响呢。呃,那接下来呢,我们冻结完之后,我们瞅一眼啊,为什么我要叫shadow呢?大家注意,这个路径是名字是默认的,你不能瞎起来,我们现在进来多了一个什么。是不是多了东西啊,而且用户是谁呀,Click house啊,所以我才说要注意这个权限问题啊,呃,它有个一有一个rement.tst,我们看一下。这里面就是一呗,啥也没有,那我进到这个一下面啊,看一眼,你看它里面有一个什么。
09:00
知道了,还记得咱们数据。咱们data进去看进去路径一一路点进去,它是不是一个软链接到store路径下,也就是说真正的数据是不是存在store文件夹下面,那你看它也有一个叫store。来store进来瞅一眼CBCB对吧。你看他这个名字是他自己他的一些后缀啊,你看这里面有啥。数据啊,同学们。这是不是就咱们的分区目录啊。对吧,这个就是咱们的分区目录啊。你不信的话,咱们重新进啊,我重新进吧,Click house,我截个图先。呃,然后进来进入到data data里面,咱们进入到default路径目库明呗,啊,这么多表啊,T order,呃,就这张表。
10:04
那大家看它指向的真正路径是不是store?那你是不是也是叫CBCB多少多少多少,其实它是不是从这里开始把它全部备份下来了,其实我进去看大家也知道了,应该是。一毛一样。这三个跟这三个是不是一模一样。对吧。这个就是它对数据的执行的一个冻结命令,它不会影响咱们可里格house的使用啊,不会影响这张表,不会锁表。这个就是它的好处啊好处,那现在咱们就完成了手动备份了,呃,那这个时候我们说了shadow,我重新进来啊,Leave house,这个shadow影子路径是不是咱们的一个中转站呢。那如果因为什么,因为你下次再执行一次freeze,它是不是还进入到这里啊,所以你是不是得把这里的东西挪走啊,是吧,那挪走咱们就再创建一个路径呗。
11:09
我叫一个backup,好吧,Backup,呃,再创建一个这个路径。用来存放。本地化长期存储对吧,然后呢,我直接拷贝。你看我的命令CP嘛,杠二,把这个shadow里面的数据我全部拷贝到backup里面,那里边你还可以再起一个名字做一个区分,好吧。好,这个时候咱们来看看啊,Backup里面。这个名字是我起的呗,你要自己取得你的认识啊,比如说你这次是对哪张表的备份,你要知道啊,对吧,这个名字是我起的啊,不是系统规定的,是我起的,呃,你再进来一看。是不是就又是这两个玩意儿,一进去又是那个什么什么什么对吧。
12:02
好,这个就咱们完成了备份了,同学们是不是很简单对吧。这就是战斗民族。简单粗暴,直接,就喜欢这样的,没有那么多弯弯绕绕啊。喜欢就要大声说,大胆说出来,对吧,好,呃。通常咱们干完这个事儿之后,是不是得把中转站清空一下,就像你上厕所,咱们的一个厕所是不是反复使用的呀?你不可能说你上完了,你把东西留下了,你人走了,你是不是正常情况下,你是不是会按一下按钮冲一下,你不冲一下下个人进来。作何感想。如果他也不冲。如果他来了,他也不冲,他再把他的东西跟你的东西叠加上去,那啊啊啊,不行,不能聊这个话题,画面感太足了是吧,那不合适,所以咱们正常你中转站的数据挪完了,你干嘛把它清一下,为什么不推荐MV呢?万一失败怎么办啊,其实也行啊。
13:11
对吧,那咱们就把这个shadow下面的删掉,那这样你下次备份那就是干干净净清清爽爽CD shadow。对吧,那同样的咱们的备份文件也已经在哪里呀。Back up。目录下面的对吧。那如果你觉得本地不靠谱,你是不是可以把里面的东西拷一份走啊,是不是你可以拷到其他磁盘,你甚至可以把它上传到HDFS等等对不对?那不就更安全了吗,对吧。很简单啊。这就是手动备份,那恢复呢。咱们来演示一下恢复啊,那首先我把这张表删了先啊,我把它删了,呃,那如果删掉的话来删掉。
14:03
这张表现在是不是没了。To,来,我们查一下呗,Show tables。To的MT没有了,这个是二啊,跟刚才那张不一样,那这个时候咱们首先要干嘛恢复它的建表语句,但是咱们好像没有备份它的鉴表语句啊,同学们我想想啊。放了备份了。呃,他默认是不会备份的,我天呐。啊,没救了,没救了,同学们。那我有办法呀。我还有其他的除办法。啊,反正我先把表见了呗,我在其他节点这个节点也没有,那这样吧,呃,我打开咱们之前的文档,我再把这张表念一遍啊,或者找一找这个有没有。
15:04
原数据讲道理是也一起删的啊,原数据我尝试着找一下呗。果然没有对吧,因为他三的话是一体三的。烦躁啊。那行吧,我重新听一遍。表结构我搜一下啊TMT。好,就这张表呗,我再创建一遍建表语句。来,我执行一个建表好了,So tables that from t order。MT,现在是空的对吧,因为数据已经没了,同学们啊,那这个时候咱们就要恢复了,怎么恢复呢?来执行这个命令。这建表就完事了,那个搜索文件没保存呢。
16:01
CP是不是CP啊,把咱们的备份里面的东西全部拷到那个里面去,呃,那这个应该我名字得改一下,这个是T。Order MD,这个是表明啊。那这里面是不是会有一个deach,是不是这一回有印象了吧?呃,我们建完表呢,我看一眼data,进入deault,再进入t order MT,你看它是默认自带一个detachtach,是什么意思呢?啊。脱节的分离的是吧,也就是说咱们的数据要加载进这张表,你把数据丢进tach之后,通过一个命令叫attach,叫附加上去。先把东西准备好,然后再执行附加命令,再把数据附加进去,它是这么一个原理啊,行,呃,那咱们执行呗,把咱们的。
17:05
那我这里不是全路径的话,我必须进到click house的路径下面执行,你这边注意啊,这个是相对路径啊,相对路径还有一个就是你这个备份的路径要搞对啊,这是我之前起的名字。来呃,做的一个拷贝好了,那这边注意啊,这个杠RL,特别是这个L,呃,I支持硬连接的文件,系统本地文件或NFS与杠L一起使用,防止什么避免。重复啊,避免重复。好,那我们。接下来可以执行一个什么,Out table attach,当然这个表明我得改一下啊,Order MT。
18:00
呃,它的分区是什么来着,是按分区恢复啊,按分区恢复你不加这个也可以啊,后面这个不加就整张表恢复,我记得应该是20200601吧,没记错,来我们执行一下。这你在外面执行或者在里面执行out table都可以啊,我就直接在外面搞了。好了,现在我来查一下这张表,哎呀。想想啊,是不是这个写错了录日期啊,我确认一下。或者这样吧,我不加分区了,这个我要管你分区是啥,懒得找了,好。诶,哦,Part。我想想啊。
19:00
那我还是找一下吧。Data。Default,我们已经考过来了嘛,然后t order MT对吧,看一下detach。看一下一。这个里面。0601这。20200601。20200601应该没毛病啊。那我再执行一遍啊。20200601DETACHED partition。我在里面执行一下,看他有没有报错呗。
20:07
20200601啊回车select星。那不应该啊,难道这个没数据?啊。我突然想起一个事儿,这个报错我刚才又执行了一遍,然后看了一下日志,就wow log click house server,然后他报了一个措施,这样不能解锁文件。这个什么status文件,他说有另一个服务实例在同样的目录已经运行,那我们在查看这里发现是我们刚才起的一个啊I进程号是10537,那我们又查看了一下click house 10537是不是这个。
21:02
这个其实就是咱们一开始启动的那个server嘛,上面这个watchdog是另一个啊。跟咱们这没关系,呃,所以呢,咱们执行attach必须什么。必须那个,呃,克里卡耗子必须关闭,哎,这个还比较恶心啊,那我先把它停掉呗。10537停了呗,然后呢,我再执行那个attach命令,那这个分区讲道理是没问题的啊,应该是没问题,20200601啊。回车。嗯,我想想杠e gra click house。又启动了。
22:05
No such fire。Or director?好像还不是这个问题,那我想了一下可能是一个什么,咱们拷贝的时候还是咱们那个叫什么T的MT对吧,我觉得可能是这个格式的问题。我们重新那个一下吧,拷贝到去,讲道理应该是分区路径对吧,不应该说包含了这么多东西,咱们这个里边,嗯。这个拷贝还是有问题啊,有问题不应该是这个路径啊,不应该是这个路径,我先给他拷一下。我们再试一下啊。这里不应该是全都要。
23:03
哦,这个要那个。我回到这个跟径拷贝过来,那这个应该我看。应该是到这里。同学们。这是咱们的备份名字对吧,然后后面这个一,然后store路径这么一大坨没毛病,但是呢,后面这个咱们要什么呢。我要的只是什么分区的目录而已啊,在这个路径下面是一个分区目录啊,然后呢,把分区路径拷到tach下面来,我这边把文档稍作修改。这个应该就没毛病了,来我们试一下呢,我回车。好了,接下来我们进入到data,那个default,对吧?T order MT,下面好看一下tach。
24:10
这个时候咱们是不是仅仅把分区路径拷进来了,对吧,不应该考那么多路径,因为它可能识别不了啊,识别不了那接下来我们就把这个attach命令拷贝过来试试啊。这个应该就可以了啊。来执行。Perion。哦,这边有一个问题,同学们。咱们。一些拷过来怎么是root用户啊,咱们备份的时候就忘了给他什么,给他改回来了,我的天呐,忘了这一场change on,然后呢,Click house啊house。
25:07
杠二这然后是detach路径,下面好,我们再看看detach,呃,好,权限跟所属都改好了,那么接下来我们再执行一遍命令,我就不信了是吧。没报错了吧?我一定要把它查到啊,然后呢,Select新from这张表。有了吧。是不是有了?对吧,所以咱们得注意一个什么文件夹的所属权限对吧?那另外一个问题就是我们拷贝到tach目录下的数据必须是分区路径了,其他无关的路径咱们就不要了啊,其他无关路径就不要了,呃,总而言之,咱们是要的是这个下面啊。这个下面。这个下面的啊。
26:02
我这边写一下吧。呃,注意您。拷贝分区。目录。另外一个就是注意呃,目录所属的用户。对吧,要是click house。这个是咱们要注意的事,对吧?啊,没注意一下就踩坑了啊行,这是咱们手动的啊手动的。那查看数据咱们也不用看了,咱们已经查过了,对吧?TT好,那么这一次就是完整的了,同学们这个没毛病啊。
我来说两句