00:00
好,那么接下来的话呢,咱们讲一下呢,叫二进制的日志啊,这个呢,相较于我们前面说的这两种日志的话呢,它的这个信息量呢,会更多一些,呃也呢更重要一些,在我们日常的开发呢和运维过程当中啊,经常呢会遇到包括呢,咱们下一章呢,讲到这个主从复制的时候呢,诶主体上呢,也是需要这样的一个日志文件的,好,那么这个啊blog日志这个B呢,就是binary的意思,所以呢,我们称为呢叫二进制的日志,也可以称作呢,叫做变更日志啊为什么叫变更日志呢?啊,因为呢,它里边记录的呀,就是咱们啊,针对这个数据库里边呢,包含的DDL和这个DM呢,这样的一些事件。哎,只有更新的操作啊,只有更新的这个操作,言IG呢,就没有查询。啊,那个同学会说,诶老师,为什么我们这个blog日志里边呢,就没有查询操作呢,只有更新呢,啊我呢可以从两个角度上可以给你解释哈,第一个角度就是如果我们这个啊blog里边呢,包括了这种查询啊,那不就相当于我们用户呢,做的这些SQL操作呢,全都记录了嘛,他如果全都记录了,你想一想,那跟我们这个通用查询日志呢,是不是区别就不大了?
01:04
啊,虽然说呢,它呢是文本形式的,这个是二进制的形式的,但是整体的作用是不是就类似了。对吧,哎,所以说呢,我们就没有必要了啊,就整重复了,然后再一个角度呢,去解释的话呢,就相当于是你得清楚二进制日制它的一个主要作用是什么。在主要作用这里边就写到了,它呢是用于数据恢复和用于这个数据复制的啊,其实这块呢,本质上来讲呢,咱们都看成是数据的一种,呃,算是一种生成吧,是吧?啊那么我们首先呢,看这个叫数据的一个恢复啊,那就比如说呢,我们现在有一个表,表中呢,比如说有这样的几条记录啊,然后现在的这个,呃,时间线呢,是在这儿,接下来的话呢,你针对这个表中的数据呢,我们进行增删诶改查是吧,那么你这个增删改查的这个行为啊,我们就都记录到了这个假设啊,哎,包括查询我们都记录到这里边儿了,那现在的话呢,我们说有一些特殊的原因导致我们这些行为呢。呃,这个对这个表做这个修改呢,缺失了没有了,那这时候我们需要呢,做这个数据的恢复,那么恢复的话呢,就从这里边儿,诶给它调出来啊,重新再执行一遍,那么这时候你想针对我们这个表中这个数据做恢复的话呢,跟查询有关系吗?
02:10
哎,因为查询呢,是不是对我们这个表中的数据不会产生任何的影响,那你恢复的时候,你执行一遍一遍一遍有啥意义呢?所以我们只考虑是不是增删改行为啊,哎,所以说呢,我们只把这种啊,当然了你也有这种DDL的行为啊,所以呢,我们只把呢这种更新的这种啊语句咱们就放在这个blog当中了啊,这道就说清楚了,那我们下边这个数据复制呢,也是一样啊,咱们讲到下一章的这个主从复制的时候呢,就是我们这个主服务器呢,把这个相应的增删改的行为呢,就记录在这个blog里边,然后呢,我们这个从服务器呢,诶一开始的时候呢,他们的表都是一样的,对吧?然后呢,针对于我们这个blog啊,你读进来啊,然后呢,我们还听提到那个中继日志是吧,然后他在读中继日志,其实呢,就还是这些增山改的行为,诶把你自己这个表呢,做一些调整。那就可以了,查询呢,没有必要是吧,它不会对表产生影响嘛,所以就不记录了。
03:02
诶这呢,应该说的比较清楚了是吧,好然后呢,再者我们要强调一点呢,就是他呢记录都是二进制的数据,所以呢,我们想直接呢,通过V或者VI的方式呢,去查看是看不了的,它不是这个文本的这种。呃,这个文件是吧,哎,那我们就得需要使用特殊的工具了啊,咱们下面也会讲啊,比如MY呢,叫blo或者叫收啊blos啊这样的方式呢,我们去查看一下啊,去查看一下这个伪circle的代码啊。好,那么下边又提到了,说它是以这种事件的形式来做记录的啊,你比如说我们写了一个呃,添加数据啊,这添加数据呢,我们在这个里边呢,实际上呢,就相当于对应的是啊,我们理解成是一个添加的事件了,诶我们所有的这些增删改或者DDL这个操作呢,都是以一个一个的事件的方式来呈现的。好,这个注意一下啊,行,那么下边的话呢,就是呃,针对我们说的这个主要场景啊,这呢又画了一个图啊,做了一个说明,诶,那么我们整个的MYSQL数据库如果呢,需要实现呢,叫数据备份啊,主备主主主从啊等等这样的一些场景都离不了blog。
04:06
所以从这个角度来看的话呢,它还是非常重要的是吧,诶我们这儿呢,把数据呢都呃这个增产改的行为都写到这儿了,我们现在呢,是做了一个数据的备份啊,或者呢,你这是主,这是备机,这个是主机,这个也是个主机,这是主机,这是从机等等,只要呢,他们涉及到数据同步啊,这时候我们都需要使用叫blo啊来去做。好,这个就说清楚了,然后呢,下面的话呢,我们来看一看这个相应的一些这个参数的一些行为啊,那跟前面的日志都一样了,CTRLC1下回过来,我们在这呢,粘过来走起。好,那么我们去查看一下呢,哎,注意咱们叫b logg,但是这块呢,参数叫log b啊,前面一个百分号,后边有百分号跟它相关的,一共有这么几个变量,看一下,嗯,这个呢,表示的就是我们这个啊叫什么b logg这种日志呢,它是一种开启的状态啊开启的状态,然后下边有个叫circle log b啊它指呢就是我们支持咱们把这些呃变更行为的SQL语句呢,呃,记录到咱们这个呃二进制文件当中啊,这是个啊。
05:05
那这个呢,我们后期呢,可以把它改成off off就不往里记录了啊明白是吧?好,那么然后的话呢,这个呢,就login base name,诶这呢,其实就咱们默认的情况下呢,我们这个呃,二进制的日志文件,它存放的一个路径。哎,这个路径呢,大家看到是不是在啊ver lib my下的叫blog呀,好,还有一个呢,叫index啊,注意咱们上边这个呢,其实你看到它不是一个文件,因为文件正常都有后缀啊,诶它其实呢,会生成很多这个blog文件啊,后边呢就会有00000。啊,比如说这个一啊,一会儿呢,就23456啊,依次往后递增,所以它是一系列的文件啊,那么这么多文件呢,我们相当于给它建立了一个索引啊,就是这样的一个索引的文件,OK。好,那么下边这个参数啊,这个参数大家眼熟吗。啊,不知道有同学有没有印象哈,哎,咱们在什么时候涉及到过呢?哎,是不是在讲哎存储函数的时候啊,包括呢,我们讲这个下篇高级篇的时候呢,咱们不也创建过一些存储函数吗?只要呢,我们创建存储函数的时候,默认的是不是就给我们报错说呢,你这个值呢,是个off。
06:10
是吧,是个off,哎,相当于呢,就不让我们去做这个创建啊,我们必必须把它改成是一个on啊才可以去创建,那为什么说不允许我们不信任我们这个函数呢?诶大家你想象一下啊,如果呢,我们这个SQ里边啊,你的增删改的行为里边,比如说啊,咱们用到了一个函数呢,叫做no,这是这个主机用的啊,主副务器用的啊,那我们就把这个S呢,是不是就记录到我们这个叫b log的文件里了,是吧?然后你想想啊,这个语句呢,如果发给这个从机的话。啊,因为发过来呢,同步多少需要花一定的时间,有一定的延迟,那么从级上呢,也去执行这个circle,那我问啊,从级上的这个no跟我们这个no是一个函数,但是它真正对应的时间是不是有偏差的呀。啊,因为你读过来不也需要一定的时间嘛,啊,那如果你要是一个隐私的这个行为,那岂不是意味着我们主机上的这个数据跟从机上这个数据实际上的这个时间是不一样的,对吧。
07:02
所以说呢,我们这个在主从复制的时候呢,用到这个blog,它默认情况下就不信任你这些函数啊,因为它有可能会导致我们主从的这个数据上呢,就不一致了啊,有这种偏差。啊,这就是这样一个原因啊,大家知道好,下边这个呢,这就诶不用关注了啊行,那上边的话呢,咱们是不是看到说默认的话呢,它是放在我们这个啊数据目录下啊,一系列的这样的文件,那咱们就可以稍微再搂一眼看看啊,咱们啊其实这块也打开诶啊不能看这个路径了啊,咱们CD一下啊。这个Li是吧,然后这个MY好回来,然后嗷一下好,那大家呢,你会发现,哎哟,我这还挺多的哈。是不是说呢,就在我们这个路径下呢,你看有一系列的啊叫blog啊,这个0000啊,这是五个零啊,一个一啊,这么多啊,还是挺多的啊,诶为什么会生成这么多文件呢?大家有的同学可能会发现说这个文件你看这个呢,这么大。然后下个呢就小很多,那在下个的更小,呃,以至于都这么小的时候呢,我们又创一个新的,这是什么逻辑呢?诶我们提前说一下,就是每当我们这个MYSQ的服务器重启一次的时候。
08:06
啊,重启一次的时候呢,都会帮我们新创建一个叫诶blog这样的一个文件,所以你会发现呢,我有的这个blog文件呢,可能会比较小一些啊,注意但是有的人又很大啊,这呢就涉及到他这个最大有多大呀等等这样的一些信息,好这个呢不要着急,咱们接着往下说啊。那这个大家看清楚以后呢,下一步做什么呢,我们就可以呢,是不是考虑设置一下这个相关的一些参数啊。好,那么设置参数的话呢,同样道理,有这种永久的方式,还有这种临时的方式啊,永久的方式咱们一直说好像从来也没怎么写过哈,那咱们下边呢,就采用这种永久的方式呢,咱们去改一下,比如我们就改针对这几个信息啊,CTRLC一下啊,回过来啊,那改的话呢,咱们就回到这儿来,这个改的话呢,注意改的是配置文件啊。嗯,配置文件的话呢,还记得我们这个路径吧,啊是不是ETC啊,啊叫MY点哎,在Linux下呢叫CF啊,Windows下呢叫ini是吧?好回车一下,回车完以后的话呢,我们回到这个MYD啊这样的一个标签下啊,我们点一下这个I,然后使它属于一个可编辑的状态,然后呢,我们把它粘。
09:08
啊,粘过来了哈,啊粘过来以后的话呢,我们把这个呢得打开啊。哎,把这个井号呢,我们去掉。诶,去掉了是吧?好,那这里边呢,稍微的解释一下啊,这个呢叫呃,Log bin啊,我这写的叫at特硅谷啊,短横线bin什么意思啊,就是它呢,来替换一下啊,刚才我们看到的这个结构,那我不想让他叫log这个blog一点特色也没有是吧,我们来点个性的,诶我就这样写了,那他给我生成的文件呢,就是艾特硅谷杠B啊,000001啊,00002啊,就这个道理。行,然后下边这个呢,你看叫blog啊,它的一个second什么意思啊,就是我们这个,呃,二进制的日志文件啊,它能够保存的一个时间啊,单位的是描。啊,这个呢是600秒,600秒是多少?600秒十分钟吧,啊这个你可以再整个零。是吧,再整个零啊等等啊,然后具体这块呢,想保存多长时间的话呢,这块也有一个,哎,默认的一个情况啊,你写这个呢,就30天啊,这个四个小时啊,这样这样一个情况。
10:08
好,这个了解一下就行啊,这个呢,就是保存的一个时间,然后下边这个呢。啊,下边这个,那这个保存时间呢,就相当于是你要确实没用的话呢,我们到这个时间呢,相当于它就会做一个清除了,是吧,然后下边呢,叫mass inlo那个size啊一看呢,是不是就我们这个日志文件的一个上限大小,对吧?那如果说之前我们没有设置过的话呢,它的这个默认大小呢,其实是一个GB。哎,我这也有写啊,默认的是一个GB,最大的呢也是一个GB。但是这里边有个小细节,就是并不是说呢,我们严格控制它就得是不能超过EGB的啊EGB的啊,为什么呢?呃,因为呢,我们相当于在这里边呢,是不是记录的是事件当中的增删改行为是吧,你说呢,我们这个事件呢,假设啊,这个事事物说错了啊,事物的增删改行为,那我们这个事物呢,假设还是个常事物,那我执行到这儿的时候呢,诶他呢,恰好达到这个一个GB了,那我问一下你说我们这个事务还没结束的,剩下几个操作。
11:03
咱们是换一个blog文件啊,换个换一个blog文件的话呢,这个感觉有点差点意思是吧,那这个时候的话呢,我们这个还是就把它维护在同一个这个blog文件里了,那这时候呢,它就有可能会超过一个G啊,所以呢,不是那么严格的啊,这个大家注意一下。好回过来,那我这呢是不是,呃,这个100兆也好,或者你想给它改大一点也行啊,默认的不是1024兆嘛,咱们改成了比如说300兆吧,啊,那如果超过这个大小的话呢,它就会自动的再去生成一个,诶这个加上一个一啊,一个新的一个文件啊嗯,完事了是吧,然后点上ESC,然后冒号WQ啊相当于保存并退出。那接下来的话呢,我是不是就要重启一下啊,哎,重启一下咱们这个服务器啊好,我们呢叫system啊,Control restart。啊,这个MYD是吧,哎,然后我们回车一下。好,那么我们这块呢,就做一个重启,那重启完以后啊,重启完以后,那我在这块呢,再去做这个查看的话呢,你会发现这个路径呢,它就变了,诶咱们走走起一下。
12:04
好,大家看此时的话呢,我们主要变的是不是就这两个位置了啊,这呢就改成叫爱硅谷杠B A股杠B啊,就是我们刚才呢设置的这样一个场景。啊,这个大家注意一下啊,呃,这是我们说的这个事儿啊,说的这个事儿,那这呢是一个持久的一个修改方式,如果要是临时去改的话呢,我们主要改的比如说想改这个呃路径啊,或者想改我们这个是不是知识写入啊,你比如说针对这个吧,啊你去怎么改呢?我们就这样去set了,Set一下呢,叫circle log啊,叫B啊,然后呢,给它改成比如叫呃零啊现在关闭了是吧,那这块有个小细节要注意一下啊,就我们这个参数的话呢,你不要用这个global。啊,你看我用会这个global的,一回车他又报错了,说呢,它不是一个global的,你得用个session啊,就是它只是呢叫绘画级别的啊,你改成这个叫session。Session,诶这样呢就改了,然后你再做这样的一个查看,哎,是不是就改成off了,哎就不支持我们去这个,呃DDLDL啊,这个增删改的一个写入了啊,这个咱们得支持啊,咱先改成一啊还让他去写入再查看一下,好没有问题。
13:09
好,这个呢,都OK吧,啊OK啊行,那这样的话呢,我们就说清楚了,就该如何呢?去诶这个去修改相应的这个配置参数啊,这是一个,然后的话呢,我们改完以后呢,这时候来一个LL查看一下,咱们往上去翻,好这时候大家你会发现呢,是不是有我们爱的硅谷B啊,这个0001就出现了,你看这时候它的大小呢,就是156。啊,那你会发现呢,原来这个156呢,相当于就是里边没怎么写东西是吧?诶就是156的场景,呃,那刚才呢,也提到一下,每当我们重启一下这个服务器的时候呢,它就会帮我们再去生成一个来,我们再重启一次。哎,我重启一次啊。稍微等一下。好,重启完以后啊呢,我们再去做一个L的一个行为啊,大家再看此时的话呢,你看是不是就帮我们多生成了一个这个文件了,这个号呢,就依次往后递增就行,哎,就在这呢。
14:00
好,那如果现在的话呢,我们去做这个呃,增删改或者是DDL的行为,是不是就把这个数据呢,就记录在我们这个002这样的一个文件里了啊,没有问题啊好,这就这个事儿,呃,那么接着的话呢,我们还要给大家去强调一个问题啊,我在这块呢也有写。啊,在这儿啊,说数据库文件最好呢,不要与我们的日志文件啊,就我们二进制的日志文件放在一个磁盘上。啊,咱们现在呢,相当于是不是放到一个磁盘上了啊这呢,咱们不是说了叫呃点MY呃点le.MySQL这个下边呢,不都是咱们相关的一些数据库的文件嘛,说跟这个呢,最好不要放一块。为啥呀?嗯,这个一个公司比较大了是吧,这个全国或者全球连锁的一个公司,然后呢,快过年了,开年会啊,那么所有的这些高管核心人物,他们会做一架飞机,那个去去开会吗。肯定不会风险太高是吧,一定要分散风险啊,要是都坐飞机呢,那就是飞机一定要不一样啊,或者有的坐船,有的坐火车啊,不能呢,都在一架飞机上,那风险太高了。
15:04
那要是真出问题了,是不是一锅端了就?那我们这是不是一样的道理啊,你这个数据库文件呢,如果要损坏了,你还在一个路径下,那你这块想恢复是不是恢复也恢复不了,因为你俩都在一个省上了,是吧?哎,这就是这个道理啊。行,咱这呢,因为是教学呢,所以我就直接就放在一个路径下了啊,你要想放在其他的路径下的话呢,这里边儿啊,你也可以呢,去创建新的这个文件目录啊,这个创建的话呢,注意是需要用MYSQL这个用户呢进行创建的啊指定的我都放在这了,就不演示了啊好,然后的话呢,你再去我们比如说这个持久化这个层面呢,去指定啊建议呢,这时候呢,设置咱们就设置成是一个持久化的。啊,别每次呢,临时设置这个倒没必要了是吧?好这个呢,我们就说清楚了这种哎设置的方式了,设置完以后的话呢,我们下边考虑呢,是不是就可以去做一些查看了啊想看看这个日志文件的这个信息是吧?呃,首先呢,我们先执行一下这个操作吧,诶能够发现呢,当前我们会有两个。是不是会有两个这个文件啊啊,这是没问题的,呃,然后的话呢,我们想查看的话呢,咱得往里边写点东西呗,然后呢,试着呢去查看看里边呢能不能看得懂是吧,他不是二进制的吗。
16:10
好,那咱们就写一下吧,比如我们去use一下啊,这个叫at硅谷。DB3是吧,然后呢,我们注意这时候呢,你不能去写这个查询啊,查询的话呢,是不会记录进去的。不会进去记录进去,那我们查一下吧,方便我们去做一些调整是吧,起select星from啊,比如我们叫这个still。啊,我们看这个表,然后呢,我们下边呢,做一些修改啊,比如说呢,我们做一个insert吧,Into。A student ID name。啊class,然后呢,哎,Value是吧,我来一个呢叫18啊逗号这个呢叫Jerry。啊,逗号这个呢,叫四班。哎,这么着好这呢,我就inser要记住,好,那我再做一个叫update啊update student。
17:05
Set一下这个咱们改成内部吧,哎,等于,嗯,这个我们改谁呀,改这个17吧,哎,改成这个叫TOM1。Where ID呢,等于17,哎,没问题是吧,我没写错吧,好,可以了,行,那这呢,我们相当于是不是写了两条这个DMMR这样的一个语句。那我这个写完之后啊,我说他就会把这个信息呢,就记录到我们这个,哎,这个这个二进制的这个文件里了啊,比如我们现在呢,再去执行一下这个。啊,瘦。好,大家你会发现呢,现在我们这个文件呢,它的大小呢就变了啊,其实呢,就是因为记录了我们这样的这个信息了啊,记录一个信息了啊行,那么我们回到这块呢,是呢就想去查看一下,那由于它是一个二进制的文件,这个你查看呢,肯定是不方便的啊怎么办呢,这是我们呃使用一个命令啊,其实这块呢,有两个命令啊,这是其中一个叫做my circle blog。来使用这样一个命令,然后后边呢,双引号里边呢,就是整个我们这个文件的一个完整的路径。
18:05
OK的是吧,好,那我们就使用一下MySQLo啊TRC啊回过来。啊,那我们把它呢粘过来啊,这个双引号单引号都行啊,啊,这个斜线一定别丢了啊,这个我还清晰的记得之前有一次斜线丢了,然后怎么排就整不出来了,是吧,斜线不要丢哈,我们这个lib下的MY。哎,My circle下的这个有点长哈,咱们就直接呢复制一下,注意复制我们最新的啊,然后哎,复制一下。就是你别看我这复制的是002,你那要是最新的是0003的话,你得用003啊,这个小心一点。可以了吧,好,我们这块呢,回撤一下。回收完以后的话呢,诶这个大家可能会觉得有点乱啊,咱们那个去clear一下啊,那我再重新再去执行一下。呃,有整差聊啊,My circle的,哎,是不是应该他呀。没问题啊好走起哎,你会发现呢,这里边儿这个信息量呢,你看还是挺多的啊。
19:01
啊,那我们现在比较关心的是什么呀?哎,咱们关心的并不是前面他这样基本的这些信息的一个设置。啊,咱关心的不是这个啊,咱们关心呢,就是你这个circle啊,因为呢,你说这个二进制文件里边记录了你这个呃,变更的这个circleq语句了,那到底在哪呢?诶当然你是找不到的啊,因为呢,他不是说了是这个呃二进制的这种形式啊,其实呢,这些呢就算式,但是呢,你现在看不出来。是吧,看不出来,呃,那怎么办呢?诶我们就得想个办法啊,这里边呢,就提到了这个my blo呢,它有一个参数呢,叫做岗V。啊杠V啊,加一个杠V,那我们就可以查看了,然后查看到的话呢,我们说每一个呃,增删改也好,DDL也好,都是以一个事件的方式呢,去呈现出来的啊,有这样的一些这个具体的一些信息展示啊来我们回过来啊,这个咱们重新再再去这个做一个clear。好,然后呢,把刚才这个指令呢,我们再重新再调出来,然后呢,在这个位置呢,我们加一个杠V,好再做一个回车。
20:02
好大家看啊,这个时候的话呢,我们就看到了咱们比较熟悉的这个身影了,我那会儿都做什么事了呢,是不是一个呢,叫insert是吧,往我们这个表里边呢,添加了一条记录啊这个18呢,其实过来看我是不是添加那个ID呢,是18呀啊这个是je瑞,这个是四班,好你回过来,诶这个呢,你看对应的相当于是我们第一个字段啊,第二个字段,第三个字段,哎,是不是这样个行为来做的这种设置。可以的是吧,好呃,然后的话呢,我们后边呢,又做了一个update,那我把这个ID是时期的呢,呃,从Tom呢改成叫TOM1了,哎,你看这块呢,也能看到这个我们可以理解成了叫做尾啊色口是吧,哎叫这个哎尾色口。哎,这样个情况啊,行,那上面呢,就还是他原来的这样的一个啊,Blog这个记录的这个信息啊,我们是看不懂的啊,如果这个信息你也不想让他呈现出来,你可以呢,再去加上一个这样的指令啊,在我们这个杠V的后边加上这样个指令啊就可以了啊,这个我就不演示了啊行,那么这样的话呢,咱们说的是这个麦S叫b log的工具呢,我们去查看一下二进制的文件啊,能够简单的能看到我们这个基本的这个呃,更改的这个语句啊。
21:09
然后呢,这里边就提到了,我们还可以呢去查看,因为咱们这个blog呢,目前比较短啊,那如果说呢,你记录的信息很多了,你想想它能够记一个G啊啊二进制的数据记一个G,那还是很恐怖的啊,那我们要查看的话呢,那你可以呢去查看,比如说我就想查看最后的100行数据是多少。哎,我就想查看呢,某一段的这个数据是多少啊,这个你可以考虑呢,比如按对应的这个时间来指定啊,或者按对应的这个position来指定啊,啊但是这块呢,大家可能会发现说,诶我们这个position是什么啊,什么叫position啊,就是整个你这个文件里边呢,我们记录了它,呃,具体的一个一个的事件,然后呢,它有一个起始位置啊,但是现在呢,在哪呢,这个就不太方便看了。不是说我们这个文件里没有,是因为我们这个MY库的blog呢,它呈现上呢就不太理想啊,那怎么办呢,我们使用另外的一个工具叫做show啊,Binlog events啊,咱们每一个呢,变更的语句呢,都是一个事件了,所以就是啊S啊。
22:04
然后后边这块呢,参数啊,参数的话呢,你看你自己的情况啊,可以去编写的,比如说呢,我们这呢叫in这个呢,就是你具体要查看的这个blog这个文件。啊,这个文件名啊,这个能不能不写呢?加中国号了就可以啊,你要不写查那查的谁呀?啊,就查的我们说的最早的一个啊,Blog的一个日志。啊,这是它,嗯,From呢,就是你查看你这个文件,如果你写了啊这个文件呢,你想从哪个position的位置呢去查。是吧,从哪个position的位置上去查好,然后呢,你接着呢就limit啊limit这就我们就那个分页了啊,两个参数啊,你要是这个不写呢,就默认就是零呗,是吧,哎,这两个情况啊。好,那我们呢,先写个最简单的,哎,正好咱们这也,咱们这个好像就叫它是吧,好我就直接呢把它的CTRLC拿过来啊,这个你注意是在咱们这个MYSQL的这个指令下去跑的啊好,我们这块呢粘过来啊,走起。好,能看到了是吧?好,这里边呢,能看到以后呢,我们说诶这里边信息量看来挺大哈,刚才呢,记不记得我说过,咱们每一个变更的语句呢,都是一个事件,这一个事件的话呢,是不是会记录这样的几个信息啊好,那么我们回过来啊,你看这里边儿呢,我们就可以呢去匹配了啊从这块儿开始到这儿。
23:14
嗯,到这吧,哎,这呢就是一组这个A,我们还是少画一个哈。啊,比如从这块儿开始吧,哎,其实这块呢是呃,针对这个session的这个设置啊,诶它呢就到这儿,然后这块呢,从这到这儿,哎就算是一个完整的部分吧,哎就记录了,其实这呢,相当于就是两个事件,就是我们那会儿呢,是不是做了一个隐色的一个事件,又做了一个update一个事件,是吧,哎就这样个意思啊,那这里边呢,就对应的我们这个position呢,就能够看得到了。哎,这不咱们就能看得到吗?行,那我们比如说加上一个这种position看一下啊,针对这个文件,然后呢,先是一个什么呀,是不是叫from啊。嗯,比如说我们写上叫468吧,哎,468好,那如果说我们这样去执行,那就是一直从468呢,就到774了。啊,咱们这个文件因为比较小啊,你要真实当中的这个文件呢,生产环境中可能就非常长,那我们呢,还可以在后边呢加一个limit limit我写个零逗号二,现在我就只展示两条记录。
24:09
啊,那就468开始两条记录是不是就是547是吧?好,那我们再去改,我这呢写成一个一,这呢写成一个三吧,哎,从一开始三个,其实呢,我们呈现出来就是哎这个468啊,你比如后边呢,写了个一呢,就过掉这个468的下一个啊就547开始是不是来三条记录啊。哎,这样的形式。哎,这样的形式啊,好啊,这个呢,就是我们另外的一种查看,诶,咱们这个叫blog日志文件的一种方式啊,那除了我刚才写的这几个之外呢,这里边也写了其他的一些这个例子。啊,其他这样一些例子啊,这个大家理解一下就可以了,好那么关于我们如何呢,去查看这个blog日志呢,咱们就说了一下啊,因为呢,它不是文本的,我们不能直接呢,通过咱们这个叫VI的方式呢去查看了是吧?诶两个啊收blogs啊,还有我们的叫my blog啊呃,那么接着的话呢,我们这块先简单提一下啊,就是这个blog里边他记得这个东西啊,诶他其实呢,有不同的这个格式。
25:07
啊的方式啊,这个默认的这种方式呢,你看我们这呢,写的叫肉是吧。哎,我这个粘过来查看一下,诶默认的这种格式呢,我们叫做这个肉啊,你也可以称它叫行格式。那么除了这种格式之外呢,还有其他的这种格式,一个呢叫做一个呢叫做mixed。啊,简单说一下啊,因为咱们下一章呢会讲啊这个诶statement呢,它是说呢,我们这个blog里边呢,它就把每一个啊,你这个有变更的这个circle呢去记录下来。啊,它只记录这个变更的circle,那这个肉呢,你看这个肉叫行是吧,诶它记录的就是呃,你这个呃一个circle,如果呢,比如说是一个update吧,哎,这个update呢,咱们举个例子,你呢,假设呢,哎,嗯修改了十条记录咱们这个STEM里边就记住你这条语句,而我们这个任的话呢,它会记录你这十条修改的这个语句改成什么了。哎,所以它是有区别的啊,那基于这样个点的话呢,它的优缺点呢,也是很明晰的,我就先不讲了啊,先不讲了,咱们到下一章的时候呢再说啊,那么因为各自有优缺点呢,所以还有一种方式呢,叫做mixed啊,就是它俩的一个结合的方式。
26:15
好,那么关于我们这个二进制的日志,哎,咱们的基本的情况呢,咱们先说到这儿啊,基本情况先说到这儿。好,那么针对于这个二进制日志啊,大家有了一个基本的了解了啊,那么下面的话呢,我们看一个在实际生产环境当中叭较实用的一个功能,就是使用我们的blog日志啊,实现数据的一个恢复,那我们在讲到这个二进制日志的时候呢,是不是也提到了它可以实现是不是数据的一个恢复啊,哎,那下边呢,我们就来看看如何呢?哎,去实现,哎,我们呢给大家呢去演示一下啊,演示一下,那么这里边呢,我们实现数据恢复呢,主要用的这样一个命令呢,还是MY的blog。啊,还是这样的一个blog,这样的一个操作啊,那当然呢,我们要是用它这个操作之前呢,咱们得基于一个整体的场景的一个演示了,对吧?哎,那这块呢,我们就直接呢来实操了啊好大家看。
27:04
呃,那么这里边儿呢,咱们操作的话呢,就针对于比如说叫student的这样一个表吧,啊针对student这样一个表,当然了这个操作这个之前的一个基本情况呢,就是说我们现在呢,已经能够确定下来啊,咱们呢就要收先看一下啊。Are variables。哎,然后呢,Like啊,这个呢,我们是两个百分号啊,这个呢金。A log。Log bin。诶,回撤一下是吧,哎,首先呢,我们得知道呢,咱们这个二进制的日志文件呢,它是存储在什么样的这个格式当中的,然后也现在呢,是支持我们去写入这个circleq的是吧?OK,行,那这些呢,我们都清楚之后呢,下边呢,我们就来进行这样的操作,呃,首先呢,我们去use一下叫艾特硅谷DB。哎,咱们先这么着看一下啊呃,我呢先呃用这样个指令啊收啊binary啊,这个叫a lock是吧?来走起一下,咱们现在的话呢,是不是就两个这样的这个二进制的日志文件,那我现在呢,要去写这个增删改的操作的话呢,是不是就相当于是把这个呃,Circle呢,就写到这样一个文件里了,是吧?这个大家知道啊,诶那我这里边呢,Use一下爱在硅谷。
28:13
啊,DB3好。然后呢,下边我们首先呢,先做一个select啊行,From一下我们这个student。表好这呢是我们这个目前表中的这样一个场景,没有问题是吧,然后接下来的话呢,我们去做一下比如叫insert的操作吧,哎,增删改咱们都去演示一下insert into啊,我们这个student ID。啊,然后呢,Class好,然后呢values。Value这块呢,ID我们写一个,比如说。嗯,20吧,啊20,然后呢,来一个这块我就简单来处理了啊,然后这呢,我们叫这个number。嗯,NUMBER1是吧,那就这样来吧,好这呢我们就把它运行一下,然后呢,我们再来一条数据,这个呢,我就写成叫21了啊,走起,然后再来一条数据,这个我们叫22。
29:04
哎,都琦好没有问题是吧?好,那这样的话呢,我们就添加了三条记录,然后接下来的话呢,我们去select形from一下,哎,咱们这个叫student啊查看哎,那这样的话呢,我们是不是就多了这样的三条记录。那么接下来的话呢,这叫增,然后呢,我们去删一点,记住啊,咱们叫delete from。嗯,这个student。Student,然后呢where呢ID,比如我们把这个20呢,就给它删了吧,哎,删掉了,删掉以后呢,我们再做一个查询啊,这里就没有20了,增删改啊,我们做一个update啊update,然后呢side一下,比如我们把这个name呢改成叫bbb啊,然后呢where呢。啊ID呢等于比如21是吧,把ID是21的这条数据的内呢,咱们改成bbb啊走起,然后呢,我们再去做一个select,哎这呢就是修改完成了啊好,那么接下来的话呢,那就这呢是我们都正常做的这样的一些事物的一些行为啊然后接下来的话呢,我们一些误操作啊,那导致呢,我们这里边呢,数据呢就给缺少了啊缺少了你比如说呢,呃,一不小心执行了一个叫做delete from叫做这个a student。
30:15
Delete from啊然后where呢,这个ID呢大于20啊,把ID呢大于20的这个数据呢,我们一不小心呢就全给删掉了啊,那此时的话呢,我们去做了一个select星,诶发现呢,我们刚才的那个添加的三条记录啊,包括呢,中间有这个删除和修改的行为呢,记录就全没有了。是吧?啊,那这个都没有了啊,大家注意一下,我们前边的这个delete也好,Update也好,咱们呢,没有设置过auto commit等于false啊,也没呢写过这个begin,相当于此时呢,他们独立的是不是都是一个提交的行为,我们想回滚都没有,没有办法是吧?那怎么办啊,跑路走人啊呃,这个这个用不着啊,那么我们这里边儿的这些增删改的这些行为啊,包括呢,我们没有演示这个DDL的行为啊,大家呢,下来可以自己演示一下DDL。
31:02
我们的这些操作呢,都会记录在咱们这个啊叫这个诶blog的这样的文件当中啊,大家你再去看一下我们这个show啊bary啊,这个叫locks走起,哎,大家这时候呢,你要是跟上面去做对比的话,你会发现呢,这个文件呢变大了啊,这叫2691是吧,往下找一找。诶是不是变大了,诶因为呢,我们刚才这些操作呢,其实都记录起来了,那既然都记录了,我们就可以考虑呢,使用这样的一个二进制的文件呢,帮我们把刚才的这些操作呢,给它做一个恢复啊,咱们就可以做个恢复啊,那恢复的话呢,我们是不是要使用这个文件了啊,那么这时候呢,大家一定要注意一个小细节问题啊,那你说我现在要做恢复读这个里边的呃,文件我们去执行的时候呢,是不是这时候的执行操作又相当于是针对这个表是不是再做个修改啊。那相当于我们在用这个文件的同时呢,是不是又在往这个文件里边,是不是又又在写这个文件是吧,所以呢,不建议这样去做,那怎么办呢?那咱们呢,可以做一个叫flash啊,叫locks。啊,走起,那么这时候呢,我们再去收一下,诶,大家你会发现呢,是不是就帮我们生成了一个新的啊这个blog文件了啊,那就意味着我们接下来的诶恢复的行为,对表中啊数据做了增删改的话呢,是不是就会记录到我们这个文件里了啊,那么相当于这个文件的话呢,我们就是把它看作是一个呃,用于我们恢复数据的这样的一个文件了啊这个小细节点呢,大家要注意一下。
32:21
OK吧,好的,那么下面干什么呢?我们是不是要读这个文件了,那么读这个文件怎么读啊,咱们刚才呢,讲的时候呢,查看日志,咱们是不是提了两种方式,一种方式呢,叫做my blog。是吧,My blog啊,这是一种方式,还有一种方式的话呢,我们就提到了,叫做呃瘦哎,往下找啊。在这是吧,哎,受blog events这样的一种方式啊,那么这两个的话呢,我们现在呢,要想做恢复应该用哪一个呢?啊,那就得看你是想怎么恢复了。这个同学说老师这怎么讲怎么恢复啊,你看啊,咱们现在要恢复的话呢,其实整体上来说呢,应该是两种策略啊,一种策略的话呢,就是按照啊叫position的方式,就是你从哪个位置。
33:03
哎,就是咱们对应的是不是都有这个叫啊blog这个文件是吧,这个B道文件呢,我们可以指定的从哪个位置到哪个位置啊,我们这些呢做恢复啊,这对应的叫做position了。如果呢,你希望呢,是通过这种position的方式呢,做这个恢复呢,啊,那咱们呢,就使用的是这个啊叫showlos。刚才那会儿咱们讲查看的时候,不是讲了两种方式嘛,那你就用这个,如果呢,你想通过这个时间的方式来恢复的话呢,咱们就用上边这个叫MY的blog。啊,就用这个啊,因为你看这里边来记录了一下这个时间了,是吧?它这里边儿呢,没有记录这个position啊呃,那咱们现在给大家去演示,按照position的方式来这个什么呀,来这个进行恢复啊,那咱们就用它了,好那么回过来,那这里边呢,我们就去show一下啊bin log啊一啊问词是吧,然后呢,In啊,具体我们这个文件啊啊这个文件的话呢,是不是就它呀。哎,把它呢复制一下好,我们这块呢粘过来啊,这样一下好,然后回车。
34:01
好一看哟,还挺多的是吧,诶挺多的,那就是我们刚才呢,执行的这些呢,增删改的操作呢,就全部都记录在这儿了啊,那我们这里边呢,首先要做这个事儿啊,就这呢,就咱们这个position啊,咱们呢,给大家演示这样的几个事儿啊恢复咱们先恢复呢三个隐色这个行为,然后呢,恢复完以后,我们查查看看是不是回来了,然后呢,咱们呃增删啊删了一条数据,这个也恢复一下是吧,然后再回续我们查询的,呃,这个修改的这样一个情况,所以呢,我们就是这是一个恢复的事儿,这是一个恢复的事儿,这是一个恢复的事儿,好呃,那么恢复这几个事儿呢,你需要确定的就是这几个,咱们说呢,每一个呃增删改的操作呢,它都是一个事件了啊,你得知道呢,你这三个事件呢,起止的位置吧。所以我们是不是就找到这两个的position得啊。那么这个position的话呢,你得需要去定位啊,这个呢,密密麻麻的从哪去定位呀,啊那么能确定的一点呢,就是咱们刚才呢,在隐塞的时候呢,诶这三个事儿呢,是不是都挨着呀,所以他们生成的这个XID呢,它就是挨着的。啊,你看这个sid值是23啊,这个是二十二二十三。
35:02
啊,下边这个是35了是吧,三十五三十六三十七,嗯,前面这俩呢不够啊,那应该是咱们在之前的那些操作了啊啊35363739,诶这个38呢,其实咱们添加完三个之后呢,做了个查询是吧?诶这个呢,就是我们做的诶删除的那个操作啊,所以说这块呢,应该是这三个哈,哎,首先呢,我们地方画一下啊这个。这个和这个啊,这就咱们insert的那两三个事件啊,三个事件好,那这三个事件呢,你给它平推过来。平均过来是不是就在这了啊,就在这了啊,但是这块呢,我们这个数呢,你不能用这个数啊,不能用这个数,那我应该用哪个数啊啊,你看你这个XID呢,往上找找最近的这个比。啊,找最近一个begin begin呢,对应过来的是不是这个啊,哎,这个一定要小心一点啊,这个别找错了啊,这个呢,它俩是匹配的好,那就相当于我们从这个begin开始,然后呢,诶一直到你这个的begin,这个begin,但是你得找是不是下一个,哎你这个事件的begin,那我们这块结束的话,应该是不是这一行到这儿了。
36:02
哎,应该到这儿是吧,哎,我们对应的这个数呢,是不是就它呀。哎,就它是吧,好,这个呢,大家一定得看清楚了啊,这个眼别花了,好那我们现在呢,是不是就找到了两个数啊,这两个数的话呢,我就把它呢,诶这个截个图啊,方便呢我这块去看啊,那下面呢,我要恢复的话呢,是不是就从这个开始位置到这个结束的位置啊就行是吧,好OK了啊啊那么这块恢复的话呢,我们就在这块恢复了啊,因为咱们不是在这个MYSQL这个指令下了啊,咱们就回到这个位置。好,那么这个恢复的话呢,我们需要用的这个指令,来咱们看一眼。哎,往下找啊,哎,这整体来讲的话呢,这个指令就是它。啊就它啊,看着还是比较短的啊,这个呢,我就呃不一个去写了啊,因为里边呢,我们需要写上它的一个完整路径啊,这个咱们就直接我从这粘一下啊,然后给大家去解释就行,好CTRLC一下。回过来啊,咱们往这儿呢,给它复制。啊复制好,那我呢来解释啊,诶咱们往前转,首先的话呢,我们说整体上来讲呢,是一个mysq blog的这样的一个指令,诶这不就它吗?好后边这块呢,是不是叫start position啊,就我们所谓这个开始的位置,你把它删掉,咱们是不是叫884。
37:11
啊,884好,然后呢,再往后走这个呢,就是这个结束的位置。咱们这个叫1729啊,1729好没问题,下面呢是我们这个data贝啊,咱这个data贝呢,是艾特硅谷DB3啊这个大家呢,你要是去演示这个恢复的话呢,你就看你自己的啊,看你自己的这个呢,你别写成跟我一样了。然后呢,再往后走,这个呢,就是咱们这个艾特硅谷B的这个日志文件啊,诶这个你注意啊,前面我这个做课件的时候呢,诶中间呢,是给他又设置过一层这个目录啊,因为为了演示一下咱们那个课件的那个效果嘛,诶我设置一个目录,哎我这块呢,放在哪了呢?诶咱们往上找一下。啊,咱们呢,是不是放在这儿了。哎,这个下边的,哎是不是有具体的这个00002是吧,这个里边吧,哎这个你看清楚啊,大家一定要看清楚,哎这个呢,可别整错了,哎是不是有个斜杠啊腕lib mycyle and硅谷ban,我这呢是不是放的是这个二的这个这个位置啊。
38:10
哎,所以这样啊,好在后边呢,就有一个我们MYSL,因为我们后边呢要登录啊,哎杠u root-P,哎注意后边的杠P呢,我这ABC123是我自己的密码。啊,你呢那块呢,是不是就写你的密码,然后后边的岗位后边呢,再写上咱们这个数据库啊按在硅谷DB3知道吧,好激动人心的时刻到来了,我这呢都改完了啊,都在大家的监督下呢,我写好了这个88417298841729,好来回撤。哎,执行完了,那执行完以后呢,哎,成不成在此一举啊,我们回过来,此时的话呢,我们来一个select星。诶,From这个student来走起,好,大家看是不是非常完美的,哎,我们把这三条数据呢,就给我们恢复过来了。挺好是吧,哎这呢,我们就相当于恢复了这样的一个插入的一个行为,那么接下来的话呢,我们是不是在这个基础上呢,咱们又增删删了一条记录是吧?哎,那这个删除的行为呢,我们也回复一下,哎,刚才呢,我们是不是已经找到叫1729啊1729,那么咱们下一个做的事儿,其实就是咱们的增删删了是吧?诶所以呢,我们这块呢,是不是就从这个1808开始。
39:18
1808开始,然后呢,就是占据的我们这个XID呗,那就是到这个位置结束吧。看一眼啊啊这个begin,然后这个begin上边是不是就这个啊好,那我们把它呢来选中一下。好,这块我们盯一下来放在这儿是吧,这个呢,就是我们的这个呃,增删删除行为啊回过来。那回到这儿,我们再把刚才这个指令呢调出来,咱们此时呢,需要改的位置呢,就是这个起止的位置。哎,把这个884呢,我们改成了叫1808啊。好,然后呢,我们的结束位置。啊,这个是2037。哎,2037好,1808好,然后呢,我们直接就回车了啊,走起。
40:05
呃,然后呢,回过来,嗯,那大家看一眼啊,这时候呢,基本上心里就有底了啊,我们走起一下,是不是我们把这个呃20的那条数据呢,就给干掉了。啊,这就相当于我们把第二个事儿呢,也给恢复了啊啊,那么再接的话呢,增删改,我们是不是把这条记录给改了一下是吧?哎,我们接着恢复啊,这个到2037了。二零。2037,诶,然后接下来呢,是不是就它了。呃,重解一下啊。嗯,2037,接着是2116啊,接着这个,然后呢,它的这个在这儿,这个是在这儿,是不是就它了。啊,这个啊。这样那下边呢,就是另外的一个啊,我们最后呢,不是也delete了一下,Delete了一下嘛,好,那我们这儿呢,再把这个事儿啊给他呢,再盯一下。哎,就这样是吧,好,那么回过来,哎,我们再把刚才的整个这个指令调过来,改一下这个起止的位置。
41:00
哎,这个是2116 2116。然后呢,2369。哎,二三啊六九哎就可以了,好回车,然后呢,再回过来啊回过来此时呢,我们再去做一个select氢啊走起好这个呢,大家就发现呢,我们是不是就改成这叫bbb了。哎,挺好啊,挺好是吧,好,那么咱们现在呢,相当于就演示了一下,通过这个叫position的方式呢,咱们把这个数据呢做了一个恢复啊,那么大家呢,就以后呢,是不是就不用从山谷到跑路了啊,这个因为我们有这个blog日志的一个支持啊,实现呢数据的一个相当一个恢复啊啊这个呢,我们就演示到这儿了,然后的话呢,这呢说一下咱们刚才那会儿也强调了基于这个position的一个,这个我们进行恢复的话呢,大家就呃使用咱们刚才提到的这个叫event是吧,那咱们查看这个position呢,具体的是在哪?那如果说你要是基于啊,还是在这块去恢复,只不过呢,我们使用的呢,就不是这个position了,我们还可以呢,使用叫起止的这个时间。
42:01
哎,往下找啊,如果你要用这个起始时间的话呢,我们叫start datetime和这个stop,这个datetime啊,这个年月日十分秒啊,就这样个场景啊,那么这个时间的话呢,我们看一下是不是在我们这个呃叫受blo events里边呢,就没有很好的去记住这个时间了啊,那怎么办呢?诶,我们就可以使用另外一个指令了啊,另外指令就是我们呃,那会儿呢,也演示过的啊,我就写到这了,咱们不是也说过啊,叫my circle be log。是吧,然后接下来呢,我们是,哎,我再写一下啊,来玩一下。下的。MYSQL下的啊,这个不太好写,直接粘一下啊。是不是这个文件啊,哎,我们把它能复制一下。诶粘过来,然后呢,这样收一下尾是吧,哎这么着啊好,这个呢,我们是相当于呢查看的,就咱们讲这个查看blog文件不是两种方式,这咱们讲的第一种啊my blog在这里边的话呢,给你找这个啊,这个呢不就是说我们记录信息了啊,这个呢,就是对应的相应的一个增删改的一个行为,在这个上边呢,你看有一个叫time step啊,这是一个时间戳的方式来表示的,它呢就相当于是我们当前的这个事件的它的一个诶时间。
43:12
啊,那我们要想恢复的话呢,你也可以通过这个时间,只不过呢,这块呢,我们把它核算成呢,叫做datetime呢,就是年月日十分秒啊得这样去呈现了。啊,注意一下啊,哎,那这里边有个注意点,就是说如果我们一个事件呢,它执行的时间特特别短啊,在一秒钟之内就完成了,那像你这个起止的话呢,写成一个了,那怎么办呢?啊,你可以呢,比如我们这个时间的话呢,你花的不到一秒,然后但是下个时间呢,隔了好多秒,那你可以呢,是不是别写,比如这是22秒,这个是20秒之内就写完了,你就别写这了,假假如这是25秒开始的,你这个呢,是不是指的时候你可以写个24啊只要呢,在这个开始之前是不是就行。哎,这样个情况啊,好,那这个我就不给大家去演示了啊,不给大家去演示了,那刚才呢,我们就演示一下这个,诶,Blog日志的一个数据恢复的一个情况啊。
我来说两句