00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课我们继续来学习if语句,前面我们讲的是单分支if,那这里我们看看双分支,双分支可能就更常用一点了,那它的作用是这样语法。If条件。那么在如果条件成立,那么执行这条命令,否则L执行这条命令,哎,否则执行这条命令。那么最后以f Fi结尾,它可以判断条件是成立执行一条,不成立执行另外一条,那这个可能就是一个比较常见的这样一种分支例子,那我们举几个例子啊,我们就别人的什么,如果条件成立,打印的一,不成立,打一个二,这两个东西没意义啊,没有什么太大的意义,而且非常简单,我不写,我相信你们也能写出来。对吧,所以我们说啊,我们举的例子都是尽量贴近实际工作,那我们看啊,我们来写一个数据备份的例子,各位我们一直说运维工程师。
01:02
每天最主要的工作。其实就是备份和监控。备份出不要出问题,出了问题之后,随时可以可以把它给还原,这个数据损失的最小,这是我们的一个工作需求,还有一个就是监控,监控的话,那就是你别干嘛,你别出问题,你最好是不是就能让我把它能这个这个这个这个什么,把它这个问题消失在这个无形当中,出问题之前我们就解决出来,那认为工作室就常规工作啊,一般都是这个。各位,不是说每天都让你搭个云计算集群。每天都让你搭一个高可用集群,不是的,为啥那玩意儿搭好之后,这些集群或者云云计算搭好之后,他们这个不出问题,你可能就天天就是维护它正常运行就行,对吧?如果你真的是天天都在答应,那就说明你干嘛离开除不远了,为啥你搭的东西每天都会崩溃,你想想这个事儿是不是你肯定离开除就不远了,对吧?所以啊,备份是一个常见工作,那有可能需要每天备份。
02:06
甚至有可能需要每周备份,有可能需要每个月备份,还有的可能是实时备份,OK,那这种备份的各位,也就是说实时备份,我们后面会讲其他的方法,就比如说如果是每天备份。每周备份这个东西一般都是需要人手工完成的。那手工完全要了命了,哇塞,这哪一天你忘了怎么办?而且这个重复工作没有意义啊,那怎么办?写脚本吗?我们说了脚本的主要目的就是为了干嘛这个。这个什么照顾管理员的这种使用习惯,对吧,所以啊各位,我们就写了一个备份脚本啊,这只是个抛砖引玉,可以备份数据库,当然也可以备份其他的,比如说网页啊,备份日志啊都是可以的,对吧,再有一个。我们现在拿备份数据库来举例,但是这个备份不是太合理,为啥?我们的备份是用CP来写的,叫就压包来做的,哎,把MYSQL整个库整个库。
03:07
然后呢,还有一个这个这个说明文件全部打包压缩在这个里面啊,压缩在这个备份文件里。哎,各位这种备份可以为难,我就说啊,这个买思库直接拷贝出去打包压缩是可以的,但是这个东西恢复起来它有问题,为啥它要求它的环境,比如说你的MYSQL的安装位置啊,包括你的版本啊,都必须完全一样才能做到,而且它只能实现完全备份。完全备份啥意思?我这里有50个G的数据,你备份一次就得把50个G全部备份一遍,压力很大。那其实啊,正常工作中我们有更先进的备份方式,MYSQL自带一个东西叫做MYSQL。当这样一个工具,他可他的话就更先进了,他首先他导出来的东西是一个完整的soql语句,那么这个时候就是啥买斯当MP备份出来的东西,不光它这个当前版本可以备份,可以用,如果你换一个版本,甚至只要你没有太大的这个语法错误,其实甚至换一个这个理论上来说,换一个其他词库数据库都是可以用。
04:15
哎,其次买三个当铺,除了可以实现完全备份,还可以实现增量备份。增量啥意思?就是我昨天备份了50个G,我今天只产生了五个G的数据,我今天备份就不需要把50个G全备份了,我只需要备这五个G的新增数据就行,那肯定什么增量备份。这个压力要小对吧,更合理,那么但是这玩意儿啊,我们要等到麦斯讲完,我们才能学会他怎么用,所以呢,暂时我就用这种笨办法,把整个买斯库库打包压缩拷贝,走这样一种备份方式,大家哎,那我说了。我在这里写了这样一个这种这种抛砖引玉吧,我抛了一个非常简陋的备份的这种工具,那我问你,当你学完买思L账之后,你是不是就可以尝试自己来写这样一个备份了,你备份的时候是不光要像我这样能实现完全备份,你是不是还应该可以实现增量备份,然后是不是让它可以自动行对不对,其实各位啊,这种完全备份增量备份的这种例子,我这里是有的,哎,都是一个是我们有有我自己写的,那后来我发现我们那个,呃,学程序的这个程序学员啊,我们有一些学员是学程序出身的,他学完这个东西之后,他写出来的脚本看起来比我的这个要好多,后来我就把他的脚本拷过来,那那个脚本等我们后面学完买S再说,今天我们就只能先这样的这种简单的打包压缩来备份,但是这种备份基本上可以就这种个备份程序,可以把备份上面的能用到的东西都可以,干嘛告诉你,OK,好,那我们就看一下这个备份。
05:51
句啊,我写了这个备诵脚本,这个脚本现在看还是比较笨的啊,但是没关系啊,我就说我们局限于我们现有的知识,我们能写多少写多少,后期知识充裕了我们再补充,对吧,你们再来扩展,OK好了,首先我们需要同步一下时间,哎,各位,呃,服务器之间的备份啊,时间它不是像我们现在学的这样,对他用那个手工设的,为啥手工设的它肯定互相之间还是会有一些差距,所以我们后面它其实可以用到一个叫NTP的这样一个时间服务器,它可以连接到时间服务器上,然后自动更新时间,这样的话它是不是就准了,对吧?那这条命令其实就只是连接到这个亚洲的时间服务器上,然后更新时间,目的是保证我们的服务器所有的时间是所有的服务器的时间是统一的,各位这个东西啊,就这个更新这个日期,这个脚本,你可能需要单独写一下。
06:45
把它写出来,就一旁边的就更新时间,然后让这个家伙每半个小时或者一个小时交易,行,哎,尤其是那种就是实时备份的服务器啊,这个东西还是挺重要的,OK,那我们这里呢,抛砖引玉说一下,我们应该要有统计时间,OK,其次。
07:04
啊对,再说一句啊,我这个备份还有一个还有一个不太好的东西啊干嘛我们说过备份的核心原则是什么,不要把鸡蛋放在同一个篮子里是吧,不要把它放在塞篮子大起。啊,差不多吧,不要把它放在一个同一个篮子里,那这个干嘛,原始数据和备份数据在同一条。服同一台服务器上同一个硬盘里,哇塞,那这个时候如果硬盘坏了,那这个数据是不是肯定也没有了,对吧?那这个时候我们说我们后面就可能要利用到我们后面讲的网络备份的这种服务,然后呢,先把它打包出来,先备份出来没问题,买L当户先把它备份成一个文件,再通过网络备份把这个文件传到另外的服务器呢?那前提是你是不是还得先把它备份出来,对吧?那换句话说,等我们后面学完了网络备份。你这个脚本是不是还要更新,是不是把它再变成拷贝到其他服务器的,最终这个东西是才是完整的能用的,OK啊,小心这个事儿啊,这个脚本我再说啊,局限于我们现有的知识啊,我们这不是一个最终的成熟脚本,但是举例足够了,好,那我们看一下。
08:14
前面都一样啊,注射的东西,那我们现在说同步时间,然后呢,把我的当前时间显示成年月日,然后保存在date变量当中,哎,我们可以看到如果date命令后面加百分称号。我们试一下date本来执行的是这样的,年月日星期小时分钟表对吧,那我备份其实没必要干嘛精确到这个这个小时分钟表,我就只要是每天备份一次嘛,那我们就干嘛100%年月。日好,它就会显示年月日这样的格式,OK,这样做的目的是为了干嘛?你生成的把这个东西保存在一个变量data当中。或者变量ABC当中都行,要保存进来目的是为了干嘛?后期生成的备份文件干嘛?你要写成什么,My circle。
09:06
Back,比如说写成这样一个文件,但是我问你,你今天执行一遍是买四个back,你明天执行一遍,这个脚本又备份一遍,是不是还是买个back,那这样的话,你这个明天的这个备份文件是不是就会覆盖金钱,那不合理啊,怎么办?把日期这个变量导进来,写成Dollar date。那这样的话,你的这个日这个时间就会文件就会变成买back,然后170219这样一个时间,当然我再说啊,这个时间不准啊,大家就看一下就行了,虚拟机的时间吧,对吧,好了那各位。这就是把日期保存在变量里的目的,诶这个只要是做文本的这个呃,就是让脚本自动执行的,比如说是备份呀,复制呀,记录这个日志啊,都需要考虑这个事儿,把日期干嘛写到文件名里,要不然他就会干嘛覆盖,OK,然后呢。
10:02
统计一下这个MYSQL库的大小,其实这个是没有什么太大意义的,呃,只不过是为了写个日志,想告诉你今天备份的MYSQL有多大,OK,如果你觉得没解释,可以不统计好这个时候。主体程序变量设置完了对吧,主体程序就有了,首先检测一下备份目录杠记这是不是目录。首先这个目录是不是存在,是不是目录,如果是,也就是说我要把数据备份在这个目录里嘛,那我是不是首先肯定要保证这个目录是存在的,是不是才行,对吧?如果是,那怎么办?把日期写在这个信息文件里,对吧?到了这个我刚刚保存进来了,把大小也写在这个文件里,那这是不是就是一个记录信息日志,记录了什么,我在某一天的某某一年的某一月的某一天备份了多大多大的数据,对吧?然后我进入到备份目录中,别忘了,因为我是要把数据备份到这里的,对吧,然后呢。
11:02
打包压缩。把这个内容干嘛保存在这个压缩包里,然后我的压缩包的命名是MYSQ-date时间看完了,那今天的是某一个日期,明天的就是新日期,这样的话数据名文件名是不不不会覆盖,OK,后面这种写法是标准写法,哎,包括前面我们也见了这种写法。一样的,这个的作用是啥?我们讲过and后面加这个大于号,它的作用是不论是正确输出还是错误输出,是不是都输出到一个文件当中,比如说写在ABC,是不是就会把正确输出、错误输出都写在文件里,对吧?那如果是把它写在。这个奴力no是一个我们系统自带的这样一个,呃,你可以理解为是一个虚拟设备,可以理解为是回收站,任何信息丢进去,任何信息丢进去它就会消失不见。
12:00
那为啥要这样,原因很简单,他不论是这个日期备份。还是这个这个压缩,它是不是都会有一些提示啊。哎,我问你啊,比如说压缩,呃,T,我这里有些什么文件,T-ZCVF,然后把它压缩成sh.K点压缩SH目录,你看它是不是会有提示我压了什么东西。那这些提示我是通过这个命令,我是通过写脚本来运行的,那这个提示是不是就没有意义了,所以我把它的所有输出,这条命令的输出干嘛丢到回收站。就是不论你输出什么,我都不看,这就是这条语句的作用。诶,这样的话,是不是就脚本执行完,是不是什么都不会,就这些干扰性的输出就不会有了,如果有输出就应该是报错,所以我们一般执行脚本的时候,如果命令有输出,都会加这样一句话,把它的输出给屏蔽掉,就是这个目的。好,然后呢。
13:01
把压缩文件给,不是把刚刚那个临时文件,因为这个临时文件已经打到了数据包里吗?那这个文件是不是就用不着了,就给删掉,诶这是第一种情况,如果这个目录存在,那么就这么干。否则。不存在怎么办?建立目录,然后再做之前的操作,一模一样。OK,这就是一个数据库的备份的例子,那我再说啊,这个例子是有一定的局限性的,它是有一定局限性的,所以呢,各位这个例子呢,我们说它最大的局限,其实最大的局限是。最大的局限还真不是说是,呃,完整备份,增量备份问题,它最大的局限是把备份数据和原始数据写在了一块硬盘,写在了一块硬盘,这个是不合理的。那么还有一个局限就是它只能实现完全备份,对吧?再一个局限就是通过这种把整个库文件打包过来,它必须要求版本是完全一样的,否则没法用,那我们说这个完全备份增量备份版本的问题,当我们学完买三号,我们学完了买色号。
14:06
当铺这个玩意儿就能解决这个备份在一块硬盘里,我们后面学完了SYNC这种异步同步这个SYNC啊,不是不是不是不是这个SC啊,这种这个呃,就是异地备份的这种服务器,学完之后这个东西就可以解决,OK,那暂时呢,我们就只能写这样一个东西,当然我再说这些东西写完之后,我后面就算讲完了这个东西,我也不会再写这个脚本了。如果你们需要自己在我这个上面去增去加,然后最终变成合理的,诶这也是我们说小程序一个重要的作用,就是一个方法,让你干嘛可以在里面干嘛,可以学到更多的东西,好那双分制备份呢,我们先举这样一个例子,那我们这节课呢,就到就到这儿,我们下节课呢再见。
我来说两句