REDIS主从配置

目录

前言

一、概述

二、作用

三、缺点

四、redis主从复制的流程

五、搭建redis主从复制

总结



前言

Redis的主从配置是指在Redis集群中,将一个Redis节点配置为主节点(master),其他节点配置为从节点(slave),主节点负责写操作和部分读操作,从节点负责读操作。
主从配置的作用主要有以下几点:


提高读写性能:主节点负责写操作,从节点负责读操作,实现了读写分离,有效提高了系统的读写性能。从节点可以接受主节点的复制数据,这样读操作可以在从节点上执行,减轻了主节点的负载。


提高可用性:主节点故障时,从节点可以接替主节点的角色,继续提供服务。当主节点恢复后,可以重新加入集群,重新成为从节点,保证了系统的高可用性。


数据备份:从节点通过复制主节点的数据,实现了数据的备份。当主节点故障时,从节点可以提供最新的数据,避免数据丢失。


故障恢复:当主节点故障时,可以通过从节点快速恢复主节点的数据。从节点会自动发现并选举一个新的主节点,保证系统的正常运行。


扩展性:通过增加从节点,可以提高系统的读取性能和容量。当系统需求增加时,可以通过增加从节点来扩展系统的处理能力。


总的来说,主从配置可以提高Redis集群的性能、可用性和扩展性,保证数据的备份和故障恢复。
 


一、概述

redis主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。

二、作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

高可用:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

三、缺点

故障恢复无法自动化;

写操作无法负载均衡;

存储能力受到单机的限制。

四、redis主从复制的流程

第一步:若启动一个Slave机器进程,则它会向Master机器发送一个“sync command”命令,请求同步接。

第二步:无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。 

第三步:后台进程完成缓存操作之后,Maste机器就会向Slave机器发送数据文件,Slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。

第四步:Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

五、搭建redis主从复制

我们搭建一主三从的模式

1.在主服务上的操作

修改配置文件vim /etc/redis.conf

设置监听地址

关闭保护模块

设置允许后台运行

重启服务,查看端口

[root@localhost ~]# vim /etc/redis.conf 
[root@localhost ~]# systemctl restart redis
[root@localhost ~]# netstat -anput |grep redis
tcp        0      0 192.168.73.10:6379      0.0.0.0:*               LISTEN      12833/redis-server  
[root@localhost ~]# 

2.在从上的操作

将 配置文件redis.conf 拷贝,并以端口号命令例如

[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]# 

分别编辑他们需要修改的内容

修改配置文件
    bind  0.0.0.0
    port  不同的端口号
    protected-mode = no
    daemonize = yes
    slaveof 主的IP 主的端口

编辑完成之将主从全部启动,并验证

[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]# vim /opt/redis_6380.conf 
[root@localhost etc]# vim /opt/redis_6381.conf 
[root@localhost etc]# vim /opt/redis_6382.conf 
[root@localhost etc]# redis-server /opt/redis_6380.conf 
[root@localhost etc]# redis-server /opt/redis_6381.conf 
[root@localhost etc]# redis-server /opt/redis_6382.conf 
[root@localhost etc]# netstat -anput |grep redis
tcp        0      0 192.168.73.10:6379      0.0.0.0:*               LISTEN      12833/redis-server  
tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      13699/redis-server  
tcp        0      0 0.0.0.0:6381            0.0.0.0:*               LISTEN      13711/redis-server  
tcp        0      0 0.0.0.0:6382            0.0.0.0:*               LISTEN      13723/redis-server  
tcp        0      0 192.168.73.10:37065     192.168.73.10:6379      ESTABLISHED 13723/redis-server  
tcp        0      0 192.168.73.10:34195     192.168.73.10:6379      ESTABLISHED 13699/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:37065     ESTABLISHED 12833/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:34195     ESTABLISHED 12833/redis-server  
tcp        0      0 192.168.73.10:46341     192.168.73.10:6379      ESTABLISHED 13711/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:46341     ESTABLISHED 12833/redis-server  
[root@localhost etc]# 

3、验证

使用redis-cli命令行登录redis服务器,输入role指令查看状态

[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6379
192.168.73.10:6379> role
1) "master"
2) (integer) 435
3) 1) 1) "192.168.73.10"
      2) "6380"
      3) "435"
   2) 1) "192.168.73.10"
      2) "6381"
      3) "435"
   3) 1) "192.168.73.10"
      2) "6382"
      3) "435"
192.168.73.10:6379> 

在master节点上,录入数据,在slave节点上查看到对应数据即可

master录入

192.168.73.10:6379> set hy hy
OK
192.168.73.10:6379> get hy
"hy"
192.168.73.10:6379> 

slave查看

[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6380
192.168.73.10:6380> get hy
"hy"
192.168.73.10:6380> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6381
192.168.73.10:6381> get hy
"hy"
192.168.73.10:6381> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6382
192.168.73.10:6382> get hy
"hy"
192.168.73.10:6382> 

验证成功


总结

在配置主从复制上大家要注意的是配置项的修改

master服务器需要改的地方:

bind  监听地址
port  端口
protected-mode = no
daemonize = yes

slave需要修改的是

bind  监听地址
port  6380
protected-mode = no
daemonize = yes
slaveof 192.168.115.160 6379

并且需要注意去监听端口。

<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、付费专栏及课程。

余额充值