前言
金三银四面试的时候,面试官经常会问MySQL主从。今天就跟大家聊聊MySQL的主从。
- 数据库主从概念、优点、用途
- 数据库主从复制原理
- 主主、主从、主备的区别
- MySQL是怎么保证主从一致的
- 数据库主从延迟的原因与解决方案
- 聊聊数据库的高可用方案
1. 数据库主从概念、优点、用途
主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。
数据库为什么需要主从架构呢?
- 高可用,实时灾备,用于故障切换。比如主库挂了,可以切从库。
- 读写分离,提供查询服务,减少主库压力,提升性能
- 备份数据,避免影响业务。
2. 数据库主从复制原理
主从复制原理,简言之,分三步曲进行:
- 主数据库有个
bin log
二进制文件,纪录了所有增删改SQL
语句。(binlog线程) - 从数据库把主数据库的
bin log
文件的SQL
语句复制到自己的中继日志relay log
(io线程) - 从数据库的
relay log
重做日志文件,再执行一次这些sql语句。(Sql执行线程)
详细的主从复制过程如图:
上图主从复制过程分了五个步骤进行:
- 主库的更新SQL(update、insert、delete)被写到binlog
- 从库发起连接,连接到主库。
- 此时主库创建一个
binlog dump thread
,把bin log
的内容发送到从库。 - 从库启动之后,创建一个
I/O
线程,读取主库传过来的bin log
内容并写入到relay log