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

处理方法:重做slave

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

16. MySQL中MyISAM与InnoDB的区别,至少5点

a. InnoDB支持事务,而MyISAM不支持事务。

b. InnoDB支持行级锁,而MyISAM支持表级锁

c. InnoDB支持MVCC,而MyISAM不支持

d. InnoDB支持外键,而MyISAM不支持

e. InnoDB不支持全文索引,而MyISAM支持

17. 网站打开慢,请给出排查方法,如是数据库慢导致,如何排查并解决,请分析并举例?

  1. 
      检查操作系统是否负载过高
    
    
    
    
  2. 
    
    

复习的面试资料

这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)

  • 第一部分:Java基础-中级-高级

image

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

image

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

image

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

image

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

image

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

image

进阶学习笔记pdf

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

image

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

image

image

image

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

image

image

image

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

image

image

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)]

Logo

一站式 AI 云服务平台

更多推荐