目录
1、什么是MySQL主从复制
MySQL主从复制, 指把数据从一个MySQL主服务器(master主节点)复制到一个或多个MySQL从服务器(slove从节点),这就是MySQL主从复制。
主从复制会把主服务器中的所有数据库实例、特定数据库实例或特定表等,
全部复制到从服务器。
2、MySQL主从复制模式有哪些
MySQL主从复制模式主要会包含:异步复制、半同步、以及全同步复制三种复制模式。
MySQL默认复制是异步,主库在执行完客户端提交的事务后会立即将
结果返给给客户端。
1)MySQL异步复制
这种方式并不关心从库是否已经接收并处理,这样就会导致一个问题,主服务器如果Crash掉了,此时主上已经提交的事务可能并没有传到从库上。(这个问题由后面的半同步复制来解决)
2)半同步复制
半同步复制介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到Relaylog中才返回给客户端。
相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。
所以,半同步复制最好在低延时的网络中使用。
3)全同步复制:是指当主库执行完一个事务,然后所有的从库都复制了该事务并成功执行完才返回成功信息给客户端。因为需要等待所有从库执行完该事务才能返回成功信息,所以全同步复制的性能必然会受到严重的影响。
3、MySQL主从复制原理图
复制过程如下所示:
1) 当 master 主服务器上的数据发生改变时,则将其改变写入二进制日志文件中;
2) salve 从服务器会在一定时间间隔内对 master 主服务器上的二进制日志进行探测,探测其是否发生过改变;
3) 如果探测到 master 主服务器的二进制日志发生了改变,则开始一个 I/O Thread 请求 master 二进制日志;
4) 同时 master 主服务器为每个 I/O Thread 启动一个dump Thread,用于向其发送二进制日志;
5) slave 从服务器将接收到的二进制日志保存至自己本地的中继日志文件中;
6) salve 从服务器将启动 SQL Thread 从中继日志中读取二进制日志,在本地重放,使得其数据和主服务器保持一致;
7) 最后 I/O Thread 和 SQL Thread 将进入睡眠状态,等待下一次被唤醒。
以上!
关注公众号 + 输入[面试题] + 免费领取全部面试资料(面试答案)!
往期文章: