Redis 主从复制部署
Redis 主从复制部署指南
Redis 主从复制是一种数据冗余机制,通过将主节点(Master)的数据复制到一个或多个从节点(Slave)来实现数据备份和读写分离。
一、Redis 主从复制原理
工作原理:
- 从节点启动后连接到主节点,发送 SYNC 命令
- 主节点执行 BGSAVE 生成 RDB 文件,同时缓存新写入命令
- 主节点将 RDB 文件发送给从节点
- 从节点清空数据后加载 RDB 文件
- 主节点将缓存中的写命令发送给从节点执行
优点:
- 数据冗余,提高可用性
- 读写分离,提升性能
- 故障恢复快速
二、单机部署主从复制
1. 准备环境
# 安装 Redis
sudo apt-get install redis-server
2. 配置主节点 (Master)
编辑主节点配置文件 /etc/redis/redis.conf:
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis_6379.log"
dbfilename dump_6379.rdb
启动主节点:
redis-server /etc/redis/redis.conf
3. 配置从节点 (Slave)
复制配置文件:
cp /etc/redis/redis.conf /etc/redis/redis_6380.conf
编辑从节点配置文件 /etc/redis/redis_6380.conf:
bind 0.0.0.0
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
logfile "/var/log/redis_6380.log"
dbfilename dump_6380.rdb
# 关键配置:指定主节点
replicaof 127.0.0.1 6379
# 如果主节点有密码
# masterauth yourpassword
启动从节点:
redis-server /etc/redis/redis_6380.conf
4. 验证主从复制
在主节点执行:
redis-cli -p 6379
127.0.0.1:6379> set testkey "hello"
OK
127.0.0.1:6379> info replication
在从节点执行:
redis-cli -p 6380
127.0.0.1:6380> get testkey
"hello"
127.0.0.1:6380> info replication
三、多服务器部署主从复制
1. 主节点配置 (192.168.1.100)
bind 192.168.1.100
port 6379
protected-mode no
daemonize yes
requirepass masterpassword
2. 从节点配置 (192.168.1.101)
bind 192.168.1.101
port 6379
protected-mode no
daemonize yes
replicaof 192.168.1.100 6379
masterauth masterpassword
3. 启动服务
分别在两台服务器上启动 Redis:
redis-server /path/to/redis.conf
四、高级配置选项
只读从节点:
replica-read-only yes
复制积压缓冲区:
repl-backlog-size 1mb
无磁盘复制:
repl-diskless-sync yes
repl-diskless-sync-delay 5
心跳检测:
repl-ping-replica-period 10
repl-timeout 60
五、主从切换 (手动)
提升从节点为主节点:
redis-cli -h 192.168.1.101 -p 6379
127.0.0.1:6379> REPLICAOF NO ONE
将其他节点指向新主节点:
redis-cli -h 192.168.1.102 -p 6379
127.0.0.1:6379> REPLICAOF 192.168.1.101 6379
六、监控与维护
查看复制状态:
redis-cli info replication
监控复制延迟:
redis-cli --latency
常见问题排查:
- 检查网络连接
- 检查密码是否正确
- 检查防火墙设置
- 查看日志文件 /var/log/redis_*.log
七、生产环境建议
安全建议:
- 使用强密码
- 启用 TLS 加密传输
- 限制绑定 IP
性能建议:
- 主节点关闭持久化时,从节点开启持久化
- 适当调整复制积压缓冲区大小
- 监控复制延迟
高可用建议:
- 配合 Redis Sentinel 实现自动故障转移
- 考虑多从节点部署
- 跨机房部署从节点