00:01
各位同学大家好,下面呢我们继续来学习READY6,刚才呢给大家讲到了ready中的事物操作,那下面呢,我们来学习ready中的持久化操作,那我们来具体看一下,首先我们看一下我的文档中,我这里写到red持久化,其实它这里边呢有两种方式,那什么叫持久化呢?咱们之前提到radi是不是一个基于内存的数据库,它的数据是不是存到内存中了,但是write数据也可以写到我们的硬盘中去,这过程又叫持久化。而RA这里边呢,提供了两种不同形式的智化方式,一个叫RDB,一个叫off,那首先呢,给各位先介绍RB方式,然后一会儿再来介绍a off的方式,那下面呢,我们看一下什么叫RDBRDB的全称叫做red。
01:01
Date base,这是它的一个全称,那它什么意思呢?我们看一下啊,这里边是它这个官网上一段描述,我把这个描述给各位总结出来了,我就我下面写到的,首先我们会介绍就是RDB是什么,包括它的备份的流程是怎么样的,以及RDB在我们诗句中到底该怎么进行使用,或者说怎么进行配置,那下面呢,我们来看一下具体内容,我们看第一个内容。什么是RDB,我这里写到啊,什么叫RDB呢?它指的是在指定的时间间隔内,将内存中的这个数据集快照写到咱的硬盘中,这个过程就叫RDB,那这句话呢,给各位拿出来,咱们详细解释一下这句话是什么意思,我在这里边给各位同学咱们详细说一下。那我们来看一下啊,里边重要的几个词,第一个词。
02:00
叫做时间间隔,第二个叫什么数据及快照,那两次什么意思?咱先说时间间隔,什么叫时间间隔?举个例子啊,比如说我现在啊,我举个例子就是每隔这个十秒钟,那这十秒是不是时间间隔,说的具体点,比如说我现在啊,是这个九点。然后咱们十秒以后是不是09:10,再过十秒以后是不是九点,这个就是啊,就是十秒啊九点,比如说这个,比如我们这是九点,这个零零分,这是九点里面这个十分啊这个意思,然后下面是这个九点钟,他这个就是20分。啊,20分大家注意这是不是就是每隔十秒,所以这就叫时间间隔,比如说咱们可以长一点,比如说每隔一天,每隔两天,或者每隔一个月,这个叫时间间隔,而red中的RDB就是在指定的时间间隔内做什么事情呢?它会教你,就是内存中的叫数据及快照,因为red数据存到内存中,它会记录你当前时间,这个快照就当前时间点有哪些数据,然后把这个数据写到你的硬盘中。
03:16
比如说我们在09:00:00,他记录这个时间点,那个数据集就是里面哪些数据的快照,把这个交E盘中去,然后过了十秒,在九点十秒钟的时候,把这个时间点的数据集写到硬盘中去,再过十秒再做一次写入,这就叫RDB,在指定的时间间隔内,将内存中的数据及快照写到我们的硬盘中。时间间隔就咱举个例子,比如说每隔十秒,每隔一天,每隔一个月。数据集快照就是当前这个时间点里边那个数据啊,咱们经常各位应该都照过那个快照嘛,快照记录是不是你当前某一瞬间那个美好的瞬间有,而现在这个快照是当前某一点这个数据有哪些,这个点这个数据写到硬盘中去,这就是RDB的一个基本描述,各位把这个它知道。
04:10
然后这个RDB呢,它到底是怎么进行执行的,也就是他的底层的执行过程怎么样的,下面给各位做个说明,咱们先简单读一遍,然后我通一张图给大家画下这过程到底是怎么样的。那我们来看一下啊,我这里写到就是RDB呢,做这个就是操作的过程中,它会怎么样单独建一个子禁程,子禁城它的名字叫fo,用这个紫禁程来做个持有化,而紫禁程什么意思呢?它先将数据并不是直接持有化,是写到一个临时文件中,把临时文件写好之后,临时文件在替换我们这个持有化的文件,这个过程就是RDB做的过程,那这过程呢,用到一种技术叫写实物质技术,那这个什么意思?下面呢,给各位画张图,咱们来说明一下,它这个就是RDB这个底层的定过程啊,那我们来画一下啊,给大家写一下。
05:12
比如说我现在啊,这部分就是我们那个RA那个内存ready中,它数据我是存到那个内存里边去啊,这ready那个。内存部分,然后这里边呢,比如现在我们的数据呢,要进行持久化,就是它持久化之后呢,最终会生成一个文件,这文件的默认名字叫这个写下啊叫dup.RDB。这是他默认名字,这个文件中就有咱们那个就是RDB持久化之后那个内容,它是写到这里边去。过程中怎么做的呢?它并不是啊,直接把数据就写到这文件中去,就是他不是这么做的,他的做法是怎么实现的呢?首先大家注意啊,它首先在我们这化过程中先创建这么一个叫紫禁城。
06:03
就这位置有个紫禁程,这进程名字叫这个folk,它里边会创建,然后创建进程之后怎么做呢?当它做持久化的时候,在里边呢,你可以理解为先建一个临时的一个空间,或者说一个临时的区域,它把数据先给我们,就是持久化,或者说同步到这个临时去中去,他先做这个事情。写一下啊,这个叫临时的这么一个区域或者临时空间,把数据先同步到这里面去,当这个数据同步之后,最终把你临时去中那种再覆盖到这个RDB这个文件文件中去,这个过程。就是它一个底层的流程,比如说它里边通过一个临时空间,或者说一个临时区域,最终完成这个制化的过程啊,这是他做到具体说其实是一个临时的一个文件。我写一下啊,就是一个临时的一个文件。
07:02
啊,给各位做说明,那大家想一下啊,他为什么要这么做呢?他为什么不直接把数据同步到文件中,而要来一个临时去或者一个临时文件的,为什么这么做,大家想一下啊,给各位解释一下,比如说现在啊,我read数据在记录某一点的这个快照要同步这个就是里边去,那它首先到临时区中,比如说我假如说啊,我现在这文件中啊,比如说有十个K,我现在比如说同步到第八个K的时候,突然服务器挂掉了,那挂掉之后呢,如果说你直接就是。同步到这个RD文件中去,那我挂掉之后,造成我数据是不是就不完整了,数据肯定会有缺失,所以咱怎么做呢?先把数据同步到临时区域的文件中去,等这个同步好之后再来替换你这个RD文件,这样做是保证数据的一致性,包括数据的完整性,也是为了数据的安全考虑,所以这就是它底层这么一个之间过程,而这个过程就是用临时这个文件替换,这个就是持久化这个文件,它这过程用到一个技术名字叫写实复制技术,比如说我做同步之前,先建一个临时这么一个文件,建完之后往里面放数据,数据放完之后再替换那个内容,这过程叫写实,不是技术,RDB底层就是这么做到的。
08:25
所以各位啊,把这知道,但RDB呢还有一个缺点,这缺点呢,一会儿演示完成之后,给各位再来重复一遍。各位先知道它的流程是怎么样的啊,就是刚才我写到的一个过程,这各位知道啊,然后这个说完之后,下面呢,咱就来演示一下RDB里边这个基本过程,给各位做个演示啊,那我来说一下怎么演示啊,首先第一个各位注意啊,在我们的re中,RDB默认它就会有这个就是持有化的过程,就是默认就有RDB这个操作,那这操作是怎么做的呢?咱们通过它的配置文件带着各位来看一下,就里边那个相关的配置部分。
09:06
啊,那我们来看到啊,首先我这里边呢,比如我打开我这个配置文件,我的配置文件之前说的啊,应该在这个ETC下面这个。ready.SF中,然后在里边呢,咱们找到一个地方给各位搜索一下啊,就这个N这个地方,也就是这里,你看啊SN稍停是不是这个快照这过程,然后在里边有它一些相关的配置,那咱们往下找一下啊,给各位详细说明一下,配置中有什么呢?咱们一个一个来看啊,先往下看,咱先看一个比较重要的部分,各位看这个地方。这什么意思啊,就是你进行RDB之后,它那个文件叫什么名字,刚才我提到默认叫DP.rdb,这是第一个,然后各位再往下看,就是这段话,你看啊,DR什么意思?
10:00
是路径啊,点杠什么意思,是不是当前路径,那这个含义是什么呢?也就是说啊,现在比如说我现在啊,我们用red,咱是不是要启动red,而我这里边就指定它是在你的启动目录中生成这个RG文件,举个例子啊,比如我们现在啊。就是我再重新连一个客户端,为了各位看到更明确啊,咱们来说明一下具体什么意思,首先各位看啊,我之前启动red呢,应该我们都是在这个目录,就是USR local b目录,然后这是我们当时启动目录,而我每次启动之后,它会在你的启动目录中,如果你有数据的变化。它会生成一个文件,这个文件叫DY p.RDB,这就是我们指的这个含义,在你启动目录中,当你有数据这个,比如你做了添加,做什么变化,那它会做这个数据这个同步,而它同文件名字叫D mt.RDB,这个文件会放到你那个red启动目录中。
11:02
咱们是在这个目录,但如果你是别的目录,那它在你启动目录中会创建这个文件。这个位知道啊,然后除了这个之外呢,这里边还有一个很重要配置啊,咱们继续来看啊,咱们往上看,各位看这个配置。来看什么意思啊,这配置比较长,它叫做stop writes on bdive iol,然后我设置成叫yes,它的含义是什么呢?给各位解释一下啊,咱们也可以看一下我的课件筑啊,就是里边的就是这个内容啊,我们找到应该这个。那说一下什么意思啊,这个内容就是比如我现在啊,我的red无法写入硬盘了,比如我硬盘已经满了,那这个时候呢,我们就可以去关闭write写操作,这个值如果是yes,那就表示目前你就关闭了它的写操作,当你硬盘写不进去了,那里边就不再进行这个写操作了啊这一个配置。
12:01
然后除了这个之外,下面还有一个配置,这个配置我们看一下啊,它是什么含义。配置呢叫r DB compression也是yes,它的含义是什么呢?就是现在我们进行这个持有化的时候,我持有化的文件是否进行压缩的存储E进行压缩,另外还一个叫做r DB check sum是一个完整性检查,这个值我们也是E,那它的含义是什么呢?再介绍一下啊,比如说啊,这个检查的含义就是我们数据要做个持有化。但是策划之前呢,我要检查一下啊,我这数据是否正确,或者说我这数据是否完整,是否有损坏,如果说我的数据有损坏,那这里边我们就不做这个过程,这个过程呢,虽然说这里写到啊,它会大约有10%的性能消耗,就算咱有消耗,但要保证数据这个就是完整性,或者数据的准确性,数据不能有损害,因为你有损害数据进行这个持有化是没有意义的,所以咱们这个肯定要做到推荐值还是这个yes。
13:06
啊,这是里边操作,然后除了这个之外呢,还有最后几个操作,大家看这个操作啊叫C。说一下什么意思啊,就是save呢,我们看一下啊,在我的这个配置文件中,咱们找一个save,你看默认它是不是注掉了,这个save什么含义呢?强调啊,Save它就表示我们现在啊,我这里写的。表示啊,就是你做这个写操作这个次数,那什么叫写操作次数呢?咱们看里边啊,在他这个就是配置文件中,其实说的很详细,里边有这么一段描述啊,然后咱们看啊,就里边这个说法,我们来读一遍啊。它应该是在上面啊,这里在这里大家看啊,这个save什么意思呢?我这里写的很明确啊,它的这个我配置文件中写到了,就是这里写到,如果说啊,你在这个就是900秒,其实就是15分钟以后,如果你这里边啊,注意这句话,至少有一个K发生改变,那他会进用这个持化操作,然后第二个就是当你在五分钟这以后至少有十个K发生变化,做持久化,其他的跟他一样,比如我现在啊,具体说的具体,比如现在我在15分钟以内,当我的K超过了,就是大于等于一个,比如说有一个K变化了,有2K变化,有三个K变化了,只要在有15分钟以内,那这个过程中就会做这个持有化的这个过程。
14:33
或者还有其他规则,比如五分钟也好,什么这个60因为也好,都会做这过程啊,所以大家注意一个特点啊,而这特点中,你看它这值里边有个规则就是我的K。变化的越多,它的时间是不是越短啊,比如一个K15分钟啊,十个K5分钟,这是1万个K啊,60秒啊,就是它的K变它越多,那它同步的这个时间越短,所以这是里边这个CU配置,而C这个配置呢,咱们一会儿就可以通过它演示我们里边这个效果啊,通过它演示。
15:06
另外在过程中呢,这里边啊,就是还有一个这么一个地方,就是SE呢,这也提到它是手动保存,就是手动设置一会咱用它为了看到各位看到一个效果,但是咱们实际中更建议用这个角BGC,这是它就是自动完成这个同步过程啊,就是它可以啊进行我们这个切换操作,但是咱们为了一会儿演示用save给各位可以做到啊,所以这是里边的相关的一些配置,给各位做这个说明。然后这个说完之后呢,我们先把这个同步这个规律给大家说一下,然后咱们通过效果来演示一下,也就刚才我说的这个部分啊,有同学应该不太不是特别理解,那我现在呢,给大家画个图来说一下。这个过程到底是什么含义啊,我在这里画一下啊,比如说啊,我现在就是约定一个规则,这规则呢,你可以用它里面规则,也可以自己约定规则,那规则是什么呢?比如我这么约定啊,比如说我约定啊,说我现在在这个就是。
16:08
20秒以内啊,就是20秒钟以内,如果说我现在比如说有三个K发生了变化,那我进行这个数据的退化啊。这是我们得的过程,然后这3K,注意啊,它是至少有3K,就是你大于等于3K,比如说你有3K会变化,你有四个,有五个,有六个都会变化,但是有两个K它不会变化,这效果应该是大于等于这个K,就是至少有这么几个K,那这过程我们画一下,它可以怎么做啊,就是它是什么样的过程,就是在演示,比如说我这么来画啊。假如说大家看我图上,比如说我的第一部分啊,咱们就计时这个20秒。然后第二部分呢,我也计时这个。20秒啊,就是假如说啊,我在第一个20秒的范围中,我直接设置了三个K,那这三个K啊,在20秒的过程中,当你设之后,它就会进行智化操作,因为你设置规则,那各位注意啊,比如说现在啊,我这3K之后过了20秒,然后我再设K,比如我设置了第四个K,那第四个K呢,它就从第二个20秒开始进行计算。
17:20
注意这个过程啊,20秒以内你的值大于等于三,会做持有化,当你过了20秒之后,你再设置K,它会重新计算时间,但是20秒以内,比如说咱们可以比如20秒钟,我写了第一个K,第二个,第三个,第四个,第五个都可以,只要你在20秒以内都会进行持有化,而这个时候你再设K,如果你超过了这个20秒,它就会重新进行计算,重新计算时间,再做持有化。所以这就是咱们提到里边这个规则啊,各位记住啊,在你的时间范围之内,至少有几个K发生变化,它会进行持久化的这个操作。
18:01
啊,这是我们提到的里边这个特点,然后这个特点我们在配置文件中,咱们改个规则,为了一会儿咱们操作方便啊,咱们改个规则啊,比如现在我在这里改一下啊。它默认有这么一个规则,咱把规则为了咱们一会儿看的明显,咱们给他稍微改一下啊,就我刚才这规则在20秒以内,如果说咱目前有三个K发生变化,那咱就做这个持久化的这个操作啊,这是我们做这个过程啊,那现在我把这个先给他就是。保存一下,然后咱们把RA给它就是重启一下啊,因为咱们改了配置文件,我直接给把那个进程杀掉,重启一下啊。啊,这应该啊,刚才应该是已经。关掉了啊,然后咱们给他就是。启动一下啊呃,我们启动就是这个RA杠。Server,然后ETC下边的right.zf啊,然后咱们再看一下这个进程目前是不是启动起来了,启动之后在B目录中是不是有一个这个dup,这个RDB文件啊,是他之前文件,那现在呢,比如说我来做一些事情,大家先看一下啊,目前文件大小是不是76个呀,啊,就是76大小这么大小,那我现在咱们演示一下,按照我的规则,刚才咱们设置了在20秒以内,如果说你至少有三个可变化,它会做这个持有化操作,而持有化的效果就是这个大小是不是应该会变呀,因为它要往里边写入新的这个内容,那咱来试一下啊,怎么试演示一下,比如现在啊,为了明确我再新来一个客户端啊,咱新来一个客户端。
19:46
然后在里边,比如说我用这个客户端工具连上这里面设置,比如说这是第一个key。这是第二个题啊,然后这是第三个题啊,包括再来一个什么第四个题啊,这里边设置多题,这时间只要你在20秒以内,你设置这些key都会进行催化操作,那咱们再稍微等一会儿啊,因为20秒嘛,应该也差不多了,那等完之后到里边,比如现在啊,我用LL命令再看一下,大家看大小是变成了96 96证明这里边是不是就持有化了这个数据啊,因为他做了这个内容啊,所以这就是我们看到的一个基本效果啊,当然一会儿咱会通过那个备份还原看的更明确,目前这么看,应该也能看到它的数据肯定是做了持有化,因为数据大小是发生了变化。
20:39
所以这个啊,就是咱们演示的这么一个效果,效果呢演示之后下面呢,我们看一下我这个文档中里边啊,就是有这么一段话,当然这位置有一个备份,对大家一块儿演示,咱先总结一下里边几个特点。首先各位看啊,就是我们这个RDB,它里面这个优势是什么呢?适合大规模的数据恢复,就是,但是这里边有一个特点啊,如果说你对数据的这个完整性,一致性要求很高,那这个不太合适,如果你要求不高,用这种方式很合适,为什么马上解释啊,另外他节约一分空间啊,什么修复快等等。
21:17
这个修复恢复咱马上演示,另外这种方式有个缺点,什么缺点呢?第一个你注意啊,因为现在我们做这个就是净化过程中,咱是不是有一个fok进程啊,刚才说过你要建一个临时的一个文件,通过它是不是在物质啊,或者说替换你那个RD文件,所以这过程呢,需要有两倍的这么一个空间,它就浪费这个空间,另外这里边还有一个特点。就是我们在用这个RDB进行数据退化的时候,它在最后一次操作中可能会造成数据的丢失,所以它本身有这缺点,就是刚才我提到的里边的这个地方,呃,咱来看一下啊,刚才我提到一个地方,就这句话。
22:02
最后一个持久化数据可能会丢失,为什么丢失?给各位解释一下啊,这个特点各位必须要知道啊,那我来说一下啊,还是这张图上大家看啊,刚才我提到。我们的规则就是20秒以内至少有三个K发生变化,是不是做持有化呀,比如说我现在啊,在第一个20秒的这个单位中,我有五个K变化了。那这五个K是不是要做催化呀?啊,肯定要这化了,那比如说啊,20秒过了,咱们加上第6K,那第6K是不是要重新计算时间呀?那比如说现在啊,我在20秒以内,我加了第6K,加了第七个K,加了第八个K,比如我加到第八个K的时候呢,这个时候还在20秒以内,就还没有到20秒,但是这个时候呢,我服务器突然挂掉了。应该能理解啊,服务器在20秒以内突然挂掉了,那这个时候挂掉之后数据不会持久化了,而我这数据是不是可能就丢失了啊,所以可能会有这个问题,当你就是进行这个。
23:05
描述这计算的时候,这中间有个K的变化,而你K,比如说比方现在啊,我这K只达到第二个,还没有达到这个数量,或者说这时间还没有到,那他肯定不会做持有化,而我服务器挂掉了,这时候数据是可能会丢失了啊,所以里边有这么一个问题,就是你最后一次进行持有化操作的时候,数据可能会丢失,就是服务器挂掉了,那数据肯定就丢失了,就没有这个操作了,就没有这个持有化了,服务器都挂掉了,肯定就不能再操作了,所以这就是RDB的这个经会特点。给各位最终作为说明,所以各位记住啊,再重复一遍。RDB呢是re中一种持久化的这种方式,RDB它的过程就是通过一个folk的子进程建一个临时文件,把临时文件在替换出你那个持有化一个文件,这是它的过程,过程用的技术叫写实复制技术。RDB的优势什么呢?它会周期性的把数据啊进行这个智有化操作,使得我们这个大规模的数据这个操作它的缺点是什么呢?就是你最后一次车有化过程中可能会造成数据的丢失,咱们刚才也都做这个总结。
24:14
所以这个啊是关于RDB这个相关的这个特点,给各位做了一个说明。
我来说两句