Redis 主从配置

就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

主要功能

  • 读写分离

  • 容灾恢复

配置方法

  • 配从(库)不配主(库)

  • 从库配置:slaveof 主库IP 主库端口

    • 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件

    • Info replication:可以查看Redis主从情况

修改配置文件细节操作

  1. 拷贝多个redis.conf文件

  2. 开启daemonize yes

  3. Pid文件名字

  4. 指定端口

  5. Log文件名字

  6. Dump.rdb名字

配置三台Redis,端口分别为 6379、6380、6381

修改配置

# Redis 6379
cp redis.conf redis6379.conf

daemonize yes
pidfile /var/run/redis6379.pid
port 6379
logfile "6379.log"
dbfilename dump6379.rdb

# Redis 6380
cp redis.conf redis6380.conf

daemonize yes
pidfile /var/run/redis6380.pid
port 6380
logfile "6380.log"
dbfilename dump6380.rdb

# Redis 6381
cp redis.conf redis6381.conf

daemonize yes
pidfile /var/run/redis6381.pid
port 6381
logfile "6381.log"
dbfilename dump6381.rdb

一主二从

主Redis不用改变。

分别使用三个配置文件启动Redis,使用redis客户端连接Redis。

6380、6381执行SLAVEOF 127.0.0.1 6379命令,将自己设置为从数据库,复制6379的数据

使用 Info replication 查看主从情况

注意

  1. 从机是复制主机的所有数据

  2. 从机Redis只能get,不能set

  3. 主Redis宕机后,从Redis不变。

  4. 从Redis宕机后,主Redis不变,从Redis变为Master,主从体系断开。

  5. 如果主从配置写入配置文件,则重启后继续主从模式,否则需要重新配置

薪火相传

配置文件不变

6380执行SLVAEOF 127.0.0.1 6379命令

6381执行SLVAEOF 127.0.0.1 6380命令

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力

反客为主

主机宕机后,从机将变为主机。

SLAVEOF no one 命令可以使当前数据库停止与其他数据库的同步,转成主数据库。

6381执行SLVAEOF 127.0.0.1 6380命令

复制原理

  1. Slave启动成功连接到master后会发送一个sync命令

  2. Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步(全量复制)

  3. 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

哨兵模式(*)

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

配置方法

1.调整结构,6379带着80、81

2.自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

配置哨兵,填写内容

sentinel monitor 被监控数据库名字(自己起名字)127.0.0.1 6379 1

上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

3.启动哨兵 redis-sentinel /myconf/sentinel.conf

4.如果原master挂了,则后台监视器会自动投票,从从机中选出新的master

5.如果以前的master回来了,则他会自动变成slave,并挂到新的master下面

一组sentinel能同时监控多个Master

复制缺点

复制延时:由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

<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 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值