Redis 的主从同步是通过以下几个步骤来实现的:
-
初始化连接:从节点连接主节点并发送 SYNC 命令请求同步数据。主节点收到 SYNC 命令后,会开启后台存盘进程,将存盘数据发送给从节点。
-
数据同步:主节点根据同步的方式(全量复制或增量复制)向从节点发送存储的数据快照或者增量数据。
-
全量复制:主节点会生成一个 RDB 快照文件,发送给从节点。从节点在接收到 RDB 文件后,会将其载入内存,并继续连接主节点,请求主节点将自上次断开连接后的所有写命令发送给它。
-
增量复制:主节点会将自己的命令请求缓存起来,当从节点连接上来的时候,再将缓存的命令请求发送给从节点执行,从节点也从主节点的客户端读取请求并执行。
-
-
令从节点成为主节点:当从节点完成了初始的同步数据后,主节点会加锁,将同步期间主节点执行的所有命令都发送给从节点执行。在这个阶段从节点成为主节点,接着从节点开始接收来自客户端的命令请求。
主从同步机制可以帮助实现数据冗余备份以及横向扩展数据库读取操作的能力。通过同步机制,从节点可以同步主节点的数据,一旦主节点宕机,可以快速切换至从节点提供服务。同时,由于从节点可以提供读取功能,主从同步也有助于负载均衡和提升数据库读取性能。