00:00
大家好,欢迎大家继续收看上硅谷的Linux运维课程。我是沈超老师。这节课我们继续来讲。这个经典面试题,我们来看系统管理,管理类的第二个面试题,备份策略。有这样的照片视频。他说,如果一个系统没有任何备份策略。请写出一个较为全面合理的备份方案。那这又是一个经验类的电视机。就是说怎么说可能都对,也怎么说有可能都不一定太符合他的想法。那这是一个经验类的,但是呢,备份类呢,这个工作呢,大家需要注意啊。我们说认为工程师两个常见的日常工作,最常见的两个日常工作,一个就是备份,另外一个就是监控。啊,这是我们最主要的日常工作,天天都要干的,所以呢,这个倒还是不算太偏。那想要知道写出这样一个合理的备份策略,我们可能需要知道一些基础知识。
01:02
比如说。我们可能需要注意的是啊,它这里考察的是什么经验类啊,这是个经验类了那。首先我们要知道的是什么?我们需要知道我要备份什么样的内容,对吧?那如果对Linux系统来讲,那我这样一些重要系统目录可能都需要备份。请说。我的配置文件目录。我的超级用户和普通用户的加目录。我的邮件进15啊,这样的目录啊,两种进15。Crown和这个艾对吧,这个进食的目录。这只是一般情况,比如说你的系统下,比如说放了一些其他的重要数据,可能也需要考虑,但是一般来说系统目录就是这样一些目录需要备份。接下来了。我还要考虑你的服务器是用来干什么,这是通用的,不论你的服务器是什么,这些目录可能都要备份,那接下来,接下来还要考虑什么?
02:00
你如果是数据库服务器。对吧,那我需要肯定是不是需要备份我的数据库啊,肯定是不需要的,注意啊呃,通过不同方法安装RPM包安装和源码包安装,它的数据库位置是不一样,但。大家需要注意一下,默认情况下RP包安装了这个MYSL,数据库位置是在哇下Li下的MYSL,而源码包是在user local mysl下的data啊,在这个目录下,哎,这个源码包这个还小心它的版本不同,这个目录还不是太一样,有这目录还有其他的,比如说还有叫也有这个叫什么这个买S的目录也有,版本不一样,不太一样,需要查它的官方说明手册。那一般来说是这个目录,那对。如果我是一个买搜狗数据库,那我的数据库肯定是要备份的,没问题对吧,其次呢,如果我是外部服务器,比如说我,我是阿帕奇。当然你要是N就要考虑N对吧。那我可能还需要备份什么网站,诶网站目录为啥写了两个同样啊,前面是RPM包安装的。
03:07
这是RPM包安装的,后面是源码包安装的位置也不一样啊,那网页肯定是要备份的,对吧,其次呢,配置文件。我是不是也得考虑要备份啊,里面写了大量的配置,一旦崩溃我还得重配一遍,多麻烦备份下来对吧,包括日志。都是需要考虑备份的那。阿帕奇的日志可能还有点说法,我们后面在这个类似面试题里我们再说啊,你都需要注意。那这是阿帕奇。我们建议和麦斯。那如果你还搭了其他服?比如说你还搭了邮件。你还搭了这个FTP文件服务器,那这样的它的相关数据是不是肯定都是要备份的,所以我们说。如果你还有其他服务,对应数据也是需要备份的啊。这是需要备份的内容。也就是说。前面这个是通用的。
04:01
不管什么服务器,这些目录都要备份。后面那个呢,不同的服务器不一样啊,看你的服务器到底是干嘛的,举了两个例子,数据库和阿帕奇服务,对吧?这是你第一件事,我需要备份什么东西?那第二件事,备份策略。备份策略主要有这样三个策略。完整备份。完整备份最好理解就是啥,把这个数据,比如说数据库直接整个挖下,列下MYSQL整个目录。对吧,拷贝打包压缩拷贝到另外一个位置。这样的话,他可以用什么拷贝命令,他命令打包压缩都可以。当然,我们Linux系统下还有专业的备份工具,叫做dump,嗯,小心。六当中我们的文件系统六的文件系统是EST4的,所以他用的命令是down。那么如果是七,你用的是RED7或者范S7。
05:00
那么它的文件系统变成了FS,所以dump编列也变了,变成叉FSMP。我们说。这些命令都肯定。它其实就是完整备份,就是把整个目录或者文件。直接备份出来一份就行了,对吧。那除了完整备份呢,还有增量备份和差异备份这两个说法。增量备份,它指的是每次备份以前一次备份作为参照,啥意思啊?我第一这是原始文件。我第一天备份,把它备份一份备份出来,这是第一次备份。我第二天,然后呢,到了第二天,我原始数据里面又新增了一些数据。对吧,我第二天备份的时候,我不把整个数据,不是把整个数据都备份过来,不是这样,为啥太大了。完整备份最大的缺点就是什么?完整备份的优点啊?是备份简单,打包压缩拷贝就行了,缺点就是太大了。你打包压缩需要时间,拷贝也需要时间。
06:03
如果你需要异地备份,把它拷贝到其他服务器,还要考虑网络的带宽,这个时间可能就会很长。那增量备份怎么办?第一天备份,备份这个第一天的内容。第二天的备份呢,只备份第二天新增内容,也就是说它跟第一次比,第二天备份和第一天比,不一样的内容备份下来。第三天备份呢,我跟第二天比不一样的备份下来,也就是说第三天的备份备份这部分数据。这就叫增量备份。每次备份只拿前一次备份作为参照物。哎,只备份第三天新增的内容。那这种备份优点它的备份数据量最小,缺点它的还原难度最高,它要还原肯定是先要把第一天的还原,再还原第二天了,再还原第三天了,哪一天的丢了,数据就完蛋了,就就这一天,往后的数据都不能用了。哎,这是增量备份。
07:01
而差异备份呢,它是以第一次备份作为参照物,那也就是说。如果是增量备份,它都是什么,以前一天备份差异备份来看啊,第一天。我再画一个,今天备份的时候。把这个完整备份回来。到第二天备份的时候,我备份第二天新增了,也就是说跟第一天备份比有变化了,把它备份下来。到第三天备份的时候呢。我不是像第三天新增的差异备份,是只把第三天的备份过来。但是增量增量备份是只备份第三天的,但是如果是差异备份呢,他会把第二天第三天的全备份回来。到了第四天吗?到了第四天呢,第四天薪资的内容,他会把第二天第三天第四天呢全备份过来。所以我说啊,差异备份是用第一次备份作为参照。那差异备份呢,适合什么?原始数据比较大,所以说第一次备份数据量比较大。
08:03
但是以后每天新增的数据量都不是太大的情况。这时候用差异贝塔最好,诶,它的好处是恢复难度没有增量备份那么难,诶,只要中间哪天的丢了。没事儿,只要第一天的和最后一天的还在,这个数据就不会丢。哎,这是差异备份的优点,那增量备份就适合什么。每天增长的数据量都差不多。第一天增长了500兆,第二天又增长了500兆,第三天还是差不多500兆,这时候增量备份就可以。这是这两个备份的区别啊,增量备份以前一次备份作为参照。差异备份以第一次备份作为参照,那。这样,如果要想实现这样的备份。像打包复制这样就做不到。或者说。如果你要用打包复制来做到,你就得写脚本,自己来实现算法,比较麻烦。但是我们的这两个备份工具。
09:04
这两个备份工具。是可以实现都可以实现增量和差异备份的,哎,所以我们说这是更专业的备份工具,大家注意啊。那这个工具到底咋用啊?没关系,我们的细说Linux书上都有详细介绍,当然其实就是两年内。百度搜一下也行,没多难,你只要知道,他就是说难在哪,难在你不知道,你这个东西真要知道,其实一搜就可以对吧,好。这是备份策略的选择。那接下来呢,备份的频率,那这时候就有什么实时备份和定时备份这样两种。实时备份,比如说例如MYSQL主从主服务器和从服务器从服务器实时从主服务器上获取,当然小心啊,这里说了实时或多或少还是会有点延迟。肯定会有。但是这个延迟可以基本上可以忽略不计,当然我们说如果数据量非常大,而且服务器架构又设计的不好,延迟有可能比较高,但是正常情况下这个延迟都非常非常的短。
10:08
以毫秒计的,所以呢,我们其实可以认为它是实时的啊,这些东西只要配好,它会自动备份,不用你去管,对吧,那定时备份呢,比如说我有些数据每天备份一次,或者每周甚至每个月,这种备份一般要通过脚本啊,我们自己写备份脚本。我写好备份哪些东西,然后通过定时任务来实现,哎,这个是定时备份啊,这是备份频率。再有一个存储位置。各位。他的原则是,不要把鸡蛋放在同一个篮子里。各位啥意思?有,可以本地备份。你们一般做的,我们一般个人用户做的都是本地备份。把它从C盘备份到D盘对吧,但是这有一个巨大的问题什么。我突突突然有一天硬盘坏了。
11:00
你别说C盘D盘了,所有的硬盘整个都读不出来了,这样的话备份是不是就没有意义,所以我们说。本地备份可能不是太适合专业服务器。更适合个人用户啊。还有一种就是异地备份,也就是说从电脑A备份到电脑B。但是啊,比如说我们刚刚说的那个买三储存,其实就可以看成是一个ED,从电脑AB分到电脑B。但是这里也有个问题。比如说我的机房断电了。或者断网了,我俩俩服务器是不是都访问不了了?那异地备份可能一般指的是在这个北京备份一份,在上海再来一份,有这可能哎,如果你对数据要求比较高,那这种情况下也是需要。哎,对,这是有可能的,但是大多数。公司大多数,绝大多数都是中小公司嘛。所以呢,它其实一般在一台服务器备份两台电脑上,其实就一般来说够用了,就是说碰到机房断电,机房一般都会有备用电源。
12:00
他也会有备用网络,所以这个几率是很小很小的,所以呃,如果是大公司,比如说我是淘宝京东,那我肯定是全国各地来打,比如说我们当年打游戏,我们也是。我们的网站服务器搭了这个,全国所有的省会城市全部都搭,因为它少三四台服务器就行。但是我们的游戏集群,我们是上海深这个深圳北京三个集群,因为那个时候什么。这个电信就南北差异还是比较大的,其实现在也有,为了减缓延迟或者分担压力,我们就选择不同的线,现在很多服务器还是这样选择。对吧,比如说我这两天咱们那个魔兽世界怀旧服。这个超哥岁数比较大的,玩的都是这样的游戏啊,它上面也是七八十组服务器对吧,你挑那人少了去去玩对吧,那这种呢,如果数据量比较大,这个数据比较重要,可以考虑业绩备份。但是我说你一定要记得备份的这个基本原则,就是不要把它放在一个篮子里,就是。
13:01
一个硬盘,就算你自己的个人数据,你在他C盘D盘复制一份也不行,你应该干嘛?网盘里存一份,移动硬盘里存一份啊,原先我还有光盘,光盘里刻一份,这个是比较合理的啊。这是备份位置,那好。那我们把刚刚的这些策略讲了一下,就是这个基础概念,那我们回来解答这个题啊,我们这个题它的要求是写一个相对完整的较为合理的备份方案,那我从我的出发点我就说了。这种是经验类的,对吧,不一定是这个答案是这个就是固定的,那我们来说,我认为我们可以这样做,我们一般的服务器这样做就没问题了,怎么做?首先MYSMYSQ服务,这个服务器每的备份,每日备份异地,其实这里还不算是完整的一地,就从另一台到另外一台,MYSQ数据库主从实施了每天备份一次。然后呢,每周把。
14:01
这个MYSQL数据库完整备份一遍。再把你的其他的系统重要数据,刚刚说的那些这个什么加目录啊,ETC目录备份一遍,把网页数据,包括日志等等相关数据再备份一遍,每周备份一次,哎,我觉得就可以了。当然。我说。这是我们正常的一般的外部服务器这样备份一遍就够了。但是我们说。我们当年做的是游戏。我们游戏的备份,可是因为我说数据对游戏来讲是生命线。所以当年我们的这个游戏备份,我们可是做了四次备份这个东西,因为数据对我们太重要,我们当时的备份策略单指数据库啊,单指数据库因为就是游戏数据库啊。我们首先买四个主从,实时备份一次,每一个,每一组服务器都有个主从,服务器实时备份一次。接下来这是实时了。接下来每天。每天凌晨人少的时候,把从数据库,从服务器上数据库这两个数据是一致的,主从两个现在是数据是一样的。
15:03
把从从数上面读出来,一份拷贝一份,备份在一台专业的专门的备份服务器上。然后每周这里面,这里面会收集所有的这个不同服务器群的全部备份一遍。然后呢,每周再把这里的备份到一个专门的存储这个集群上,再备份一遍,我们进行了12344次备份。这当然是在同一台同一个机房里啊,还是在同一个机房里,所以当时我们做的可能这数据库来说,我们备份的是更多。因为我们游戏对数据的要求会更高,所以我再说这个备份策略可能是一般的这种常见机房,我们觉得这样就够了。但是如果你有特殊要求,比如说当前我们的数据库的要求更高,你可以考虑更这个这个复杂的或者说更多次的备份啊。这就是我们给的这个答案,备份策略。那类似面试题这里问了什么日志?
16:04
如果出现了日志怎么备份,各位?日志会有这样一个问题,日志是什么?日志是文本。它和数据库还不一样,数据库性能更好,也不要说几百兆,几个G,几十个G,虽然可能比较卡,但是还能读。但是文本我问大家,你们看小说吗?学员说不看啊,你就别骗我了,录视频了对吧,又不是这个面对面的,我会训你一顿啊,我也看那。你看的小说最大多大?呃,超哥其实喜欢看各种小说,我不太爱看那个什么什么什么什么那种太专业的书籍,我就爱看小说,那各种小说,什么小说我都看。我看的最大的小说就是叫凡人修仙传。这个小说大概有30多兆币。我问你,如果你用电脑的文本工具打开它慢吗?
17:01
各位,如果你有试过的话,它其实是非常慢的。换句话说,纯文本几十兆币其实就会有明显的性能下降。而我们的网站服务器呢?各位超哥,当天维护过一台服务器,我们举个例子啊,我们这台服务器的访问量不太大,一天的访问量大概20万左右的PV20万。PV点击量。有20万次点击。但是呢,就这样的情况下,我们一天产生的日质量大概在200兆币。200平均下来200兆B正常访问软件,那我们说了30兆B打开都已经比较卡了,当然这是Windows打开。200兆B呢,Linux打开其实也已经有点卡了。那我问你,如果你要不处理这个日志。你十天就是两个G啊。一百千克就是20个血,我告诉你啊。如果20个G,几十G的纯文本还能正常打开,Linux其实能打开,但是已经非常非常卡了,如果几十个G的纯文本还能正常处理,我们都没有必要去学数据库了。
18:07
为啥?你的文本工具比数据库强大多了,你直接用文本存就完了吧。之所以用数据库的原因就是文本工具性能太差,而数据库性能要更好,所以我们是用数据库来存,而不会用文本,那这个时候啊,尤其是网站,尤其是阿帕奇。我们的这个日志一定要做处理。否则它就会出现这个问题。几十天就有可能变成一个几时器的文件。你说你怎么办?删了他,哎,各位。日志的作用是用来排错了,你把它删了好了,那个文件是没了,你这个错怎么办?对吧,所以啊,日志备份可能需要考虑一件公事。它跟普通的数据库还不一样。它不会自动切割,所以我们要考虑日志的切割。第一件事儿,什么叫切割?
19:04
每天日志存一个文件。每天存这样的话,最大可能也就几十兆或者几百兆,不至于出现一个几十G的文件没法处理。这叫切割。其次,还要进行轮替处理。什么叫轮器?比如说我要保存十个日志文件,假设啊保存十个。12345。六七八九十存十个。到了第11天怎么办?把第一个删掉。保留第二天到第11天吧。到了第十二天,把第二个删掉,保留第三天到第十二天的,明白了吗?这就叫轮气。各位,这事当然不能手工来干,那我怎么办?我们系统上有一个自带的日志文气工具,叫log root。这个工具非常先进。
20:00
它不光可以这个切割轮器系统自带日志,也可以把我们的,比如说我们通过源码包安装的日志,或者我们自己写的文件加进去,让他来切割,它配置简单,功能强大,推荐大家使用这个工具。其次,阿帕奇的配置文件。它自带一个日志切割的选项啊,也可以切,就可以把它按天保存。但是阿帕奇的这个配置文件不自带轮替功能,没有轮替,要想轮替,通过自己写脚本来轮机,哎,可以也是可以的。那。看你个人习惯,超哥更习惯前面那个,因为我觉得它简单,但是我看到过我们很多工程师习惯后面那个,这个无所谓,只要你记得日志是要做切割和轮替的,诶,这个事一定不要忘,不光是网站日志,像数据库日志等等这样访问量比较大的日志,可能都需要考虑这个事儿啊。所以各位。
21:00
日志可能有一个更缺这个多的问题,就是它除了普通备份之外,他还有切割的这个事儿,你记得因为它是文本,你要不配切割,它会把所有数据写在同一个里面。那这些工具在我们之前的视频,包括书籍里都有,大家可以,如果有兴趣可以去看看好。这节课呢,我们又讲了一个经验类的面试题啊。备份策略这个呢,今天为了我们说可能这个。标准答案不一定没有啊,那我们还举了一个另外一个日志的问题啊,这个事儿大家也要注意,这个事儿是非常常见的。这节课的内容呢,就到这里,我们下节课再见。
我来说两句