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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 个人学习

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
安全 关系型数据库 MySQL
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
11 3
|
3天前
|
SQL 关系型数据库 MySQL
不允许你不知道的 MySQL 优化实战(一)
不允许你不知道的 MySQL 优化实战(一)
11 2
|
5天前
|
关系型数据库 MySQL 中间件
【MySQL实战笔记】07 | 行锁功过:怎么减少行锁对性能的影响?-02 死锁和死锁检测
【4月更文挑战第19天】在高并发环境下,死锁发生在多个线程间循环等待资源时,导致无限期等待。MySQL中,死锁可通过`innodb_lock_wait_timeout`参数设置超时或`innodb_deadlock_detect`开启死锁检测来解决。默认的50s超时可能不适用于在线服务,而频繁检测会消耗大量CPU。应对热点行更新引发的性能问题,可以暂时关闭死锁检测(风险是产生大量超时),控制并发度,或通过分散记录减少锁冲突,例如将数据分拆到多行以降低死锁概率。
19 1
|
8天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
29 6
|
9天前
|
存储 Oracle 关系型数据库
【MySQL面试题pro版-12】
【MySQL面试题pro版-12】
15 0
|
9天前
|
SQL 关系型数据库 MySQL
【MySQL面试题pro版-10】
【MySQL面试题pro版-10】
15 1
|
9天前
|
缓存 关系型数据库 MySQL
【MySQL面试题pro版-9】
【MySQL面试题pro版-9】
21 1
|
9天前
|
存储 SQL 关系型数据库
【MySQL面试题pro版-8】
【MySQL面试题pro版-8】
13 0
|
9天前
|
存储 SQL 关系型数据库
【MySQL面试题pro版-7】
【MySQL面试题pro版-7】
20 0
|
5天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用