运维工程师面试题总结-MySQL企业级实战及集群架构07

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 个人学习

1. 如何用MySQL 命令进行备份和恢复?以test 库为例,创建一个备份,并再用此备份进行恢复

备份:mysqldump -u root -p test > test.sql

恢复:mysql < test.sql

2. 在mysql客户端查询工具中,如何获取当前的所有连接进程信息

show full processlist\G

3. 如何删除已满的数据库日志信息

在my.cnf中的[mysqld]段下面加入:expire-logs-days=7(设置自动清除7天前的logs),重启mysql; 或者登录mysql,执行:purge binary logs to 'mysql-bin.000003'; 删除bin-log(删除mysql-bin.000003之前的而没有包含mysql-bin.000003) 如果是mysql主从环境的,删除日志,语句格式如下: PURGE {MASTER | BINARY} LOGS TO ‘log_name’ PURGE {MASTER | BINARY} LOGS BEFORE ‘date’

4. 新安装MYSQL后怎样提升MYSQL的安全级别

一、 删除test数据库:drop database test; 删除不用的用户:drop user 'root'@'::1'; drop user ''@'centos6-2'; drop user ''@'locaohost'; 或全部删除,添加管理员:delete from mysql.user; grant all privileges on *.* to system@'localhost' identified by '123456' with grant option;

二、 对用户设置较复杂密码并严格指定对应账号的访问IP(可在mysql库中user表中指定用户的访问可访问 IP地址,root限制为只允许本地登陆)

三、开启二进制查询日志和慢查询日志

四、mysql安装目录及数据目录权限控制:给mysql安装目录读取权限,给mysql日志和数据所在目录读取和写入权限

五、修改mysql默认端口,linux下可以通过iptables来 限制访问mysql端口的IP地址

5. MYSQL的主从原理,怎么配置文件

A.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

B.slave将master的binary log events拷贝到它的中继日志(relay log);

C.slave重做中继日志中的事件,将改变反映它自己的数据。

(1)Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的 日志内容;

(2)Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位 置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信 息在Master端binary log文件的名称以及在Binary log中的位置;

