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。

相关推荐
SuperSpinach4 小时前
mysql 报错Authentication method ‘caching_sha2_password‘ is not supported.
数据库·mysql
R.lin4 小时前
MySQL 性能优化最佳实践
数据库·mysql·性能优化
失散137 小时前
分布式专题——57 如何保证MySQL数据库到ES的数据一致性
java·数据库·分布式·mysql·elasticsearch·架构
kka杰9 小时前
MYSQL结构操作DDL指令1.数据库操作
数据库·mysql
Arva .9 小时前
MySQL 中的 MVCC
数据库·mysql
Boilermaker19929 小时前
【MySQL】数据目录与日志开篇
数据库·mysql
小满、12 小时前
MySQL :实用函数、约束、多表查询与事务隔离
数据库·mysql·事务·数据库函数·多表查询
weixin_5377658018 小时前
【数据库管理】MySQL主从复制详解
数据库·mysql
倚肆19 小时前
MySQL 配置文件属性详解
数据库·mysql
百***221221 小时前
mysql的分区表
数据库·mysql