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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 个人学习

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语句等

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
80 3
Mysql高可用架构方案
|
20天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
108 3
|
11天前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
【赵渝强老师】MySQL的体系架构
|
10天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
32 4
|
12天前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
22 1
|
18天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
56 4
|
28天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
1月前
|
设计模式 测试技术 持续交付
架构视角下的NHibernate:设计模式与企业级应用考量
【10月更文挑战第13天】随着软件开发向更复杂、更大规模的应用转变,数据访问层的设计变得尤为重要。NHibernate作为一个成熟的对象关系映射(ORM)框架,为企业级.NET应用程序提供了强大的支持。本文旨在为有一定经验的开发者提供一个全面的指南,介绍如何在架构层面有效地使用NHibernate,并结合领域驱动设计(DDD)原则来构建既强大又易于维护的数据层。
38 2
|
19天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
92 0
|
10天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
25 1