(3)Slave的IO线程收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog文件(mysqlrelay-lin.xxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文 件中,以便在下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内 容,请发给我”

(4)Slave的SQL线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在Master 端真实执行时候的那些可执行的查询或操作语句,并在自身执行那些查询或操作语句,这样,实际上就是在 master端和Slave端执行了同样的查询或操作语句,所以两端的数据是完全一样的。

6. mysql主从复制的优点

<1> 如果主服务器出现问题, 可以快速切换到从服务器提供的服务;

<2> 可以在从服务器上执行查询操作, 降低主服务器的访问压力;

<3> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。

7. 什么是裸设备,他的好处是什么?,mysql支持裸设备吗?

裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。

好处:因为使用裸设备避免了再经过操作系统这一 层,数据直接从Disk到数据库进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数 据库系统的性能。当然,这是以磁盘的 I/O 非常大,磁盘I/O已经成为系统瓶颈的情况下才成立。如果磁盘 读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大 甚至可以提高至40%,非常明显。 mysql支持裸设备

8. socket和tcp访问mysql的区别?

B树,每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为nul,叶子结点不包含任何关键 字信息。

B+树,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接 所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (而B 树的非终节点也包含需要查找的有效信息)

9. MySQL高可用方案有哪些,各自特点,企业如何选择?

1. 主从复制+读写分离 优点:成本低、架构简单、易实施、维护方便 缺点:master出现问题后不能自动到slave上,需要人工干涉。

2. MySQL Cluster 优点:安全性高,稳定性高。可以在线增加节点 缺点:架构复杂,至少三个节点,对于引擎只能用ndb,不支持外键,管理复杂,部署费时而且是收费的。

3. Heartbeat /keepalived+双主从复制 优点:安全性、稳定性高,出现故障系统将自动切换,从而保证服务的连续性。 缺点:可能会发生脑裂

4. HeartBeat+DRBD+MySQL 优点:安全性、稳定性、出现故障系统将自动切换,从而保证服务的连续性。 缺点:只用一台服务器提供服务,成本高,可能发生脑裂

10.如何授权test1用户从172.16.1.0/24访问数据库

mysql> grant all on *.* to test1@'172.16.1.%' identified by '123456';

11. 什么是MySQL多实例,如何配置MySQL多实例?

在一台服务器上,mysql服务开启多个不同的端口,运行多个服务进程,这些mysql服务进程通过不同的 socket来监听不同的数据端口,进而互不干涉的提供各自的服务。

12. mysql的权限怎么管理?

只给insert,update,select和delete四个权限即可。对权限管理比较严格的情况delete也不会给,让研 发走逻辑删除位标识。

13. MySQL Sleep线程过多如何解决?

mysql> show processlist\G

# mysqladmin -uroot -p123456 processlist

修改my.cnf文件里的wait_timeout的值,让其更小一些,默认wait_timeout =28800,这里改为100

mysql> set global wait_timeout=100; mysql> show global variables like "wait_timeout";

14. sort_buffer_size参数作用?如何在线修改生效?

mysql执行排序使用的缓冲大小。如果想要增加order by的速度,首先看是否可以让mysql使用索引而不是 额外的排序阶段,如果不能,可以尝试增加sort_buffer_size变量的大小。

mysql> set global sort_buffer_size =131072; #单位为B,即128KB,默认64K

15. 如何在线正确清理MySQL binlog?

自动清除

mysql> set global expire_logs_days=30; #设置binlog过期时间为30天 手动清除

mysql> purge binary logs to "mysql-bin.000007"; #/删除mysql-bin.000007之前的所有 binlog日志

16. 误操作执行了一个drop库SQL语句,如何完整恢复?

如果条件允许,操作前最好禁止外面一切服务器访问mysql数据库,这里假设禁止外面访问数据库,具体步骤 如下:

1 手动切割binlog日志并记好切割好的binlog日志文件位置,这里假设为009,备份全部binlog日志

2 找到之前全备数据最后备份到的binlog文件位置并记好位置,这几假设为005

3 用mysqladmin命令将005到008binlog文件中的SQL语句分离出来,并找到drop库的语句将其删掉

4 将之前全备数据导入mysql服务器

5 将步骤3中分离出的SQL语句导入mysql服务器

6 将009binlog文件删除,再次刷新binlog日志,到此数据库已恢复成功

17. 详述MySQL主从复制原理及配置主从的步骤

1 主:binlog线程,记录所有改变了数据库数据的语句,放进master上的binlog中

2 从:IO线程,在使用start slave之后,负责从master上拉取binlog内容,放进自己的relay log中

3 从:SQL执行线程,执行relay log中的语句。

配置步骤:

1 主库开启binlog日志功能

2 全备数据库,记录好binlog文件和相应的位置

3 从库上配置和主库的连接信息

4 将全备数据导入从库

5 从库启动slave

6 在从库上查看同步状态,确认是否同步成功

18. MySQL出现复制延迟有哪些原因?如何解决?

1 一个主库的从库太多,导致复制延迟 建议从库数量3-5个为宜,要复制的从节点数量过多,会导致复制延迟

2 从库硬件比主库差,导致复制延迟 查看master和slave的系统配置,可能会因为机器配置问题,包括磁盘IO、CPU、内存等各方面因素造成复制 的延迟,一般发生在高并发大数据量的写入场景。

3 慢SQL语句过多 假如一条SQL语句执行时间是20秒,那么执行完毕到从库上能查到数据也至少是20秒,可以修改后分多次写 入,通过查看慢查询日志或show full processlist命令找出执行时间长的查询语句或者大的事务。

4 从复制设计问题 主从复制单线程,如果主库写并发太大,来不及传送到从库就会导致延迟。更高版本的mysql可以支持多线程 复制,门户网站则会自己开发多线程同步功能。

5 主从库之间网络延迟 主从库的网卡,网线,连接的交换机等网络设备都可能成为复制的瓶颈,导致复制延迟,另外,跨公网主从复 制很容易导致主从复制延迟。

6 主库读写压力大,导致复制延迟 主库硬件要搞好一点,架构的前端要加buffer。

19. 请详细描述char(4)和varchar(4)的差别

char(4)定义的是固定长度4,存储时,如果字符数不够4位,会在后面用空格补全存入数据库。

varchar(4)定义的是变长长度,存储时,如果字符没有达到定义的位数4时,也不会在后面补空格。

20. 如何监控主从复制是否故障?

查看slave端的IO和SQL进程状态是否OK,同步延迟时间是否小于1分钟

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

21.生产一主多从从库宕机,如何手工恢复?

处理方法:重做slave 1. 停止slave 2. 导入备份数据 3. 配置master.info信息 4. 启动slave 5. 检查从库状态

22. MySQL的SQL语句如何优化?

1. 在表中建立索引,优先考虑where、group by使用到的字段

2. 尽量避免使用select *,返回无用的字段会降低查询效率

3. 尽量避免使用in和not in,会导致数据库引擎放弃索引进行全表扫描

4. 尽量避免使用or,会导致数据库引擎放弃索引进行全表扫描

5. 尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描

23.如果发现CPU,或者IO压力很大,怎么定位问题?

1、首先我会用top命令和iostat命令,定位是什么进程在占用cpu和磁盘io;

2、如果是mysql的问题,我会登录到数据库,通过show full processlist命令,看现在数据库在执行什 么sql语句,是否有语句长时间执行使数据库卡住;

3、执行show engine innodb status\G命令,查看数据库是否有锁资源争用;

4、查看mysql慢查询日志,看是否有慢sql;

5、找到引起数据库占用资源高的语句,进行优化,该建索引的建索引,索引不合适的删索引,或者根据情况 kill掉耗费资源的sql语句等

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
1月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
162 3
Mysql高可用架构方案
|
1月前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
【赵渝强老师】MySQL的体系架构
|
23天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
67 4
|
27天前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
27天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
68 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
1月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
61 4
|
2月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
104 1