主从复制有两种状态,全局复制, 局部复制
全局复制, 全局复制发生在从服务器启动时触发
主服务器 | 从服务器 | |
---|---|---|
1 | 等待客户端命令 | 连接主服务, 并发送Sync同步命令 |
2 | 创建一个子进程把数据写入硬盘生成快照,父进程继续处理客户端的命令, 并把写命令记录写入缓存 | 等待同步, 在期间也会根据配置选择不同的方式处理客户端的命令, 使用原有数据处理或返回错误 |
3 | 发送快照 , 在发送期间继续处理命令, 并把写命令记录写入缓存 | 接收快照, 并把旧数据清空, 解析快照数据 |
4 | 发送命令缓存 | 接收命令并处理 |
局部复制很简单, 主服务器每次接收到写命令,处理完成后就发送同样的命令到从服务
一台主服务可以有多台从服务器, 一台从服务器也可以有多个从服务, 主服务器下的从服务器不是越多越好的, 因为主服务器如果有数据更新的话会同步到每个从服务器中, 如果从服务有10台, 客户端向主服务器发送100条写的命令, 那么主服务也会发送10 * 100条命令到从服务器。 而且服务器越多发生的宕机机率就越高, 从服务器宕机恢复后,主服务器还会跟这台从服务器进行全量数据同步, 这个过程非常损耗主服务器的性能。 在进行大量的redis集群部署时, 可以在主从服务器之间加上一层专门复制的从服务器, 如下图:
image.png
网友评论