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。

相关推荐
知初~3 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
子非衣5 小时前
MySQL修改JSON格式数据示例
android·mysql·json
钊兵6 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
隔壁老王1568 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
Hanson Huang10 小时前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
LUCIAZZZ10 小时前
EasyExcel快速入门
java·数据库·后端·mysql·spring·spring cloud·easyexcel
yuanbenshidiaos11 小时前
【正则表达式】
数据库·mysql·正则表达式
雾里看山13 小时前
【MySQL】内置函数
android·数据库·mysql
geovindu13 小时前
python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
python·mysql·ubuntu