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 实现自动故障转移
  • 考虑多从节点部署
  • 跨机房部署从节点
相关推荐
鼠鼠我捏,要死了捏2 小时前
深入剖析Java垃圾回收性能优化实战指南
java·性能优化·gc
码界奇点3 小时前
MongoDB 排序操作详解sort方法使用指南
数据库·mongodb·性能优化
武子康3 小时前
Java-157 MongoDB 存储引擎 WiredTiger vs InMemory:何时用、怎么配、如何验证 mongod.conf
java·数据库·sql·mongodb·性能优化·系统架构·nosql
白帽子凯哥哥4 小时前
SpringBoot + Elasticsearch实战:从零构建高性能搜索与数据分析平台
大数据·spring boot·后端·elasticsearch·搜索引擎·性能优化·聚合查询
马拉萨的春天4 小时前
block的样式有哪些?如果copy的话分别会有啥样式
flutter·性能优化·ios的block
爬山算法6 小时前
Redis(78) 如何设置Redis的缓存失效策略?
数据库·redis·缓存
DemonAvenger7 小时前
深入Redis String:从基础到实战,10年经验的后端工程师带你解锁最佳实践
数据库·redis·性能优化
shuair7 小时前
redis大key问题
数据库·redis·缓存
蒙娜丽宁8 小时前
Rust 性能优化指南:内存管理、并发调优与基准测试案例
开发语言·性能优化·rust
kkkkk02110612 小时前
JavaScript性能优化实战:深度剖析瓶颈与高效解决方案
开发语言·javascript·性能优化