运维面试必问的MySQL高频面试题(2024年最新版)
mysql主从复制存在的问题:主库宕机后,数据可能丢失,从库只有一个sql Thread,主库写压力大,复制很可能延时。解决方法: 用半同步复制解决数据丢失的问题用并行复制解决从库复制延迟的问题。
mysql主从复制存在的问题:主库宕机后,数据可能丢失,从库只有一个sql Thread,主库写压力大,复制很可能延时。
解决方法: 用半同步复制解决数据丢失的问题
用并行复制解决从库复制延迟的问题。
4. MySQL复制的方法
级联复制:将主库的数据同步到级联库,然后级联库把自己的数据同步到从库上,这样可以减少主库的压力

半同步复制:
默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能,主库把binlog日志发送给从库即结束,并不验证从库是否接收完毕。这意味着当主库或从库发生故障时,有可能从库没有接收到主库发送过来的binlog日志,这就会造成主库和从库的数据不一致,甚至在恢复时造成数据的丢失。
在开启了半同步复制机制后,主库只有当有任意一台从库已经接收到主库的数据后,告诉主库。主库收到从库同步成功的信息后,才继续后面的操作。
5. 主从延迟产生的原因及解决方案?
-
主库的并发比较高的时候,产生的DDL数量超过了从库的一个sql线程所承受的范围,那么延时就产生了。
-
还有可能是与从库的大型query语句产生的了锁等待 。
-
网络抖动
解决方案:
1)、架构方面
1.业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。
2.单个库读写分离,一主多从,主写从读,分散压力。这样从库压力比主库高,保护主库。
3.服务的基础架构在业务和mysql之间加入memcache或者redis的cache层。降低mysql的读压力。
4.不同业务的mysql物理上放在不同机器,分散压力。
5.使用比主库更好的硬件设备作为slave总结,mysql压力小,延迟自然会变小。
2)、mysql主从同步加速
1、sync_binlog在slave端设置为0
2、–logs-slave-updates 从服务器从主服务器接收到的更新不记入它的二进制日志。
3、直接禁用slave端的binlog
6. 判断主从延迟的方法
可以通过命令 show slave status 查看
比如通过seconds_behind_master的值来判断
NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.
0 - 该值为零,是我们极为渴望看到的情况,表示主从复制状态正常
7. MySQL忘记root密码如何找回
-
在配置文件里加上skip-grant-tables ,重启MySQL
-
使用MySQL-uroot -p 进入
-
使用update 修改密码
mysql> USE mysql ;
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
8. MySQL的数据备份方式
工具一 MySQLdump工具备份
工具二: xtrabackup工具备份
备份分为:冷备,温备和热备
根据要备份的数据集合又分为: 完全备份,增量备份和差异备份
需要备份的对象:
-
数据
-
配置文件
-
OS相关的配置文件
-
代码: 存储过程,存储函数和处罚器
-
复制相关的配置
-
二进制日志
数据量比较大的时候用xtrabackup
基于MySQLdump做备份策略: 周日做全备,备份同时滚动日志
周一到周六:备份二进制文件
恢复的时候: 完全备份+二进制文件中到此处的事件
xtrabackup的特点:
1) 备份过程快速、可靠;
2) 备份过程不会打断正在执行的事务;
3) 能够基于压缩等功能节约磁盘空间和流量;
4) 自动实现备份检验;
5) 还原速度快;

