为什么需要主从同步?
- 提高性能(读写分离,主节点写服务,从节点读服务)
- 高可用(主从同步时哨兵和集群实施的基础)
配置(两种)
- 在配置文件里配置 slaveof | replicaof 主机地址 端口
- 启动时 redis-server --slaveof| replicaof 主机地址 端口
- client-output-buffer-limit 设置生成RDB文件时缓冲区的大小(replication-buffer)
- repl-backlog-size 设置增量同步的时候写命令缓冲区大小(repl-backlog-buffer)
怎么同步的?
- 建立连接
- 数据同步阶段
- 第一次同步——全量同步
- 后续——增量同步
- 命令传播阶段
- 保存同步过程中的写命令到缓存区 replication-buffer
- 增量同步时写指令存储缓存区repl-backlog-buffer
全量同步
主节点执行bgsave命令生成RDB文件并整个发送给从节点,从节点接收到文件后先删除自己的数据库,然后读取RDB文件到自己库。我们在学习持久化的时候知道bgsave命令是会fork一个子进程去做RBD文件的生成,主进程是不