Redis 主从复制笔记

一、主从同步原理

- Slave 发起同步请求
- Slave 节点向 Master 节点发送同步请求。
- 认证与开始同步
- Slave 通过 Master 的认证后,开始同步流程。
- Master 生成 RDB 快照
- Master 执行
bgsave,生成内存快照(RDB)并发送给 Slave。 - 此过程为异步操作,Master 仍可处理写请求。
- Master 执行
- Slave 清空数据并加载 RDB
- Slave 收到 RDB 后,先清空自身数据,再加载 RDB 恢复数据。
- 增量数据同步
- 在 RDB 生成和传输期间,Master 将新写入的数据缓存起来。
- 通过
replicationFeedSlave函数,将这些增量数据逐条发送给 Slave。
二、配置步骤
1. 主节点配置(redis-node1)
vim /etc/redis/redis.conf
修改以下配置:
bind * -::*
protected-mode no

重启服务:
systemctl restart redis_6379.service
2. 从节点配置(redis-node2、redis-node3)
[root@redis-node2 和node3 ~]vim /etc/redis/redis.conf
添加或修改:
bind * -::*
protected-mode no
replicaof 172.25.254.10 6379 # 指定主节点 IP 和端口

重启服务:
[root@redis-node2 和node3 ~]systemctl restart redis_6379.service
三、状态查看与测试
1. 查看主节点状态
bash
[root@redis-node1 ~]# redis-cli
127.0.0.1:6379> info replication
示例输出:
role:master
connected_slaves:2
slave0:ip=172.25.254.20,port=6379,state=online
slave1:ip=172.25.254.30,port=6379,state=online
2. 查看从节点状态
redis-cli
127.0.0.1:6379> info replication
示例输出:
role:slave
master_host:172.25.254.10
master_port:6379
master_link_status:up

四、数据同步测试
主节点写入数据
redis-cli
127.0.0.1:6379> set name swp
OK
127.0.0.1:6379> get name
"swp"

从节点读取数据
redis-cli
127.0.0.1:6379> get name
"swp"


从节点写入测试(应失败)
127.0.0.1:6379> set test baibai
(error) READONLY You can't write against a read only replica.
说明:从节点默认只读,无法执行写操作。
五、注意事项
- 主从复制是异步的,主节点不会等待从节点确认。
- 从节点默认只读,可通过配置
replica-read-only no关闭(不推荐)。 - 若主节点无持久化配置,建议结合
requirepass设置密码认证。
认只读,无法执行写操作。
五、注意事项
- 主从复制是异步的,主节点不会等待从节点确认。
- 从节点默认只读,可通过配置
replica-read-only no关闭(不推荐)。 - 若主节点无持久化配置,建议结合
requirepass设置密码认证。 - 支持一主多从、链式复制(从节点也可作为其他从节点的主节点)。