运维实施面试题

记得不是很清楚了,大概回忆一下
1集线器,路由器。交换机的区别
术语解释
  路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
  交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
  集线器:(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。
路由器和交换机的区别
  路由器 交换机
工作层次 网络层 数据链路层
转发依据 IP地址 Mac地址
功能 连接不同的网络 连接局域网中的电脑
宽带影响 共享宽带 独享宽带
交换机最大的好处是快速,路由器最大的好处是控制能力强。
  路由器是连接不同的网段的,负责将局域网连接到广域网和互联网中,并找到网络中数据传输最合适的路径。大家通过同一个路由器上网共用一个宽带,上网要相互影响。
  简单的说路由器专管入网,交换机只管配送,路由就是给你找路让你上网的,交换机只负责开门,交换机上面要没有路由你是上不了网的。
2视图和表的区别
1、视图是已经编译好的sql语句,而表不是。
2、视图没有实际的物理记录,而表有。
3、表是内容,视图是窗口。
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改。
5、表是内模式,试图是外模式。
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
9、不能对视图进行update或者insert into操作。
联系:
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
总结:
视图是一个子查询,性能肯定会比直接查询要低(尽管sql内部有优化),所以使用视图时有一个必须要注意的,就是不要嵌套使用查询。尤其是复杂查询。

视图有什么用:

1、当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西。
2、系统的数据库管理员,需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这时可以建一个只有这两列数据的视图,然后把视图公布给他。

性能损失解决方案:

对视图的查询语句进行优化。
通常来说直接查询和查询视图是没有什么区别的(sql 本身会进行优化),除非是视图嵌套了视图,或者子查询很复杂要计算。
特别说明:
每次SELECT视图的时候,视图都会重新计算创建它的规则(sql算法),如果算法复杂,数据量大,就会比较慢,那样每次就很慢了。
而且,表的索引对于视图view来说是无效的,它是全表扫描的。
3存储过程和函数的区别
存储过程和函数目的是为了 可重复地 执行操作数据库的sql语句的集合。
区别是写法和调用上。
写法上:存储过程的参数列表可以有输入参数、输出参数、可输入输出的参数;
函数的参数列表只有输入参数,并且有return <返回值类型,无长度说明>。
返回值上:
    存储过程的返回值,可以有多个值,
函数的返回值,只有一个值。
调用方式上:
    存储过程的调用方式有:
1)、exec <过程名>;
2)、execute <过程名>;
3)、在PL/SQL语句块中直接调用。
函数的调用方式有:
      在PL/SQL语句块中直接调用。
具体分为:
  ----调用FUNCTION add_three_numbers
  ----1. 位置表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(2,4,5));
  END;
  ----2. 命名表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(b=>3, a=>4,c=>2));
  END;
  ----3. 混合使用位置表示法和命名表示法调用函数
  BEGIN
  dbms_output.put_line(add_three_numbers(3, b=>4,c=>2));
  END;
  ----4. 排除表示法
  BEGIN
  dbms_output.put_line(add_three_numbers(12,c=>2));
  END;
  ----5. sql调用表示法 --混合表示法
  SELECT add_three_numbers(3, b=>4,c=>2) FROM DUAL;
----1. 该函数接受3个可选参数,返回3个数字的和
  CREATE OR REPLACE FUNCTION add_three_numbers
  (
  a NUMBER:=0, b NUMBER:=0, c NUMBER:=0
  )
  RETURN NUMBER IS
  BEGIN
  RETURN a+b+c;
  END;
4什么是raid,简述你的理解
本文主要讲我对RAID0~7的简单介绍,和简单理解

RAID是英文Redundant Array of Independent Disks的缩写,即磁盘冗余阵列。RAID就是一种由多块硬盘组成的冗余阵列。虽然它包含多块硬盘,但是在系统中是作为一个独立的大型设备出现的。

RAID设备的好处有以下几种:多磁盘组织在一起作为一个逻辑卷提供磁盘跨越功能;把数据分成多个数据块,并行写入、读取,提高运行速度;通过镜像或娇艳操作提供容错能力。经常使用的是RAID(0+1)和RAID5

下面就几种常用的RAID模式简要介绍:

RAID0 没有容错设计的条带磁盘阵列:

RAID0并不是真正的RAID结构,因为没有数据冗余,没有数据校验的磁盘阵列。它将两块硬盘合并成一块硬盘,数据会连续的写在两块硬盘上,因为是同步的,因此带宽加倍。我小时候不懂raid原理,但是看网上的评测确实能达到二倍的传输速率,没有什么损耗。并且组成raid0的两块硬盘容量可以相同。

