运维面试必问的MySQL高频面试题(2024年最新版)

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密码如何找回

  1. 在配置文件里加上skip-grant-tables ,重启MySQL

  2. 使用MySQL-uroot -p 进入

  3. 使用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. 生产一主多从从库宕机,如何手工恢复?

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

[外链图片转存中…(img-e6BkrKRZ-1712517091648)]

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-b4eKwD9z-1712517091648)]

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

[外链图片转存中…(img-32eDzmTC-1712517091649)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 26
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL和Redis的运维面试中,可能会涉及到以下一些常见问题和主题: 1. 数据库备份和恢复:你可以使用mysqlbinlog命令来备份和恢复MySQL二进制日志文件。此外,你可能还需要了解如何使用Redis的持久化功能进行备份和恢复。 2. 负载均衡和高可用性:了解如何配置MySQL和Redis的负载均衡,以及如何实现高可用性的方案,比如使用LVS、HAProxy、Keepalived等工具。 3. 监控和性能调优:了解如何使用工具监控MySQL和Redis的性能,并进行相应的性能调优操作。例如,可以使用zabbix、Prometheus等工具进行监控,可以使用slow query日志来识别慢查询,并使用索引和优化查询语句来提高性能。 4. 主从复制和高可用性:了解如何配置MySQL的主从复制,并了解如何检查复制状态。可以使用类似于"show slave status\G"命令来检查Slave_IO_Running和Slave_SQL_Running状态。 5. 数据库模式设计和架构:了解如何设计和规划数据库模式,包括表的拆分、索引的设计等。对于需要短时间响应的查询操作,可能需要考虑使用NoSQL数据库,因为它们在此方面通常更具优势。 6. 缓存和性能优化:了解如何使用Redis作为缓存来提高数据库性能,以及如何在应用程序中正确使用Redis缓存。 7. 容灾和灾难恢复:了解如何设置数据库容灾和灾难恢复方案,包括备份和恢复计划、故障切换和数据恢复。 8. 安全性和权限管理:了解如何设置数据库的安全性措施,包括用户权限管理、访问控制、加密和审计。 这些是一些可能在MySQL和Redis运维面试中会涉及到的主题和问题。当然,具体的面试题目可能会因面试者的需求和公司的要求而有所不同。在准备面试时,建议深入研究和理解这些主题,并结合自己的实际经验来回答问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值