Redis 主从配置

Redis主从配置与同步

1、主从服务器 IP
主:192.168.225.131
从:192.168.225.129

2、主库配置:

requirepass redis1  #设置主库密码
logfile "/data/redis/redis-4.0.10/redis_iris.log”    #redis数据库log文件名称&路径
bind 192.168.225.131 127.0.0.1 
Daemonize yes              #开启后台守护进程
appendonly no              #关闭 aof,默认就是关闭
save 900 1
save 300 10
save 60 10000   #这三个是默认的

3、从库配置:

Slaveof 192.168.225.131 6379     #主库的 ip 和端口
masterauth redis1                #对应主库参数requirepass的配置
logfile "/data/redis/redis-4.0.10/redis_iris.log”    #redis数据库log文件名称&路径
bind 192.168.225.129 127.0.0.1 
Daemonize yes                    #开启后台守护进程
appendonly yes                   #开启aof,默认是关闭
save 900 1
save 300 10
save 60 10000   #这三个是默认的

tips
也可以在启从库启动时指定主从关系:
[root@localhost ~]# cd /data/redis/redis-4.0.10/src/
[root@localhost src]# ./redis-server …/redis.conf -p 6379 --slaveof 192.168.225.131 6379

4、启动 redis 服务器:
1.启动 redis master

./redis-server ../redis.conf 

如果已经启动中,修改的配置,可以先关闭再启动
关闭 redis master:

./redis-cli -h 127.0.0.1 -p 6379 shutdown

2.启动 redis slave

./redis-cli -h 127.0.0.1 -p 6379 shutdown
./redis-server ../redis.conf 

5、检查主从同步状态:

  1. 进入 redis master:
192.168.225.131:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.225.129,port=6379,state=online,offset=1246,lag=1
master_replid:8a3d0576519d2356117500450dc4e18ab0859e11
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1246
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1246
192.168.225.131:6379> 
  1. 进入 redis slave 检查:
192.168.225.129:6379> info replication
# Replication
role:slave
master_host:192.168.225.131
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:1288
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:8a3d0576519d2356117500450dc4e18ab0859e11
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1288
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1288
192.168.225.129:6379> 

上述内容显示同步正常。

tips:
也可以使用命令 role,获取 master 和 slave 复制状态,偏移量、slave 连接列表

  • master 上使用 role 命令:
192.168.225.131:6379> role 
1) "master"
2) (integer) 4396
3) 1) 1) "192.168.225.129"
      2) "6379"
      3) "4382"
192.168.225.131:6379>
  • slave 上使用 role 命令:
192.168.225.129:6379> role
1) "slave"
2) "192.168.225.131"
3) (integer) 6379
4) "connected"
5) (integer) 4424
192.168.225.129:6379>  

6、验证同步:

  1. 在 redis master 上:
192.168.225.131:6379> keys *
1) "iris1"
2) "iris3"
3) "iris5"
4) "iris4"
5) "iris6"
192.168.225.131:6379> 
  1. 新插入iris2:
192.168.225.131:6379> set iris2 '11111'
OK
192.168.225.131:6379> keys *
1) "iris2"
2) "iris1"
3) "iris3"
4) "iris5"
5) "iris4"
6) "iris6"
192.168.225.131:6379> get iris2
"11111"
192.168.225.131:6379> 
  1. 在 redis slave 上:
192.168.225.129:6379> keys *
1) "iris1"
2) "iris5"
3) "iris6"
4) "iris2"
5) "iris4"
6) "iris3"
192.168.225.129:6379>

7、同步过程遇到的问题:
问题 1:

[root@localhost src]# ./redis-cli -h 127.0.0.1 -p 6379 
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> 
not connected> 

原因:
检查之后发现是防火墙策略问题。

处理:
iptables -F
也可以根据自己需求,详细设置防火墙规则。

额外:

  • slaveof host port:如果redis A已经是其他 redis 的从属服务器了,执行此命令会停止对旧主服务器的同步行为,丢弃旧数据集 ,开始同步新的 redis 服务器。
  • slaveof no one:如果 redis A已经是一台 redis 服务器的从库,执行此命令会停止对旧主服务器的同步,但是不会丢掉此前获取到的数据集。
    可以用来在主 redis 挂掉后,提升从库为主库时、对新的主库(被提升的从 redis)使用,提升为主 redis。
