数据库的主从复制-原理篇

很早就整理了,现在闲了写出来。

解决场景

当一台数据库服务器塌机后,能使用主/从数据库快速切换。保证项目的稳定性。主从复制主要解决数据库的备份,恢复。

实现原理

MySQL主从复制涉及到三个线程,一个运行在主节点(log dump thread),其余两个(I/O thread, SQL thread)运行在从节点。

数据库的主从复制-原理篇_第1张图片
原理图
主节点 binary log dump 线程

从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发送给从节点之前,锁会被释放

从节点I/O线程

当从节点上执行start slave命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。

从节点SQL线程

SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

MySQL 主从复制模式

MySQL 主从复制默认是异步的模式。MySQL增删改操作会全部记录在binary log中,当slave节点连接master时,会主动从master处获取最新的bin log文件。并把bin log中的sql relay。

异步模式(mysql async-mode)

这种模式下,主节点不会主动push bin log到从节点,这样有可能导致failover的情况下,也许从节点没有即时地将最新的bin log同步到本地。

半同步模式(mysql semi-sync)

这种模式下主节点只需要接收到其中一台从节点的返回信息,就会commit;否则需要等待直到超时时间然后切换成异步模式再提交;这样做的目的可以使主从数据库的数据延迟缩小,可以提高数据安全性,确保了事务提交后,binlog至少传输到了一个从节点上,不能保证从节点将此事务更新到db中。性能上会有一定的降低,响应时间会变长。

全同步模式

全同步模式是指主节点和从节点全部执行了commit并确认才会向客户端返回成功。

参考

https://www.cnblogs.com/Aiapple/p/5792939.html

https://www.cnblogs.com/Aiapple/p/5792939.html

你可能感兴趣的:(数据库的主从复制-原理篇)