更新时间:2022-08-31 10:17:44 来源:极悦 浏览1055次
MySQL主从复制的原理是相当基础的知识。
MySQL主从复制是一个异步复制过程(但总体感觉是实时同步的)。
数据库数据从一个 MySQL 数据库(我们称之为 Master)复制到另一个 MySQL 数据库(我们称之为 Slave)。
Master和Slave之间主从复制的整个过程是由三个线程完成的。
lave 端有两个线程(SQL 线程和 IO 线程),Master 端有另一个线程(IO 线程)。(来自 MySQL 帮助文档)
在Slave服务器上执行start slave,开启主从复制开关。
此时,Slave 服务器上的 IO 线程通过 Master 服务器上授权复制用户的请求连接到 Master 服务器。
它还请求从 binlog 日志文件的指定位置发送 binlog 日志内容。
(配置主从复制任务时执行change master命令时指定日志文件名和位置)
Master服务器收到Slave服务器IO线程的请求后,Master服务器上的IO线程是基于Slave的。
服务器的IO线程请求的信息在指定binlog日志文件的指定位置后读取binlog日志信息,然后返回给Slave端
IO线程。除了binlog日志内容,在日志内容返回后Master服务器端还有一个新的binlog。
binlog 中的文件名和下一个指定的更新位置。
当 Slave 服务器的 IO 线程从 Master 服务器获取 IO 线程发送的日志内容、日志文件和位置点时,添加 binlog。
日志内容依次写入Slave端自身的relay log文件(mysql -relay-bin.xxxxxx)的末尾。
并将新的binlog文件名和位置记录到master-info文件中,以便下次读取Master端新的binlog日志日志时,
可以告诉Master服务器从新的binlog日志中从哪个文件以及从哪里开始请求新的binlog日志内容.
Slave server端的SQL线程实时检测本地relay log中新增的日志内容,及时relay log。
该文件的内容被解析成在Master端执行的SQL语句的内容,在Slave服务器本身按照语句的顺序执行SQL的应用。
声明,申请后清理日志。
经过上述过程,可以保证在Master和Slave端执行相同的SQL语句。当复制状态正常时,Master端和lave端的数据是完全一致的。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习