RAID1:

RAID1通过磁盘数据镜像实现数据冗余,在成对的独立硬盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据。RAID1是磁盘阵列中单位成本最高的,但是提供了很高的数据安全性和可用性。当一个磁盘损坏时,系统可以自动切换到镜像磁盘上进行读写。

组成RAID1阵列的两块硬盘的容量仅相当于一块硬盘的容量,因为另一块硬盘只是当做数据的镜像的,显然,它是最可靠的一种磁盘阵列。但是论性能就没有RAID0那么的好了,但是相对一块硬盘,读取速度会稍微快一些,因为会选择速度比较快的硬盘进行读取。但是RAID1磁盘阵列的读取速度通常比较慢,因为数据要分别写入两块硬盘并作比较。并且RAID1支持热交换,就是说在系统运行过程中可以随时插拔一块硬盘而保证系统的运行,数据安全性相当高。

RAID 0+1:

这种RAID方案需要四块硬盘,其容量只能达到两块硬盘的量,是存储性和数据安全兼顾的方案,在提供与RAID1一样的数据安全的同时也保证了跟RAID0近似的存储性能。

RAID 1+0:

先对磁盘做镜像,然后对整个镜像做条带化,即先raid1在做raid0,允许所有磁盘基组

RAID 0+1 和 RAID 1+0的比较:

RAID0+1:性能上更好,但是一旦损坏,做恢复就很麻烦,rebuild~

RAID1+0:安全性更好,只要不是硬盘对同时损坏就没事,即使坏一个恢复也快。但是写性能比前者略低(读性能一样)

RAID 2:

RAID2是RAID0的改良版,以海明码的方式将数据进行编码后分割为独立的单元,并将数据分别写在硬盘中,因为加入了错误修正码,所以占用空间会稍微大一点。它主要为大型机和超级计算机设计,技术繁琐,商业环境中极少使用,适用于影像处理或者CAD、CAM的工作站等。

RAID3:

它是把数据分成多个块,按照一定的容错算法,存放在N+1个磁盘上,实际的容量是按照N个磁盘计算,最后一个磁盘存储的数据是校验容错的信息,当其中一个磁盘出现故障时,从其他N+1个硬盘上的数据也可以恢复原始数据,仅使用这N个硬盘也可以继续带伤工作,一般情况下,所有硬盘都损坏的概率是极小的,所以RAID3阵列还是非常安全的。

工作原理:数据存取方式和raid2一样,把数据以位为单位来分割并且存储到各个硬盘上,在数据校验上用奇偶校验代替海明码,额外的一个硬盘就是校验盘。

缺点:校验盘很可能成为整个系统的瓶颈

RAID5:

这是一种存储性能、数据安全和存储成本兼顾的存储解决方案,可以理解为RAID0和RAID1的折中方案,具有和RAID0相似的存储性能,只是多了奇偶校验信息,而磁盘利用率要比RAID1高。RAID5不对数据进行备份,而是把数据和与其对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对的数据分别存储在不同的磁盘上。当RAID5的一个磁盘数据损坏后,利用剩下的数据和相应地奇偶校验信息去回复被损坏的数据。

RAID6:

RAID6是在RAID5的基础上,为了加强数据保护提出的一种RAID模式,实际上是一种扩展的RAID5模式,与RAID5的不同之处在于除了每个硬盘上都有统计数据XOR校验区之外,还有针对每个区块的XOR校验区。RAID6是非常新的RAID模式,那么它自然有不错的性能,但是由于RAID模块控制的造价比较高,一般不会集成在普遍的主板中。

那么性能如何呢? 随机读:很好(大数据块时);随机写:差;持续写:好(小数据块);持续写:一般;

优点:快速读取性能,更高的读取能力。

缺点:很慢的写入速度,RAID控制器成本太高。
5网线交叉线和平行线区别
交叉线两头使用不同的线序:一头是T568B线序一头是T568A线序。
平行线两头都用B类线序。

可以这样以为:交叉线用于同类设备的连接。平行线用于另类设备的连接。
PC和HUB不是同类设备所以用的是平行线。
6oracle,mysql,sqlserver,mangodb
一、MySQL
MySQL小型高可用架构
方案:MySQL双主、主从 + Keepalived主从自动切换

服务器资源:两台PC Server
优点:架构简单,节省资源
缺点:无法线性扩展,主从失败之后需要手动恢复主从架构

