前言
整理了一些 MySQL 数据库相关流程图/原理图。做一下笔记,分享给大家一起学习。
1. MySQL 主从复制原理图
MySQL 主从复制原理是大厂后端的高频面试题,了解 MySQL 主从复制原理非常有必要。
主从复制原理简言之,就三步曲,如下:
-
主数据库有个 bin-log 二进制文件,记录了所有增删改 SQL 语句(binlog线程);
-
从数据库把主数据库的 bin-log 文件的 SQL 语句复制过来(I/O线程);
-
从数据库的 relay-log 重做日志文件中再执行一次这些 SQL 语句(SQL 执行线程)。
如下图所示:
上图主从复制分了五个步骤进行:
-
步骤一:主库的更新事件(update、insert、delete)被写到 binlog;
-
步骤二:从库发起连接,连接到主库;
-
步骤三:此时主库创建一个 binlog dump thread,把 binlog 的内容发送到从库;
-
步骤四:从库启动之后,创建一个 I/O 线程,读取主库传过来的 binlog 内容并写入到 relay log;
-
步骤五:还会创建一个 SQL 线程,从 relay log 里面读取内容,从 Exec_Master_Log_Pos 位置开始执行读取到的更新事件,将更新内容写入到 slave 的 DB。
2. MySQL 逻辑架构图
如果能在脑海中构建出 MySQL 各组件之间如何协同工作的架构图,就会有助于深入理解 MySQL 服务器。
MySQL 逻辑架构图主要分三层:
第一层负责连接处理,授权认证,安全等。
-
每个客户端连接都会在服务器进程中拥有一个线程,服务器维护了一个线程池,因此不需要为每一个新建的连接创建或者销毁线程;
-
当客户端连接到Mysql服务器时,服务器对其进行认证,通过用户名和密码认证,也可以通过SSL证书进行认证;
-
一旦客户端连接成功,服务器会继续验证客户端是否具有执行某个特定查询的权限。
第二层负责编译并优化SQL。
-
这一层包括查询解析,分析,优化,缓存以及所有的的内置函数ÿ