精品博文《Redis主从复制学习》https://zhuanlan.zhihu.com/p/47719810
精讲Redis主从全量、增量复制的原理。
1.Redis主从复制
Redis主从复制原理
Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
- 从服务器连接主服务器,发送SYNC命令;
- 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
- 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
- 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
- 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
- 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
Redis主从的理解
- 一个Master可以有多个Slaves
- 默认配置下,master节点可以进行读和写,slave节点只能进行读操作,写操作被禁止
- 不要修改配置让slave节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当master节点修改同一条数据后,slave节点的数据会被覆盖掉
- slave节点挂了不影响其他slave节点的读和master节点的读和写,重新启动后会将数据从master节点同步过来
- master节点挂了以后,不影响slave节点的读,Redis将不再提供写服务,master节点启动后Redis将重新对外提供写服务。
对有密码的情况说明一下,当master节点设置密码时:
- 客户端访问master需要密码
- 启动slave需要密码,在配置中进行配置即可
- 客户端访问slave不需要密码
2.Redis主从搭建
配置文件配置
1 2 3
| # 从库配置 slaveof 192.168.xx.xx 6379 # master ip port masterauth 123456 # 若主库有设置密码
|
只有写入到配置文件,重启redis,主从配置才不会丢失,建议也是用这种方式,其他方式重启,主从配置会丢失。
Redis命令行配置
1
| slaveof 192.168.xx.xx 6379
|
并不想重启redis服务进行主从配置
Redis启动加参数
1
| 在redis-server启动命令后加上--slaveof 启动生效。
|
3.断开主从
1 2
| # 在从库断开主从 slaveof no one
|