<think>好的,我现在需要帮助用户解决关于Redis主从配置的问题。用户提到了最佳实践和教程,所以我需要详细说明配置步骤,并结合引用内容来支持回答。首先,我应该回顾一下用户提供的引用资料,看看哪些可以用于回答。 引用[3]提到了从节点的配置文件,里面包括replicaof指令,这应该是配置主从的关键部分。引用[5]提到三主三从架构,所有节点互联,使用PING-PONG机制,这可能涉及主从同步和集群配置的最佳实践。另外,引用[2]提到了监控工具,这可能和配置后的监控有关,确保主从正常运行。 接下来,我需要整理主从配置的步骤。首先,安装Redis,然后修改主节点和从节点的配置文件。主节点可能需要设置bind和port,从节点则需要使用replicaof命令指向主节点。然后启动实例,验证同步情况,最后考虑持久化和监控。 需要注意主节点的写入和从节点的只读,以及如何添加多个从节点。另外,最佳实践部分应该包括高可用架构,比如三主三从,以及使用监控工具。可能还需要提到故障处理,比如主节点宕机后的切换,但用户的问题主要是配置,这部分可以简略。 需要确保步骤清晰,每一步都有对应的引用支持,比如配置文件示例来自引用[3],架构建议来自引用[5]。同时,生成的相关问题要围绕主从配置的扩展内容,比如同步原理、故障处理、监控优化等。</think>### Redis主从配置方法与最佳实践 #### **一、主从配置步骤** 1. **安装Redis** 确保所有节点安装相同版本的Redis,避免版本差异导致兼容性问题。使用包管理工具(如`apt`或`yum`)或源码编译安装。 2. **主节点配置** 编辑主节点的配置文件 `redis-master.conf`,关键参数如下: ```conf bind 0.0.0.0 # 允许所有IP访问 port 6379 # 主节点端口 daemonize yes # 后台运行 requirepass 123456 # 可选:主节点密码(从节点需同步配置) ``` 启动主节点: ```bash redis-server /path/to/redis-master.conf ``` 3. **从节点配置** 编辑从节点配置文件 `redis-slave.conf`,通过`replicaof`指令关联主节点[^3]: ```conf bind 0.0.0.0 port 6380 daemonize yes replicaof 192.168.1.100 6379 # 主节点IP和端口 replica-read-only yes # 从节点只读 masterauth 123456 # 若主节点有密码,需配置此项 ``` 启动从节点: ```bash redis-server /path/to/redis-slave.conf ``` 4. **验证主从同步** 在主节点写入数据,从节点查询是否同步: ```bash # 主节点写入 redis-cli -p 6379 set key1 "hello" # 从节点读取 redis-cli -p 6380 get key1 ``` 若返回`"hello"`,则同步成功。 5. **配置持久化(可选)** 建议主从节点均开启RDB或AOF持久化,防止数据丢失: ```conf save 900 1 # RDB触发条件 appendonly yes # 开启AOF ``` --- #### **二、最佳实践** 1. **高可用架构** - 采用**三主三从**架构,主节点提供服务,从节点用于故障切换和数据备份[^5]。 - 所有节点通过`PING-PONG`机制保持通信,确保网络健康。 2. **读写分离** - 主节点处理写请求,从节点处理读请求,通过客户端或代理(如Redis Sentinel)实现负载均衡。 3. **监控与优化** - 使用`INFO replication`命令查看主从状态,或通过RedisInsight等工具监控性能[^2]。 - 定期检查同步延迟(`repl_offset`),避免数据不一致。 4. **故障处理** - 主节点宕机时,可通过`SLAVEOF NO ONE`提升从节点为主节点,再重构其他从节点关系。 - 使用**Redis Sentinel**实现自动故障转移(引用哨兵配置[^4])。 --- #### **三、配置文件示例** - **主节点**:`redis-master.conf` ```conf bind 0.0.0.0 port 6379 daemonize yes ``` - **从节点**:`redis-slave.conf` ```conf bind 0.0.0.0 port 6380 daemonize yes replicaof redis-master 6379 replica-read-only yes ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值