环境准备
redis-node1.org
(172.25.254.10
)master
redis-node2.org
(172.25.254.20
)slave
redis-node3.org
(172.25.254.30
)slave
关闭redis
各个节点的安全模式
[root@redis-node1 ~]

[root@redis-node1 ~]
[root@redis-node2 ~]

[root@redis-node2 ~]
[root@redis-node3 ~]

[root@redis-node3 ~]
配置slave节点
[root@redis-node2 ~]
replicaof 172.25.254.10 6379
[root@redis-node2 ~]
[root@redis-node3 ~]
replicaof 172.25.254.10 6379
[root@redis-node3 ~]
测试
[root@redis-node1 ~]
127.0.0.1:6379> info replication

127.0.0.1:6379> set name huazi
OK
127.0.0.1:6379> get name
"huazi"
[root@redis-node2 ~]
127.0.0.1:6379> get name
"huazi"
[root@redis-node3 ~]
127.0.0.1:6379> get name
"huazi"
127.0.0.1:6379> set key1 value1
(error) READONLY You can't write against a read only replica.
主从同步
的原理

slave节点
发送同步请求
到master节点
slave节点
通过master节点
的认证
开始进行同步
master节点
会开启bgsave进程
发送内存快照rbd
到slave节点
,在此过程中是异步操作
,也就是说master节点
仍然可以进行写入动作
slave节点
收到内存快照rdb
后首先清空自己的所有数据
slave节点
加载内存快照rdb
并进行数据恢复
- 在
master
和slave
同步过程中,master
还会开启新的bgsave进程
把没有同步的数据
进行缓存
- 然后通过
自有的replactionfeedslave函数
把未通过内存快照发送到slave的数据
一条一条写入
到slave中