Linux运维工程师面试题(5)

简介: Linux运维工程师面试题(5)1 SELECT 语句处理的顺序2 MySQL 高可用方案有哪些3 mysql 主从复制原理4 mycat 读写分离原理5 MHA 高可用原理6 mysqldump 备份的原理7 drop, delete 与 truncate 的区别,哪个最快8 判断主从延迟的方法9 MySQL 主要的索引类型10 MySQL 中 myisam 与 innodb 的区别

[toc]

Linux运维工程师面试题(5)

祝各位小伙伴们早日找到自己心仪的工作。
持续学习才不会被淘汰。
地球不爆炸,我们不放假。
机会总是留给有有准备的人的。
加油,打工人!

1 SELECT 语句处理的顺序

查询执行路径中的组件:查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎

SELECT语句的执行流程:

FROM Clause --> WHERE clause --> GROUP BY --> HAVING clause --> SELECT --> ORDER BY --> LIMIT

2 MySQL 高可用方案有哪些

  • 主从复制+mycat 读写分离
  • MHA(Master High Availability)
  • Galera Cluster

3 mysql 主从复制原理

用户提交数据更新到主库,主库会生成二进制日志,写入到 bin log 中;主库开启 dump 线程,用来给从库的 io 线程传送 bin log;从库的 io 线程去请求主库的 bin log,并将得到的 bin log 写入到中继日志(relay log)中,sql 线程会读取 relay log 文件中的日志,并解析成具体的操作,来执行数据库更新,保证主库和从库数据一致,完成主从复制。

4 mycat 读写分离原理

Mycat 的原理中最重要的一个动词是"拦截",它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了—些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

5 MHA 高可用原理

  1. 从宕机崩溃的 master 保存二进制日志事件(bin log events);
  2. 识别含有最新更新的 slave;
  3. 应用差异的中继日志(relay log)到其他的 slave;
  4. 应用从 master 保存的二进制日志事件(bin log events);
  5. 提升—个 slave 为新的 master;
  6. 使其他的 slave 连接新的 master 进行复制。

6 mysqldump 备份的原理

是一个 mysql 的客户端命令,通过 mysql 协议连接至 mysql 服务器进行备份。mysqldump 命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。它先使用 select 查出需要备份表的数据和需要备份的表的结构,再在文本文件中生成一个 CREATE 语句。然后将表中的所有记录转换成一条 INSERT 语句。然后通过这些语句,就能够创建表并插入数据。其实就是相当于模拟mysql客户端去连接数据库,将mysql中的数据生成一个标准输出,在屏幕打印,一般配合标准输出重定向,导入到一个文件中。mysqldump 整体备份的基本流程如下:

  1. 调用 FTWRL(flush tables with read lock),全局禁止写。
  2. 开启快照读,获取此时的快照(仅对 innodb 表起作用)。
  3. 备份非 innodb 表数据( .frm、.myi、.myd 等)。
  4. 非 innodb 表备份完毕后,释放 FTWRL 锁。
  5. 逐一备份 innodb 表数据。
  6. 备份完成。

7 drop, delete 与 truncate 的区别,哪个最快

drop 直接删掉表;truncate 删除表中数据,再插⼊时自增长id又从1开始;delete 删除表中数据,可以加 where 子句。想要删除部分数据用 delete;想要删除表用 drop; 想保留表但是把数据删除,如果和事务无关用 truncate。

  1. delete 语句执⾏删除的过程是每次从表中删除⼀⾏,并且同时将该⾏的删除操作作为事务记录在⽇志中保存以便进⾏回滚操作。truncate table则⼀次性地从表中删除所有的数据并不把单独的删除操作记录记⼊⽇志保存,删除⾏是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器,执⾏速度快。
  2. 表和索引所占空间。当表被 truncate 后,这个表和索引所占⽤的空间会恢复到初始⼤⼩,⽽ delete 操作不会减少表或索引所占⽤的空间。drop 语句将表所占⽤的空间全释放掉。
  3. ⼀般⽽⾔,在删除速度上,drop > truncate > delete。
  4. 应⽤范围:truncate 只能对 table,delete 可以是 table 和 view。
  5. truncate 和 delete 只删除数据,⽽ drop 则删除整个表(结构和数据)。
  6. truncate 与不带 where 的 delete:只删除数据,⽽不删除表的结构(定义);drop 语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

8 判断主从延迟的方法

通过命令 show slave status 查看 seconds_behind_master 的值来判断

NULL - 表示 io_thread 或是 sql_thread 有任何一个发生故障,也就是该线程的 Running 状态是 No,而非Yes。

0 - 该值为零,是我们极为渴望看到的情况,表示主从复制状态正常。

9 MySQL 主要的索引类型

  • 普通索引:是最基本的索引,它没有任何限制;
  • 唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
  • 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
  • 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
  • 全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较,mysql 中 MyISAM 支持全文索引而 InnoDB 不支持;

10 MySQL 中 myisam 与 innodb 的区别

  1. innodb⽀持事物, myisam不⽀持事物
  2. innodb⽀持⾏级锁, myisam⽀持表级锁
  3. innodb⽀持MVC, myisam不⽀持
  4. innodb⽀持外键, myisam不⽀持
  5. innodb不⽀持全⽂索引,myisam⽀持

关于我
全网可搜《阿贤Linux》
CSDN、知乎、哔哩哔哩、博客园、51CTO、掘金、思否、开源中国、阿里云、腾讯云、华为云、今日头条、百家号、GitHub、个人博客
公众号:阿贤Linux
个人博客:blog.waluna.top
https://blog.waluna.top/


原文链接: Linux运维工程师面试题(5).

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
6天前
|
域名解析 网络协议 安全
|
13天前
|
运维 监控 网络协议
|
1月前
|
存储 运维 搜索推荐
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
76 8
|
3月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
64 4
|
3月前
|
运维 Kubernetes 关系型数据库
云计算运维工程师面试技巧
【8月更文挑战第6天】
359 1
|
4月前
|
弹性计算 运维 Linux
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot
OS Copilot 概述与体验评测摘要 阿里云的OS Copilot是一款基于大模型的智能操作系统助手,作为高级运维工程师,体验者发现它在系统诊断和性能优化上尤其有用,简化了如重置ECS密码和安全组配置等任务,提升了工作效率。 OS Copilot的易用性和安全性得到肯定,操作手册详细且交互性强,减少了用户在不同页面间切换的需要。在辅助编程方面,它能帮助非专业开发者编写和理解代码,对运维工作中的开发技能补充有很大帮助。与GitHub Copilot等产品相比,OS Copilot的独特之处在于结合了Linux操作的支持。
226 3
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot
|
3月前
|
Ubuntu Linux Shell
这7个重要的Linux命令,每一位Linux工程师都必须盘它!
这7个重要的Linux命令,每一位Linux工程师都必须盘它!
|
5月前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
574 14
|
4月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
69 0

热门文章

最新文章