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 实现自动故障转移
  • 考虑多从节点部署
  • 跨机房部署从节点
相关推荐
小的~~9 分钟前
面试被问懵了?为什么 Redis 单线程还能保证 Lua 脚本原子性,却偏偏选了 Lua?
redis·面试·lua
AI服务老曹15 小时前
NVR视频流接入AI分析性能优化指南
人工智能·性能优化
做一个AK梦18 小时前
Redis 深入浅出
java·数据库·redis·缓存
ruleslol18 小时前
Redis 雪崩与服务降级
数据库·redis
Java牛马20 小时前
Caffeine 缓存及其应用相关总结
java·redis·缓存·caffeine·数据一致性·本地缓存
李可以量化21 小时前
Redis 从了解到精通(三)上:量化交易场景下的数据备份与安全配置
redis·python·安全·qmt·ptrade
Patrick在香港21 小时前
Python asyncio + aiohttp 并发抓取实战:把同步爬虫改造成 3 倍吞吐量的并发管道
redis·爬虫·python
show4331 天前
2026小程序端AI配音技术实现:TTS多音色引擎集成与MP3生成性能优化
人工智能·性能优化·小程序
NutShell Wang1 天前
Rust 1.97 实战迁移:v0 符号重整、Cargo 警告治理与位运算新 API
人工智能·后端·性能优化·rust·vibe coding
BK贝壳1 天前
Python底层:1亿个布尔值缓存失效标记,list爆内存numpy爆拷贝,bool-hybrid-array混合存储实测
数据结构·python·缓存·性能优化·list·numpy