MySQL中型高可用架构
方案:MMM + MySQL双主 + 多从高可用方案

服务器资源:
1、至少五台PC Server,2台MySQL主库,2台MySQL从库,1台MMM Monitor;
2、1台MMM Monitor选择低配;
3、如果不采用F5作为从库的负载均衡器,可用2台PC SERVER部署LVS或HAProxy+Keepalived组合来代替;
优点:双主热备模式,读写分离,SLAVE集群可线性扩展
缺点:读写分离需要在程序端解决,Master大批量写操作时会产生主从延时

MySQL大型高可用架构
主要思路:中间件+MySQL Sharding
如方案:Cobar等中间件+MySQL技术
图片略。

另外,还分享些MySQL一些主流的高可用架构
1、MySQL双主 + Keepalived主备自动切换方案(上面已有)
2、MySQL主从 + Keepalived主从自动切换方案(上面已有)
3、MMM+MySQL双主 + 多从高可用方案(上面已有)
4、MySQL + Pecemaker(Heartbeat) + DRBD高可用
5、MySQL + RHCS 高可用方案
6、MySQL + Cluser 集群架构
7、Percona Xtradb Cluster 集群高可用性解决方案
8、中间件 + MySQL 大型集群解决方案(上面已提到)

MySQL + Pecemaker(Heartbeat) + DRBD高可用 && MySQL + RHCS 高可用方案

Percona Xtradb Cluster 集群高可用性解决方案

MySQL多机房部署架构参考

二、Oracle
1、Oracle ActiveDataGuard

服务器资源:2台PC Server
1、Oracle自己的容灾系统,数据库完全冗余保护,可跨IDC部署;
2、Oracle 11g 以上版本Standby可Redo模式打开,可作为数据仓库使用,也可以作为备份数据库;
3、可切换,一般会采用手动切换方式。

2、Oracle RAC

服务器资源:至少两台PC Server作为RAC节点,SAN存储一台,
其他资源:光纤网络环境

RAC的特性:
1、高可用性:保证只要有一个存活的节点,就不会断业务,保持业务连续性
2、双机双工:RAC是并行模式工作的,节点间关系是Active对Active,每个节点都能为客户端提供服务
3、易伸缩:RAC的增加、删除节点非常方便
4、高吞吐量:节点数量和吞吐量是正比关系

3、Oracle MAA
方案:RAC+ASM+Standby(RAC)部署

服务器资源:RAC所需要资源*2
其他资源:异地机房
备注:MAA实质上就是RAC+DataGuard的结合体。

Oracle还有很多其他高可用架构,比如结合Oracle Golden Gate做复制等等……

三、MongoDB
MongoDB高可用架构
方案:MongoDB复制集+Sharding分片

服务器资源:
1、9台:6台PC Server作为shared节点,3台作为仲裁节点,三个Mongos和Config各部署在三个Shared节点上,如上图;
2、横向扩展分片,一组分片由3台PC Server构成;
3、仲裁节点服务器不存储实际数据,因此低配即可。

备注:
1、考虑到高可扩展问题,放弃MongoDB主从复制方案;
2、对数据安全要求非常高的业务,每组分片可由5台PC Server构成;
3、建议开发人员结合业务选出最合适的片键。

四、Redis
Redis小型高可用架构
方案:Redis主从复制+Keepalived实现Failover

服务器资源:两台PC Server
优点:架构简单,节省资源
缺点:主从切换有间隔,这期间客户端将收到错误

方案:Redis Sentinel实现Failover

服务器资源:
1、两台PC Server部署Redis,一台Redis Sentinel;
2、Redis可选择一主多从架构;
3、一台Redis Sentinel选择低配。
优点:Redis官方自带HA方案,Redis作者所编写,具备
缺点:发生Failover之后,客户端需要手动更正地址

Redis中型高可用架构
方案:Redis主从+Haproxy负载均衡

服务器资源:至少3台PC Server部署Redis主从,两台PC Server部署Haproxy
优点:读写分离,横向扩展Slave
缺点:Master为单点

Redis大型高可用架构
方案:Twemproxy实现Redis存储分片

服务器资源:至少6台PC Server部署Redis主从,至少3台PC Server部署Twemproxy,2台PC Server部署HAProxy
优点:分片,负载均衡,Redis和Twemproxy都可以横向扩展
缺点:Twemproxy所存在的缺点:
1、Twemproxy节点扩展,原来的数据需要重新处理分布,避免出现找不到key值;
2、扩展Redis节点,数据不会自动均匀分布,而需人工处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值