00:00
各位同学大家好,欢迎继续收看上硅谷red视频课程。在前面内容中呢,咱们讲到了red中持久化的第一种方式RDB,给大家演示了RDB的计算操作以及讲解了它的实验流程,那咱们下面呢,再来学习ready中的持久化的另外一种方式A。那我们来看一下关于a off呢,循换操作,首先a off呢是一个英文简称,它翻译过来叫做A判only file a pen是不是有追加意思,Only仅仅嘛,File是文件,就是它向文件中进行内容的一个追加,那这个具体什么意思呢?我们来看一下,下面这段话是针对a of的这么一个描述,咱们来看到首先写到a of呢,是以日志的形式来记录每个什么写操作,什么叫写操作,比如你做这个增加、修改、删除,也就是改编内容的操作叫写操作,如果说你只是想做查询,那它不是写操作。
01:11
而a off只记录写操作,不记录读操作,这是它的第一个特点,然后第二个将re中执行过的所有写的指令记录下来,注意啊,它记录的不仅只是数据,还有你的指令,比如说你做添加,做修改,做删除,他把指令就下来,读操作不记录,他只许追加文件,但不可以改写文件,这是A百1个特点,就是他以日日形式呢,把你写操作指令记下来,然后追加到文件中去。这是我们提到的关于a off,然后在RA中呢,它在启动之初就会读取该文件,然后重新构建数据,这个过程跟我们之前的RDB类似,RDB启动,然后文件数据就会恢复a of跟它类似。所以这是我们提到的什么是a of,以追加的形式在文件中进行这么一个操作,只记录我的写的指令,而不记录读的操作。
02:13
然后第二部分写到关于AF一个持久化的流程,这个流程呢,等咱们演示之后,给各位最终再做个总结,咱们先往下看,先给大家演示它的一个基本过程,然后最后咱再总结他这个实验的流程。咱们之前讲到过RDB默认是不是就是开启的,它会生成一个RDB文件,在你当前的启动路径下生成,当然可以改路径,而a of跟它就不一样了,我这里写到啊,A of默认是不开启的,咱需要把它开启之后才能进行使用,那这个怎么开启?下面给大家演示一下,咱们来到我们的这个Linux中,先找到我们的配置文件,我的配置文件在ETC里边的。
03:04
RACF,然后咱们把它找到在里边呢,找到这个配置部分,那这配置部分呢,叫a only,咱们就直接搜索一下,找一下这个文件的位置,我直接搜索。所判的only,然后咱们回车,大家看是不是在这个位置,而这位置我们看到啊,就是目前它的这个值是不是叫no,表示你目前的这个a of并没有开启,咱需要把这值改成yes之后它才可以开启,那比如现在我把这值我们给它改一下,咱们改成yes,所以这是里边的第一个,把这个改成yes,然后改成yes之后大家往下看,就是里边的这个位置。你看到啊,这是什么呢?它就表示啊,我们这个a off生成这个文件的名字,它叫做呃判的only.off文件名字啊,当然可以改指咱一般没必要用它默认名字就可以了,然后除了这个之外,还有下一部分,下一部分是什么呢?就这个文件会在什么位置就生成。
04:13
咱们之前呢说过RDBRDB呢,默认在你当前的启动路径下是不是生成了,而NF跟RDB是相同路径,也就是说你RDB在哪里生成a of,它就会在哪里生成,所以这是一个特点,那咱现在把它改完之后,我把这文件保存退出一下,冒号WQ,然后保存退出之后呢,咱需要把这个RA给它重启一下,怎么重启咱都说过了啊,你可以用沙特大或者说找到进程给他。先杀掉,然后再启动都是可以的,那我们就找到进程把它先杀掉。1066,然后杀掉之后把它我们再启动一下。那我们来启动啊,我就在这个目录中启动了。
05:03
RA-server ETC下边的ra.cf现在把它启动,而我们现在一启动之后,目前我们这个a off它就生效了,生效之后呢,咱们可以再打开一个客户端连接,然后咱们看一下这个目录中这个特点,我们记住啊,CD SR local。目录。咱们LL大家看啊,这里边是不是有我们这个文件,除了之前的RDB,还有目前的LF都生成了RDB呢,之前应该有内容169嘛,这个大小,但是a off目前是等于零了,就是它里边应该还没有最佳数据,所以现在我们看到a off,然后看到之后呢,比如现在我去连下我们的radi,咱们连接一下,连接之后看一下里边的值。
06:00
大家发现啊,目前有个特点,里边值是不是等于空了,就是没有数据,但是大家想一下,咱之前RDB中是不是有数据啊,169肯定有数据,但是目前是没有数据的,那大家说为什么目前没有数据,大家可以想一下,或者你可以猜一下为什么没有数据。我们看到啊,因为之前呢,咱们没有开启AF,只有RDB数据是存在的,但是目前我这里边是不是既有RDB又有a off,就是两个都开启了,所以大家记住一个特点啊,就是里边这句话,如果说你a ofr DB同时开启,那ready听谁的,它是以这个a of为你的基准,通过a of进行数据图读取,而不再去读取RDB2个都开启,它系统默认去取a off数据,因为a off之前没有数据等于零,所以呢,我们再看值是不是等于空了,所以这是它一个特点,各位把这个给它记住。
07:03
所以这是我们提到的这么一个内容,然后这个提到之后,咱们继续往下演示,因为a off呢,是记录你的这些写操作,那我下面呢,咱就进行一些写操作,然后看一下a off它里边能否记录,记录之后呢,咱再点一下它这个。恢复或者说备份恢复功能,其实a of的恢复跟RDB基本上是一样的,那给大家我现在来演示一下。比如说我现在向这里边来加一些数据,咱们来一个set,比如我叫K1啊,咱为了区分啊,我叫K11511,我再set一个K12V12,然后再一个K13V13啊,我们看下一个咱就K塞四个啊,然后V14Z回车。回车之后大家看现在我们向这个re中是不是site了四个数据,就是11121314,这site操作是不是就是我们的写操作呀,然后写操作之后咱们到这里边看一下,大家清楚看到a off的大小是变了,变成是147,之前是零嘛,现在147证明它进行了催化,操作项文件中追加上了我们的那种。
08:24
所以这个是它一个特点。然后追加之后呢,下面给大家演示一下,这个恢复操作跟RDB一样,那怎么演示呢?比如现在我把这个a only这文件先给它备份一份,比如我们叫这个。Bak备份。然后备份之后怎么做呢?就是现在啊,我先把这个就是red给它先shut down一下,就给它先关掉,然后关掉之后呢,我在这里边把我们这个文件给它删掉,就是a PA only.of大家看目前文件是不是删掉了,然后删掉之后怎么做呢?目前呢,咱们把这里边这个就是。
09:08
Dak的文件给它再改成A文件,跟我们之前那个RDB是一样的,我们叫A判的a off,现在是不是给它改成这个文件,然后咱们看文件是不是存在了,文件存在之后我到这里边呢,把这个RA给它重启一下。咱们启动ra.cf然后重启之后咱们再做一个。连接,然后看里边的值是不是存在了,所以这就是a off的这么一个恢复,当你启动的时候,它就可读取a of中的内容,然后写到内存中才能看到里面数据和RDB是一样的,所以这是关于我们演示的。A off中的基本操作包括它怎么开启以及怎么进行数据的恢复。也就这句话,重启red,然后它会重新加载A中的内容,各位把这给它知道就可以了,然后这个眼之后咱们再看下一个操作,这个操作呢,叫做异常恢复,什么叫异常恢复呢?给大家解释一下啊,比如说啊,我刚才呢,操作中每次是不是像AF中追加内容了,假如说我在追加的中等,比如我这个A文件,它突然损坏了,比如里面内容乱了,或者里面内容有问题了,那这个时候呢,在write中一种机制,它可以对我们这个AI文件进行修复,进行恢复。
10:38
也就是说把你坏的这个文件给你恢复成正常文件,让你RA还可以正常启动,这个叫异常恢复,也就是用于恢复我们这个AF这个文件,当文件,比如文件坏了,可以给它恢复成正常的情况,这个叫异常恢复,那这个效果给各位我来演示一下啊,咱们看一下这个效果是怎么样的,那我来演示啊,比如说怎么演示呢?咱们现在啊,我们先看一下这个文件中啊有什么内容。
11:10
大家看到啊,各位可能会觉得很特别,这个内容咱是不是能看懂啊,里边是不是咱们能看懂的数据啊,包括这里边就是记住就是它的指令,包括一些操作啊,只指令按照它的规则,你看啊,加上百分号,然后这里边有个开始的,有个结束的百分号,用这个它来做到这个咱不能乱改啊,改的话按照它的规则,比如现在我这么做,我在最后呢,给它加上一行内容,我就叫这个。比如叫哈加一个内容。然后加完内容之后,我把这个文件给它保存退出,注意我是这么做的,然后保存退出之后,咱们现在啊,我把这个就是ready给他,Shut down。插在当一下就给它关闭啊。然后shutdown之后呢,现在啊,我在这里边,我们来就是重新再启动一下这个red,咱看它的特点啊,Server。
12:11
ETC下边的ready.CF然后咱们一回车,回车之后呢,我们来连接一下啊,因为这是后台启动,我们看不到它的日志,然后咱们连接大家发现。里边是不是出错了啊,就刚才就有这个提示啊,他说我现在连接是不是拒绝了,为什么连接拒绝了?因为你在启动这个RA的时候,它就会读取a off这个文件,把文件内容重新行加载,但是文件内容我刚才给他做了改变,里边内容就不对了,文件被我们玩坏了,所以它就不能启动,告诉咱们就是连接拒绝了,提供不了,那如果说遇到这种情况怎么做呢?在radio中提供机制可以对文件进行这么一个修复操作,那咱现在可以把它修复一下。怎么修复,我们来看一下啊,在里边有这个命令red check a,用它可以修复,那我们来修复一下啊,Red check AF后面加一个叫杠杠fix啊,就是修复你的文件杠杠fix嘛,然后在后面加上你修复那个文件的名称,咱们给他会车,然后大家看啊,这里边提示我们。
13:26
他说在这个位置里边啊,Preli是不是前缀,说前缀中啊,做了一个这个H,证明在这行是有问题的,然后他做了一个比较,说之前和现在有什么不同啊,主要是告诉你这里边哪地方有问题,而这位置他说是否继续咱们输一个Y,那就把这文件进行修复,比如咱们YY之后呢,告诉我们文件是不是已经修复成功了。文件修复成功之后,咱们现在比如说我再看一下这个文件a pad only AF,然后咱们把文件打开大家看啊,最后一行呢,之前有那个hello,目前是不是就不存在了,因为它已经完成修复。
14:12
然后完成清复之后,现在呢,我们再去启动一下这个reddi,刚才是没有启动起来,因为它那文件有问题嘛,咱们再来启动ETC下边的ready.CF然后咱们通过ready c连接,再看一下里边内容是正确的,所以这就是关于我们针对这个a off文件的一个异常的恢复,当文件损坏,用这个check a命令可以把文件进行修复,然后你再重启,它会重新加载,这些问题就可以解决。所以这个各位把它知道啊,这是关于我们针对a of一些基本操作啊,所以大家看到操作应该很简单,就是你开启之后里面会向里面追加内容,然后这个文件损坏,你可以对它进行修复,包括它恢复这个数据跟之前RDB基本上是类似的。
15:07
这是我们提到的啊,然后除了这个之外,咱们再往下看啊,下面就是针对啊AF中一些相关配置介绍,咱们主要介绍里边的两个主要配置,那我们看一下啊,第一个配置它叫做同步频率设置,在配置文件中有这配置啊,咱就不看配置文件,直接看我的课件筑啊,然后这配置怎么样定配置叫apad,就是配置里边有几个值,一个叫,一个叫ISEC,一个叫no,就是当你配置你的同步频率里边的不同的值,它们有不同的效果,如果说你配置是O,是不是总是啊,什么意思啊,它就始终进行同步,每次你res进行写入的时候,它就会立刻记入日值,就是每次我写操作就马上进入AF中做追加,当然这种方式大家也能感受到。
16:01
每个操作都要记录,效率是比较低啊,但是好处什么?数据肯定很完整,每次操作马上记录,每次操作马上记录,所以这是第一个,然后第二个叫I位SEC,你注意啊,SEC就是second秒,它表示每秒净同步,比如说每秒记录一下,你这里边写操作记录到日志中去,但是这种操作一个问题啊,比如说我在记录的时候呢,假如这一秒我做了操作,刚操作之后呢,本来每秒应该是记录你的日志,但是这个时候突然我的re宕机了,或者re挂掉了,那这一秒的数据可能会丢失啊,当然也可能不会丢失,所以里边存在这么一个问题,然后还有最后一个就是设置叫nono什么意思,它就不会主动进行同步,把同步时间交给这个操作系统,由操作系统决定什么时候进行同步,所以这就是同步频率的设置。这个位给他知道,而这个到底用哪一个,咱们根据实际,比如说你数据的要求,你可以选择always I或者no等等,所以这是关于同步频率的一个设置,然后除了这个之外呢,下面还有一个它叫做压缩,或者叫重写这个压缩操作,那什么叫重写压缩操作呢?说的通俗点啊,比如我们现在有很多操作,然后最终他只记录最后一次那个结果操作。
17:27
给大家举个例子啊,比如说我现在啊,做了这么几个操作。我先就是啊,在里边比如我set了一个就是A,它的值是A1,然后比如说我又set了一个B,它的值我们叫BA1,咱是不是set两次,而它最终只记住什么,就记住你这个set a a1 BBA1,通过一个指令或者一个操作,把这两操作合到一起,就是最终只记住你最终的结果,你中间比如你做了十几步,他不管,只关注最后一步,最后一步是什么,包含你前面的所有内容,这就叫重写压缩操作,也就是把你的各种繁琐命令用一条最终实验出来,只关注我最终结果,不关注你中间的过程,这个叫重写操作,而这里边就是来做这个事情。
18:23
那重写操作这里写到啊,其实它也是用了一个fok这么一个子进程做操作,跟咱之前说那个RDB类似,在red4.0版本以后,有这个重写操作之前是没有的,然后他用这个RDB的快照以二进制的形式给它复制到你的AF的头部,就是这里边就是刚才我说的一过程,最终记住它的结果,中间怎么做,不关注是关注我最后的过程,这个叫就是重写压缩操作。但是重写压缩操作呢,也不是说什么时候都进行,它有一个触发的一个条件,当达到某个条件的时候,这个重写压缩操作它会实现什么条件,大家看一下啊,就是里边有这么一个过程,就这位置描述到了。
19:12
这里边呢,如果说你的文件呢,大于64兆才触发,比如说你小于64兆,它不会触发,因为你文件比较小,当大于64兆的时候,什么时候处罚,这里边写到啊,就是第一个条件,当你文件大小达到64兆,并且文件达到了100%时候,开始重写,什么意思呢?比如说现在我文件64兆,它要大于64兆的100%,也就是128兆,这个时候才进行重写,那给大家写一下啊,就是。64兆是一个这么一个值,然后这个时候呢,它要大于这个64兆的100%,大于64兆的100%,是不是就是128兆,这个时候他才会触发这个重写的这么一种机制。
20:03
也就是里边的这句话啊,就是你的基本大小,基本大小乘以100%,然后是你当前大小里边大于64兆情况下,这个RA对AF它会进行重写,就是我里边说的这么一个大小,各位把这个给他知道一下就可以了,所以这是我们提到的里面这个过程啊,然后这个重写这个过程的跟也是一个fo合进程,复合进程中,这个过程就是一个临时文件,然后里面都是操作跟之前RDB基本上是类似的。就是用你的这个临时文件覆盖之前旧的文件,最终完成重启。各位应该记得RDB啊,里边那个folk,就是咱之前曾经说一种机制叫做写实复制技术,当我做操作,先复制一份跟它相同空间大小往里面写那种,再来替换之前操作,这个叫做重写,流程跟之前基本一致。所以咱们现在就把这个a off中的循环过程给各位九说完了,说完之后咱最终总结一下a of中的持有化的流程到底是怎么样,也就是里边最终总结这么四句话,那咱们看一下啊,首先第一句话,这里写的客户端在请求写命令的时候会被追加到a off里面去,对咱们都演示过程,就是进行追加嘛,然后第二个a off这里边会根据你的持有化策略同步到磁盘的L文件中去。刚才咱们。
21:33
说了几个策略,第一个always,第二个I second,第三个no,每个有不同策略。第一个是总是。每次写操作马上进行追加,第二个每秒,第三个不主动交给操作系统完成,然后下一个就是里边这个重写策略,重写的话,当达到AF的容量的时候,就是咱们说的64兆大于它的100%,这个时候会进行重写操作,重写操作就是记住它最终那条指令,前面怎么做,不记住,记住最终的结果,这是第三个,然后最后一个当red服务重写的时候,它会加载A文件,然后写操作,达到数据恢复的目的。刚才咱们也演示过了里面的过程,所以这些就是针对a off的基本操作啊,包括里边的优缺点,咱也可以总结一下啊,优点就是。
22:27
备份机制更加稳健,丢失数据概率肯定会有,但是更低,而它进行这个就是可读的日文件操作,LL文件可以处理一些就是误操作,比如说我们可以恢复AF和这个文件,刚才也演示过了,但是它有劣势啊,因为它记录的不仅是你的数据,是不是还有你的操作呀,所以它比RDB肯定是占用更多的空间,比如说要记录我的set操作或者其他操作,包括含有我的数据,肯定比RDB空间更多。另外它备份恢复的速度要慢,因为里边记住东西很多嘛,你恢复肯定要慢。然后第三个每次读写都同步的话,有一定的性能压力,每次写我都同步,每次写同步里边肯定有压力,另外这里边存在一些潜在的bug,可能造成里边有一些问题,所以这是它的优点和缺点,各位把它知道啊,这是两个的一个总结,AF咱刚才都提到了啊,不再读一遍了。
23:26
就是我们总结的里边这么一个基本流程,所以这些就是针对a off的一些相互操作,给各位就最终说完了,那说完之后呢,咱们做一个小总结,总结什么呢?就是刚才我们在操作中啊,既有RDB,是不是又有a off,而两种方式咱们到底用哪一个呢?给各位总结一下啊,我这里写到官方推荐两个都启用,但是他们有不同的这个特点,如果说啊,你对数据不敏感,就是允许数据有部分丢失,可以用RDB,但如果说这里边我们不建议单独用AF,因为它可能出现一些bug,如果说你纯粹就做缓存使用,那这个时候两者可以都不使用,因为单只做缓存,只读取内存,那就没必要用持久化这过程两者都不可,都可以不用,这就是用哪种这么一个特点。
24:23
然后下面这段话呢,是它的官方的一个建议,咱家可以读一遍啊,就这段话给各位翻译出来了。首先第一个RDB呢,持有化方式,在指定的实间间隔对数据进行快照存储,A off呢,是以追加的形式进行操作啊,这个咱们应该都提到了,就是里边这个特点,而reds呢,JY进行重写,使它的体积不至于过大啊,就是比如这里边我们有多个操作,然后最终记录最后一条,这里边我们就是让它体积不至于过大,另外只做缓存,两种方式咱可以都可以不用,另外就是a of r DB一些相关的比较啊,这个我们就做了一个说明。
25:04
所以大家啊,就是把里边的这个就是。RDB包括A5F2种持久化,它是什么,包括什么特点,以及它具体该怎么操作,要求各位同学都要给他掌握。我们在课程中给各位都做了详细演示,所以这一部分我们就完成了。
我来说两句