2020 Linux运维常见面试题

1、画出系统应用架构图

2、写出LVS与nginx的区别:
LVS:抗负载能力很强,工作4层,配置简单,很稳定,不产生流量
nginx:工作在网络第7层 ,支持http应用进行分流

3、当前数据库服务处理速度慢,你认为可能是什么原因导致的,并阐述一下对应的解决办法
服务器硬件问题(磁盘I/O,内存不足)
带宽不足
服务器系统参数问题
程序设计问题,没有建立索引
数据量过大(分区,分表,分库 联合查询)
查询语句问题(优化查询语句)

4、说一下你知道的存储引擎,建表时如何决定表使用存储引擎
InnoDB存储引擎
MyISAM存储引擎
MEMORY存储引擎
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
5、单张表过大有什么缺点,如何解决
很难在短时间内过滤出需要的数据 要在大数据量的表中筛选出来其中一部分数据会产生大量的磁盘 io 降低磁盘效率
建立索引需要很长的时间
Mysql <5.5 建立索引会锁表
Mysql >=5.5 建立索引会造成主从延迟
修改表结构需要长时间的锁表,会造成长时间的主从延迟
解决方法:
分区、分表、分库查询
6、给你50台服务器,阐述一下你的拓扑结构如何设计
Ceph Admin1台 OSD,MDS 6台
Keepailved+LVS 1主 3从
Nginx+PHP 10台
NFS 1台
Redis+sentinel 1主 4从
Mycat+keeplived 1主 3从
Mysql+MGR 1主 9从
备份机 1台
Jumpserver 1台
Grafana 1台
Zabbix 1台
GitLab 1台
Jenkins 1台
ELK 2台
容灾1台

7、如果你是数据库管理员,阐述一下你如何给服务器添加授权用户
每个服务对应一个运行用户,对于用户进行指定网段,ip授权

8、若你是数据库管理员,阐述一下你如何对数据做备份
采用逻辑备份,每天定时mysqldump推送数据至外网备份机,做定时任务定期删除历史备份。

9、目前常见的数据库软件有哪些,搭建数据库集群的时候,你如何选择使用哪种软件
Oracle、SQL Server 、Mysql、MariaDB、Redis、Mongodb
oracle数据库是一种大型的关系型数据库,在使用上会收费经常会使用于银行和金融机构,存储大量数据,可以对海量数据进行分析处理,在安全性上使用访问控制和多种数据备份机制,可靠性高。
MySQL,作为一种开源的轻量级数据库,在开源数据库中比较流行,由于小巧安装方便快捷,经常会用于互联网公司,维护也比较方便,在功能上mysql可能没有oracle强大,但是对于资源的占用非常少,数据恢复快。在维护上,追求稳定的性能和易用性。
redis作为一种缓存数据库,对于数据的读写特别快,redis之所以快,是因为它数据放在内存中,但是内存比较贵,另一方面,内存也是有限制的,当内存不够时,就需要使用redis的分布式方案。redis作为一种非关系型数据库,可以适用于高并发场景,配合关系型数据库作为做高速缓存,也可以降低磁盘IO,使用键值对存储,不适用于结构复杂的sql数据
Mongodb适用于网站的实时存储的复制和高度伸缩型,具有很强大的实时存储,插入和查询功能。此外,Mongodb非常适用地址坐标的查询,适用于lbs应用。缺点也很明显,虽然使用sql查询的方式,但是和mysql查询存在差距;在事务处理上,没有保证

10、mysql数据库服务,数值类型宽度的作用是什么?
不论中文还是英文还是标点,加起来能输入的个数

11、配置mysql主从同步前,如何保证主库与从库的数据一致
数据库锁表,将完整备份的数据库导入从库

12、你觉得信息在传递中有哪些风险
通过抓包导致数据泄露,请求的数据被修改,数据被中间人监听,再次发送给服务器

13、监控一台服务器时,你觉得应该监控服务器的哪些资源
CPU、内存、硬盘空间、负载、虚拟内存、应用服务、日志、流量

14、对称加密和非对称加密的区别
对称加密: 加密和解密的秘钥使用的是同一个.
非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥和私有密钥

15、如何获知一台主机上的网站服务是否在运行
使用Zabbix监控程序对网站服务进行监控
使用脚本实时检测网站服务状态

16、如何让系统的普通用户拥有root权限,什么情况下需要这么做修改。
通过修改/etc/sudoers文件使普通用户可以执行sudo明令
如普通用户用date命令修改系统日期等。date命令需要root权限才能执行

17、openstack的组件有哪些?
Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板
Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API进行通信
Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面
Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为Dashboard

18、配置httpd服务器时,如何快速添加新的虚拟主机
Alias /phpdata/ “/usr/local/phpdata/”
<Directory “/usr/local/phpdata/”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

19、杀死进程的命令有哪些?
Kill killall kill -9
20、mysql的原理是啥
Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。
更新一条语句的流程。
update tb_area SET area_name = “beijing” WHERE area_id = 1
1) 首先执行器通过id查到这条记录(搜索树或者查找数据页) ,并加载到内存中。
2)然后对这条记录的area_name调用引擎写入接口,进行修改。
3)修改内存中的值,同时更新redolog告知执行器完成写入(状态置为prepare),可以提交事务,执行器将这条操作记录记录在binlog,写入磁盘
4)完成上述一系列的操作,执行器调用事务提交接口(redolog状态置为commit),完成更新操作。
如需要看更多面试题目可以关注51cto学员搜张凯:
https://edu.51cto.com/sd/9529c

猜你喜欢

转载自blog.csdn.net/qq_39418469/article/details/108618983