逻辑备份: 类似于select * from 查询满足条件的备份
物理本分: 备份文件+日志文件
所以xtrabackup就是物理备份
MySQLdump就是逻辑备份
9. innodb的特性
一:插入缓冲
二:二次写
三:自适应哈希
四:预读
10. varchar(100) 和varchar(200)的区别
varchar(100)最多存放100个字符,varchar(200)最多存放200个字符,varchar(100)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样
11. MySQL主要的索引类型
普通索引:是最基本的索引,它没有任何限制;
唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;
全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较,mysql中MyISAM支持全文索引而InnoDB不支持;
12. 请说出非关系型数据库的典型产品、特点及应用场景?
MongoDB
特点:1.高性能,易部署,易使用。
2.面向集合存储,易存储对象类型的数据。
3.模式自由
4.自动处理碎片,以支持云计算层次的扩展性。
应用场景:
网站数据:mongodb非常适合实时的插入,更新与查询。
缓存:适合作为信息基础设施的缓存层
大尺寸、低价值的数据
高伸缩性的场景
Redis
特点:1.性能极高,能支持超过100k+每秒的读写频率
2.丰富的数据类型
3.所有操作都是原子性的
使用场景:
少量的数据存储,高速读写访问
SQLlite
特点:
1.嵌入式的,零配置,无需安装和管理配置
2.ACID事务
3.存储在单一磁盘文件中的一个完整的数据库。
应用场景:
1.需要数据库的小型桌面软件。
2.需要数据库的手机软件。
3.作为数据容器的应用场景。
13. 如何加强MySQL安全,请给出可行的具体措施?
1.避免直接从互联网访问mysql数据库,确保特定主机才拥有访问权限。
2.定期备份数据库
3.禁用或限制远程访问
在my.cnf文件里设置bind-address指定ip
4.移除test数据库(默认匿名用户可以访问test数据库)
5.禁用local infile
mysql> select load_file(“/etc/passwd”);
在my.cnf里[mysqld]下添加set-variable=local-infile=0
6.移除匿名账户和废弃的账户
7.限制mysql数据库用户的权限
8.移除和禁用.mysql_history文件
14. Binlog工作模式有哪些?各什么特点,企业如何选择?
1.row level行级模式
优点:记录数据详细(每行),主从一致
缺点:占用大量的磁盘空间,降低了磁盘的性能
2.statement level模式(默认)
优点:记录的简单,内容少 ,节约了IO,提高性能 缺点:导致主从不一致
3.MIXED混合模式
结合了statement和row模式的优点,会根据执行的每一条具体的SQL语句来区分对待记录的日志形式。对于函数,触发器,存储过程会自动使用row level模式
企业场景选择:
1.互联网公司使用mysql的功能较少(不用存储过程、触发器、函数),选择默认的statement模式。
2.用到mysql的特殊功能(存储过程、触发器、函数)则选则MIXED模式
3.用到mysql的特殊功能(存储过程、触发器、函数),有希望数据最大化一致则选择row模式。
15. 生产一主多从从库宕机,如何手工恢复?
处理方法:重做slave
-
停止slave -
导入备份数据 -
配置master.info信息 -
启动slave -
检查从库状态
16. MySQL中MyISAM与InnoDB的区别,至少5点
a. InnoDB支持事务,而MyISAM不支持事务。
b. InnoDB支持行级锁,而MyISAM支持表级锁
c. InnoDB支持MVCC,而MyISAM不支持
d. InnoDB支持外键,而MyISAM不支持
e. InnoDB不支持全文索引,而MyISAM支持
17. 网站打开慢,请给出排查方法,如是数据库慢导致,如何排查并解决,请分析并举例?
-
检查操作系统是否负载过高 -
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级

- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

- 第三部分:性能调优(JVM+MySQL+Tomcat)

- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)

- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)



- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))



- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)


SpringMVC+MyBatis**)**
[外链图片转存中…(img-LB5tnjT2-1720131834922)]
[外链图片转存中…(img-6VKjGcKp-1720131834922)]
[外链图片转存中…(img-zTfOGw6P-1720131834922)]
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-xd1U1WB0-1720131834923)]
[外链图片转存中…(img-zbGjsT9M-1720131834923)]
[外链图片转存中…(img-Ofirccnc-1720131834924)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-t0V5Bd7g-1720131834924)]
[外链图片转存中…(img-6Sa7CpZx-1720131834925)]
更多推荐




所有评论(0)