1. 概念
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower),数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主,从节点以读为主)。

默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能有一个主节点。
2. 作用
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
- 故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式。
- 负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的压力;尤其是在读多写少的场景下,通过多个从节点分担负载,提高并发量。
- 高可用基石:主从复制还是哨兵和集群能够实施的基础。
3. 为什么使用集群
- 单台服务器难以负载大量的请求
- 单台服务器故障率高,系统崩坏概率大
- 单台服务器内存容量有限
4. 环境配置
redis.conf 中的replication模块
查看当前库的信息:info replication
127.0.0.1:6379> info replication # 查看当前库的信息
# Replication
role:master # 角色 master
connected_slaves:0 # 从机 0 个
master_replid:9a78b49fde23e317cda2a52eccbaa575e28dcab5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
既然需要启动多个服务,就需要多个配置文件。
 
每个配置文件对应修改一下信息:
- 端口号
- pid文件名
- 日志文件名
- rdb文件名
 ![在这里插入图片描述]() 

 
启动单机多服务集群
 
5. 一主二从配置
默认情况下,每台Redis服务器都是主节点;我们一般情况下只用配置从机就好了
 一主(79)二从(80,81)
 
使用slaveof host port命令就可以为从机配置主机了
- 6380
 ![在这里插入图片描述]() 
- 6381
 ![在这里插入图片描述]() 
- 主机6379
 ![在这里插入图片描述]() 
这里是使用命令搭建,是暂时的,真实开发中应该在从机的配置文件中进行配置,这样的话是永久的

6. 使用规则
- 从机只能读,不能写,主机可读可写,但多用于写。# 从机6381 只能读不能写 127.0.0.1:6381> set name zhangsan (error) READONLY You can't write against a read only replica. 127.0.0.1:6381> get name "zhangsan" # 主机6379 可以读写 127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> get name "zhangsan"
- 当主机断电宕机后,默认情况下从机的角色不会发生变化,集群中只是失去了写操作, 当主机恢复以后,又会连接上从机恢复原状。
- 当从机断电宕机后,若不是使用配置文件配置的从机,再次启动后作为主机是无法获取之前主机的数据的,若此时重新配置成为从机,又可以获取到主机的所有数据。这里就要提到一个同步原理。
- 第二条中提到,默认情况下,主机故障后,不会出现新的主机,有两种方式可以产生新的主机: 
  - 从机手动执行slaveof no one,这样执行以后从机会独立出来成为一个主机
- 使用哨兵模式(自动选举)
 
- 从机手动执行
如果主机断开了连接,可以使用
slaveof no one让自己变成主机!其他的节点就可以手动连接到最新的主节点(手动)!如果这时候主机恢复了,那么就重新连接!
 
                    
                 




 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号