MySQL:简述数据库的主从复制

MySQL主从复制是指数据可以从一个MySQL数据库主节点复制到一个或多个从节点。

MySQL默认采用异步复制方式,这样从节点不用一直访问主节点来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主节点中的所有数据库或者特定的数据库,或者特定的表。

一、MySQL主从复制的原理

1、当master主节点上的数据发生改变时,会将其改变写入binlog文件中。

2、slave从节点会在一定时间间隔内,探测master主节点的binlog文件是否发生改变,如果发生改变,则启动一个I/O线程请求master主节点的二进制事件。同时,master节点为每个I/O线程启动一个log dump线程,用于向其发送二进制文件。

3、slave从节点获取二进制文件后,会保存至从节点本地的relay log(中继日志)中。随后,slave从节点将启动SQL线程从中继日志中读取二进制日志,并解析成sql语句逐一执行,使得其数据和主节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。

注意:

1、master主节点需要开启binlog二进制日志功能,然后需要授予slave从节点远程连接的权限(通常为了数据安全考虑,slave从节点也开启binlog功能)。

2、Mysql复制至少需要两个Mysql的服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。

3、Mysql复制最好确保master主节点和slave从节点上的Mysql版本相同(如果不能满足版本一致,那么要保证master主节点的版本低于slave从节点的版本)。

4、master主节点和slave从节点间的时间需同步。

二、MySQL主从复制的具体步骤

1、从节点通过手工执行change master to 语句连接主节点,提供了连接的用户一切条件(user 、password、port、ip),并且让从节点知道,二进制日志的起点位置(file名、position号); start slave。

2、从节点的IO线程和主节点的dump线程建立连接。

3、从节点IO线程根据change master to语句提供的file名和position号,向主节点发起binlog的请求。

4、主节点dump线程根据从节点的请求,将本地binlog以events的方式发给从节点IO线程。

5、从节点IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中。

6、从节点SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge。

相关推荐
菀亓11 小时前
ubuntu系统mysql安装
mysql
程序员贺加贝11 小时前
别被 saveBatch 骗了:一次 MyBatis-Plus 批量插入性能排查
mysql
l12586511 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
宠友信息11 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
__zRainy__12 小时前
Node系列 · 数据库:单表查询
数据库·后端·mysql·node.js
AIMath~15 小时前
MVCC 与乐观锁,RR的本质
mysql
程序员夏洛15 小时前
MySQL 中的 MVCC 是什么?
数据库·mysql
山甫aa16 小时前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
梦想不只是梦与想16 小时前
MySQL 中的用户管理
数据库·mysql·用户管理
夜雪一千1 天前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb