00:00
好,那么刚才的话呢,我们是给大家讲解一下,使用这个MYMP呀,来实现我们叫逻辑上的一个备份啊,咱们有这么多种备份的一些行为啊,备份一个库啊,多个库啊,部分表啊等等诶这样一些情况,那么我们备份的目的是什么呢?就是把我们当前啊,相应的一些表啊,或者一些库当中的一些数据啊,给他存储起来,然后呢,以备呢,我们在某一些场景下,比如说人们的一些操作失误啊,或者一些自然的原因影响啊,包括呢,我们数据库本身的一个损毁啊啊等等,导致呢,我们这个数据缺失了,我们呢,是不是此时这个备份的数据就开始顶上啊好,那我们这时候相当于就要数据的一个恢复行为,那恢复的话呢,这个我们也提一下啊,就是官方给我们提供的这样的一个指令,叫做MYS这样一个指令。啊,这个指令的话呢,大家肯定不陌生啊,我们最初接触MYSQL数据库用到的指令是不是就它呀?啊,因为我们要登录用户啊,就用它OK,那么我们这个指令啊,呃,其实呢,它就相当于是读取我们MySQL dump呢生成的这个SQL文件。然后这个搜狗L文件当中呢,我们保存了是不是你create和隐ER语句啊,Create呢,比如说你创建的数据库,创建的表,诶那我们就把这个语句呢,给它再运行起来,相当于你把库和表呢都创建好,然后呢,我们再通过这个,诶这个SQL文件里边的iner语句呢,把这个表中的数据呢,我们再给你一条条呢,诶添加进来就可以了,诶这就是我们说的一个逻辑啊,一个这个底层的一个原理,好那么接下来的话呢,我们给大家去演示一下几种不同的行为,比如说第一种我们在这个单库的备份当中,咱们去恢复这个单库。
01:27
好,你比如呢,我们在前面这个操作的时候呢,咱其中呢,是不是就把这个艾特硅谷DB3这样的一个数据库,咱们做了一个单独的一个备份是吧?然后下边的话呢,我就把这个数据库呢,诶咱们给他呢做一个恢复啊,这个恢复的话呢,是这样的。一方面的话呢,我们可以直接呢,在咱们自己的这个啊,比如说咱们150的这样里边有一个艾特硅谷DB3这样个数据库是吧?呃,我们的里边呢,比如有一些表咱们给他删掉了,或者表中有些数据呢,咱们给大家误删了,所以呢,我们直接呢就可以把这个啊文件里边的数据呢,直接就恢复过来啊,咱们当中也看过这个文件,如果说你这个库里边呢,有那个,呃,已经有了这个相关的一些表了,我们这里边呢,是不是先给你做一个删除,然后呢再重新的创建是吧?诶这个恢复呢是没有问题的,咱们呢,可以去做个演示。
02:11
啊,这个是OK的,另外一种场景的话,就是我们还可以呢,再创建一个新的数据库,比如我叫爱硅谷DB4,然后呢,你把这个文件中的这个数据呢,给它完全的就诶复制到我们这个里边也是可以的。啊,也是可以的啊,那这两个话咱们分别给大家去说一下吧,啊,分别去说一下啊,你比如说回到这来。回到这来啊,呃,那么首先的话呢,咱们先去啊,我去,呃,咱们目前已经是在这儿了,是吧,我确认一下啊艾硅谷DB3,然后呢,现在我们去,呃,受一下这个叫推步S吧。哎,说一下这个tables好,我们有这样的一些表是吧,我这呢就直接呢删一个表吧,比如说我们把这个咱们的这个student这个表呢,我们给他照一下table是吧。哎,Student这个表我们是不是就给大家删掉了,好没有问题啊,删掉以后的话呢,我们现在呢,哎,注意我们这个job行为呢,是一个DDL的操作,那就相当于我们这时候回滚呢,还不太靠谱是吧?好,那么回过来,诶,我们这时候看一下啊,咱们如何呢去做这样一个恢复的行为,好,那此时的话呢,我们使用的叫MYSQ这样一个指令,然后杠U还root抗P啊,这里边我写了两个啊,嗯,主要的这个区别就在于说我们这个是不是在我们这个SQL文件当中包含了关于数据库的一个创建。
03:22
啊,如果这个文件里边已经有数据库的创建了,我们就使用这种方式,要里边没有数据库的创建,我们就使用这种方式啊当初咱们看的时候呢,里边有没有啊,诶同学已经记不清楚了是吧,所以咱们可以在这呢,是不是做一个这个叫哎,我用VI吧,总感觉这个高亮呢,看着比较帅一些是吧,那艾特硅谷。呃,3.circle口是吧?来我们把它打开啊,这呢是我们头部啊,往下走是不是上来这块呢,就开始去创建表了,相当于我们这里边没有创建这个数据库的一个操作,行啊,就这样意思啊,那如果要没有的话呢,我们就这样写啊说哎杠U我们叫root是吧,杠P写个密码,然后呢,我写叫艾特硅谷DB3是吧?诶我们这个数据库啊,然后呢,咱们是从哪个文件里边拿过来的呀,注意这时候我们再接着往下写的时候呢,诶,我这块呢,已经在这个backup这个目录下了哈,如果你要不在这个目录下呢,是不是就要用这个绝对路径的方式去调是吧,比如word Li下的,MY下的啊,Backup下的。
04:18
啊,我们叫硅谷。哎,艾给股,然后DB3啊,第二是不是SQL文件啊。没问题是吧,好,这时候呢,我们回车一下啊ABC啊123好,走起。好,这块你看就执行完毕了是吧,那执行完毕以后呢,相当于我们就恢复完成了啊,那此时的话我们再去做叫show tables。好,这时候大家你会发现呢,我们这个我刚才是不是已经照了这个student了,你看现在我们这个student是不是又回来了。他说诶老师你这个是不是刚才删删没删除,嗯,你要这么讲的话呢,我确实当初在删完之后呢,没有去做一个售啊,但是很显然这个执行成功了嘛。对吧,我就不再去演示一遍啊,没有没有必要了,像这一种场景,另外一个场景的话呢,就是我们还可以这样啊,就刚才我说到的,咱们还可以呢,再去create一个。
05:03
啊,叫data啊,比如我这叫艾特硅谷DBDB4吧,哎,我这呢,是不是又创建了个数据库啊,那很显然,我们去use一下,叫艾特硅谷DB,呃,四。嗯,没写错吧,啊,多了个G是吧。好,然后呢,我们这时候呢,去收一下tables。呃,说一下这个tables,诶里边肯定是没有的,好,那么回过来我们可以呢,就把这个文件中的这个,呃,所有的数据库中的表啊,都备份到我们这个新的这样一个库当中啊,这也是OK的,那这个位置呢,我们就不要写三了,咱们就给它改写成四,好我们走起ABC啊,123。好可以了,好回过来啊,然后这时候的话呢,我们再去use一下啊,这个爱的硅谷DB4,哎,然后这时候呢,就使用了是吧,然后呢,我们再去呢,叫show tables,诶你看这时候我们数据的是不是就给它恢复到我们一个新的一个数据库下。啊,那你也可以呢,去做个查看啊,说select from一下,我们这个叫student。S6在来打开是吧,里边也有数据,OK,没问题啊好,那这呢,我们就是把这个事儿呢,就说清楚了,然后下边。
06:07
这呢叫全量备份的一个恢复啊,就是咱们这个啊,如果说呢,现在有昨天的啊,这个我们比如说一个实际场景当中哈,你有昨天的一个全量备份了,现在我们就可以恢复了啊,这个针对的是哪个行为呢?就是我们在这块呢,是不是有一个这个叫all data basis是吧?诶你可以呢,在一个新的背机上。啊,在新的一个背景上呢,去执行我们刚才MYS狗指令,你把所有的这个数据库呢,就全部都恢复一下,诶这个呢,就是你昨天的啊,你当时备份的这样的一个啊,这个这个所有的数据库的当前的一个,相当一个快照一样啊啊这这个嗯,我我这就不要演示了吧,诶大家你看我那个文件的时候也很大啊,我要是把它呢,再重新恢复一下,这个时间太多了,因为我们授课的时候呢,有好多百万级以上的这个数据库是吧,当然在实际生产环境当中,那这个毫无疑问呢会更大。啊,那你恢复起来呢,肯定就会很慢,所以说的话呢,你看你是哪些数据损毁了啊,就是你没有必要啊,比如我们就是某一个库下的某个表给损毁了,那你这块呢,把整个数据库给恢复一下,这是不是太小题大做了。
07:05
对吧,哎,就是比如说明明你裤子呢脏了。洗一下就可以啊,你非得说把这个裤子呢,给他重新就就不穿了,再再买一条啊,多少感觉稍微浪费点是吧,或者你这个笔记本上面稍微磕了一下啊,磕了一下其实也不影响啥情况,你非得要重换一个笔记本啊,有点这个小题大做啊,好,那么我们就不演示这个了吧。啊,这个呢,操作的话呢,大家直接看这块儿就行啊,直接呢就把它做一个全库的一个备份恢复啊,就花的时间太长了啊,咱们整下边这个吧,从这个全量备份当中,我们去恢复单独的一个库啊,你比如说我们这个备份的时候呢,也不像咱们刚才授课一样,整的这么花花绿绿的,整那么多种力度的这个备份是吧,我们就是对整个当前这个所有的数据库啊进行了一个备份,然后现在的话呢,我们其中有一个数据库呢,呃,这个相应的一些数据呢,做了一个赎回。啊,你比如说我们就这个爱的硅谷DB3啊,这个数据库的一些数据呢,有一些损毁了,那怎么办呢?我们就想恢复这一个数据库啊,就可以这样一个操作,那咱们就相当于再给他破坏一下是吧。
08:06
呃,这个破坏了,当然严重的话呢,你就直接把我们这个艾特硅谷DB3这个数据库呢,直接给他干掉啊,这也是可以的啊,那咱们就别。这么夸张了啊,其实这个完全没问题啊,嗯,那个你要是给它全干掉了再去恢复的话呢,就你就相当于是先把它创建好,然后呢,往里边导这个搜狗文件就行啊,就跟我们刚才的演示其实类似啊,这个大家能处理旁通好,下边的话呢,我们给大家看一下啊,说我们做一个破坏啊先呢去收一下啊,这个tableboss啊。哎,先走起,咱们呢,比如给他删两张表吧,诶不是删一个表吧,哎,Drop table,我这呢是叫account是吧,哎,我把这个表呢给删掉了,然后呢,我们把这个我就做几个不同力度的啊,Select星from here,我们这个叫student啊,把这个里边呢,我们比如说15以后的数据呢,都删掉啊。嗯,删掉,咱们叫delete。Delete from,我们这个叫a student。
09:02
然后where。啊,ID呢是大于大于吧,这个15啊好走起,然后我们再去做个select啊select好这时候是不是都已经删掉了,这个没有必要去执行commit吧啊,因为我们这时候呢,都是独立的一个一个的这个事物了啊,咱们也没有去设置过这个auto commit好那么这种情况下呢,我们数据呢,相当于做了一些损毁了,那我们现在就想把这个student这个表,哎,这个艾特硅谷这个数据库下的这诶这个表呢恢复,然后把这个表中的数据呢做一个恢复是吧,就这个意思,那我们现在使用是谁啊,也就是说我们是不是用它呀?诶注意诶,咱们现在要是把这个按照刚才这个单库当中恢复单库这样一个行为操作,是不是就能够回来啊,肯定没问题啊,但是在这个实际场景当中,有可能我们就没有单独的去维护这样一个搜库文件了。我们是不是要从这个爱这个or database SQ文件里边把我们这个库呢先找到啊。哎,这时候我们就可以使用下边这个指令。啊,使用这个指令来,我直接在CTRLC给它粘过来啊。
10:00
好,我们把它粘过来啊,剖析一下我们呢,从哎当前的我们,诶这个文件啊,这个文件叫all data basis是不是有个S啊好,我们想把谁给取出来啊,咱们想把这个叫诶current data叫硅谷DB3啊,因为我们这里边呢,就记录了所有的数据库的,注意这里边呢是包含create data这样的行为的,就创建数据库的行为也有啊呃,那咱们这块呢,我就艾特硅谷DB3,我是不是就把这个呢先怎么着啊。诶把这个提取出来是吧,在这个数据库下,诶从那个文件里边提取出来,然后呢,把它放在一个新的文件中。啊,这个文件呢,我们不妨呢,叫艾特硅谷DB3的一个下划线一吧,好,我们回车一下。好,这个呢,意思你看我这L一下,我们会生成一个新的文件,那你看发现是不是这个文件啊啊这个文件当呢,我们说呢,其实就包含了我们这个数据库下的,诶各种表的创建和诶表数据的这个情况啊,我们也跟他做一个V是吧,艾特硅谷啊下划线。
11:01
呃,1.sql文件打开看一下,嗯,这里边你会发现呢,是不是也包括了我们这个数据库的一个创建了。没问题是吧,好,既然这里边包括了这个数据库的创建了,那我们一会导的时候呢,其实就不用再去加这个数据库了啊,是这个意思,下边不就是表里边这些数据嘛,好,我们这块呢,就退出了啊。然后接下来的话呢,我们就开始呢,去做这个恢复了,其实就再接着操作,是不是就类似于这个了,只不过呢,我们这个文件里边已经包含了创建数据库的操作了,就不用再去写这个了,直接呢,是不是直行这个就OK了,好来回过来啊,那我们就MS-u root-P。呃,这是密码是吧,然后在后边呢,直接我们就这样恢复呗,嗯,然后呢,咱们用的是注意还是在我们这个backup下啊,否则你就写绝对路径了啊。哎,这个因为我们已经在这个下边了,我就直接写这个文件了,哎,复制一份。啊,这个粘过来好回车。ABC啊,123啊,走起。可以了是吧,好,那么这块呢,我们就相当于恢复完成了,恢复完成以后的话呢,我们这块呢,去查看一下啊,咱们来一个show啊tables。
12:02
哎,Tables好,走起。大家看诶不对吧,这个没没回来account是吧,那我们查看一下我们这个student呢,也没回来啊,这个注意呢,咱们当前这个数据库呢,你还存在着呢是吧?哎,所以说这块你不是像查看一个新的数据库一样啊,所以咱们得先退出一下当前你这样的一个session啊,然后呢,我们再去重新登录啊。哎,重新登录,这时候我们再去右C一下,叫IDB3啊,这我们再去收一下这个,哎,Table boss。哎,这么着,好,大家看看此时我们这个account是不是就回来了,好,那我们就不看看里边数据了,咱直接看这个student。诶走诶你看这是我们这个存回的数据呢,数据都回来了啊,没有问题啊行,那么这样的话呢,我们就给大家演示一下,我们如何呢,去从这个全量这个备份当中,我们去恢复这个部分的这个数据。啊,恢复部分的这个数据啊,然后的话呢,我们再往下看啊,从这个单库的这个备份中去恢复一个单独的表。
13:01
啊,单独个表就是这个力度的话呢,又会小一点哈,嗯,这个场景呢,诶比如说哈,还是咱们提到这个小题大做的一个事儿,我们现在这个数据库啊,比如说叫爱购DB3这个数据库下呢,存放这个表啊特别的多是吧,有的还有达到这个百万级别的哈,这个存储量,然后的话呢,我们刚才这个讲解呢,其实都是在恢复这个数据库。啊,都是恢复这个数据库是吧,相当于重新做了一个覆盖的操作,那么我们要是这个数据库呢,不想动了,只是其中某一个表中的数据呢,做了一个损毁,你就比如说我们刚才这个student就只只有里边几条数据呢,缺失了,那我们有必要呢,把所有的这个表呢都做一个恢复吗?啊,有的数据量很大,那你花的时间肯定就会比较长,对吧,那我们只想恢复这一个表中的数据啊,就是我们接下来呢,要给大家讲的这个事儿。好,只想恢复这一个表的数据,这里边儿呢,面对的现实呢,就是你这个student这个表,呃可能没有了啊,也可能这个表有啊,但是这个表中的数据呢,呃,缺失了是吧,就这样一个行为吧,好,那比如说咱们这块呢,我就呃大胆的咱们就做一个呃这个drop了啊,我把这个table。
14:06
哎,我把这个pay呢,Table呢,叫做student,是不是给他干掉了,那没有了是吧,这时候你再去做这个select tables,它就没有这个。就没有我们这个student这个表了啊,然后呢,没有这个表了,因为这个表结构的信息和我们数据的信息全部都没有了,是吧,然后下边我们看如何来去恢复啊。好,大家看呃,我们现在呢,恢复的话呢,就从我们这个当前的这个库当中就行,你从这个里边找也行,或者从我们这个里边找也行,是吧,那这块呢,我们比如说就就从这个全量里边去找啊,全量里边呢,我们通过刚才这样的一个指令,咱们是不是相当于呢,把这个呃艾特硅谷DB3这样个数据库的数据呢,是不是专门提取到这里了,然后呢,我们再从这里边呢,是不是专门再去提取我们这个表,Student表是不是就可以了。哎,对的啊好,那这块我们怎么提取呢,来使用这样的两个指令啊,哎,我们首先CTRLC一下。好,我们把它那粘过来。好,我们去分析啊。
15:00
前面的话呢,针对于我们这个表呢,咱们叫艾特硅谷DB3小划线一是不是这个,然后的话呢,再往后走,我们想把它里边的提取出来啊,你这个数据库文件里边的提取出来谁啊叫做student。哎,是不是关于这个表,哎,The create语句我们提取出来啊,生成这样的一个文件,这个文件里边呢,只有关于我们这个,诶student这个表的这个结构啊,Structure是吧,这个这个结构好我们回车一下。啊,这就搞定了啊,表结构就有了,一会儿呢,我们一块查看啊,然后再呢,执行这样的一条语句,把它呢粘过来。啊,还是改一下前边的信息。啊DB3下划线一这个表里边呢,我们把这个insert这个行为呢,提取出来啊,Ins塞到我们这个student里边,相当于我们要找的是不是表数据啊好在这啊,哎,Student没问题吧,好我们再回车。好,这时候我们在LL这时候我们就会看到有两个啊,一个呢叫student呢,我们叫一个呢叫student叫structure。没问题吧,太OK了啊行,这里边儿呢,就一个包含了我们的表结构,一个包含了我们这个表中的这个数据了。
16:05
行,那么接下来啊,接下来的话呢,我们要去先是不是创建这个表啊,哎,先创建这表啊,这时候我们得在这个MYSQL的这个指令下啊,去use一下S硅谷,然后呢,去通过SS的方式呢,去做这个执行,好那我们就回到这儿了。对吧,哎,回到这了啊呃,这块的话呢,我们先去就use一下啊爱的硅谷DB。嗯,DB3是吧,你得在这个数据库下呢,去恢复我们刚才说的这个表和数据啊,然后呢,这块我们使用这个指令呢,叫做S,哎,再往后写的话呢,你得写完整一个路径啊,y.Le下的,MS下的。啊,Backup下的,哎,我们呢,叫这个我就粘一下吧。嗯,在这呢哈。Student。啊,回过来啊,做一个粘贴好收起啊就可以了,是吧,可以以后的话呢,我们再去执行这个叫show tables,好大家看我们这个student这个表呢,是不是就回来了,哎,但是呢,此时呢,你去做一个select。
17:02
哎,From,哎,我们这个呃student,诶这里边呢,是不是就没有数据啊,OK啊,然后呢,我们再去需要呢,使用我们这个source指令呢,把我们另外的一个SQL文件呢执行一下。拍一下。哎,玩儿下的I Li下的IMY下的。Backup。哎,下的是吧,再粘一下。啊,这儿哈。嗯,这个呢,是找我们这个data啊,诶做一个复制。啊回过来,哎,这块呢,做一个粘贴好没问题是吧,好走起,那接下来的话呢,我们再去做这个select行为,好大家发现我们这个数据呢,是不是就恢复了。好,这个没问题啊,相当呢,我们这个力度呢,就越来越小啊,那一般的话呢,大家如果你发现呢,是表中的一个数据做损毁了,那建议呢,你是不是就执行这个力度比较小的一个操作,就没有必要呢,把我们整个这个库呢做一个恢复了啊,这是我们说的这个意思啊,行,那么这样的话呢,我们一个呢叫逻辑上的一个备份,一个呢是逻辑上的一个恢复啊这样的搭配的使用,我们就给大家说清楚了啊,下来呢,大家也可以自己呢操作一下。
我来说两句