Redis主从复制的复制原理
主从复制数据同步的底层是:
- Slave 成功连接Master后,会发送一个sync命令。
- Master借到命令后,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master将传送整个数据文件到Slave,已完成一次完全同步。
- 全量复制:Slave 在接收到数据库文件数据后,将其存盘并加载到内存中。
- 增量复制:Master 继续将新的所有收集到的修改命令依次传给 Slave 完成同步。
- 但是只要是重新连接Master, 一次完全同步(全量复制)将被自动执行。
简单说就是: 1、从服务器 连接上 主服务器 之后,从服务器 会向 主服务器 发送数据同步消息。
2、主服务器 接收到 从服务器 发送过来的同步消息后,会对自己进行持久化操作,并将自己的rdb文件发送给 从服务器, 从服务器 拿到 rdb文件后进行读取,最终完成复制。
3、每次 主服务器 进行写操作后,会自动和 从服务器 进行数据同步。
4、但是,如果 从服务器 宕机后重启的话,他就会再次向 主服务器 发送数据同步消息。
总结一下就是:从服务器只有在刚连接的时候主动向主服务器借作业抄(请求数据同步),后面,主服务器每写一点作业,都给从服务器们抄(自动和从服务器进行数据同步)。如果 从服务器 中途跑路了,那么下次,主服务器就不舔他了。等从服务器下次自己再过来撒个娇,主服务器才给他重新从头抄一次作业。
批注:(??へ??╬) 这大概就是广撒网吧,科普一下,互联网管这叫海王。
|