redis(六) - 主从复制搭建

一、主从复制

  • 主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者是主服务器,后者是从服务器。

  • 一主多从:只能存在一个主服务器;可以有多个从服务器。主服务器负责写操作,从服务器负责读操作

  • 复制是单向的,只能由主服务器复制到从服务器

二、主从复制的作用

  • 读写分离:主服务器负责写操作,从服务器负责读操作。可以分担服务器压力,提高并发量

  • 高可用:主服务器出现故障时,从服务器可以升级为主服务器,迅速恢复服务

三、主从复制搭建

1、创建一个文件夹:

mkdir /myredis

2、将redis.conf 复制到myredis

cp /etc/redis.conf /myredis/redis.conf

3、在 myredis 中创建三个文件:

redis6379.conf、redis6380.conf、redis6381.conf

vi redis6379.conf
vi redis6380.conf
vi redis6381.conf

redis6379.conf :

include /myredis/redis.conf
port 6379
pidfile /var/run/redis_6379.pid
dbfilename dump6379.rdb
logfile “/var/log/redis/redis6379.log”

redis6380.conf :

include /myredis/redis.conf
port 6380
pidfile /var/run/redis_6380.pid
dbfilename dump6380.rdb
logfile “/var/log/redis/redis6380.log”

redis6381.conf :

include /myredis/redis.conf
port 6381
pidfile /var/run/redis_6381.pid
dbfilename dump6381.rdb
logfile “/var/log/redis/redis6381.log”

4、启动三个redis服务

redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf

5、配置主从关系

6379作为主服务器,6380 、6381 为从服务器

进入redis 80 服务,执行 slaveof IP port 命令

redis-cli -p 6380
127.0.0.1:6380> slaveof 127.0.0.1 6379

进入redis 81 服务,执行 slaveof IP port 命令

redis-cli -p 6380
127.0.0.1:6381> slaveof 127.0.0.1 6379

6、查看当前服务的主从复制信息

info replication

三、主从复制原理

  • 当从服务器连接上主服务器器后,就会向主服务器发送一个数据同步的请求

  • 主服务器收到请求后,将所有尚未执行的修改命令通过后台执行完毕之后,将 dump.rdb 文件传送给从服务器

  • 从服务器接受到数据后将数据存到内存并进行持久化(全量复制)

  • 此后每当主服务器执行修改命令,都会依次传送给从服务器进行同步(增量复制)

当主服务器宕机后,与从服务器依旧存在主从关系
当从服务器宕机后,就不在与主服务器有主从关系,需要重新确立关系

四、薪火相传

将 6381 变为 6380 的从服务器

127.0.0.1:6381> slaveof 127.0.0.1 6380

这样就形成了6379 是 6380 的主服务器,而 6380 是 6381 的主服务器。那么 每次 6379 同步数据时只需要同步到 6380 服务器中就行了。后面的交给6380 同步给它的其他从服务器

在这里插入图片描述
但这种方式存在一个缺点,如果 6380 宕机,就会影响其他的服务器的数据同步

五、反客为主

当主服务器出现故障时,可以在从服务器中选择一台作为主服务器

假如 6379 宕机,将 6380 作为主服务器

127.0.0.1:6380> slaveof no one

此种方式可以将 6380 变为主服务器,但 6381 依旧是 6379 的从服务器,即使 6379 已经宕机

哨兵模式

反客为主的自动版,能够后台监控主服务器是否故障;如果故障了,在从服务器中选举出新的主服务器

1、在 myredis 文件夹下创建 sentinel.conf 文件

sentinel.conf

sentinel monitor mymaster 127.0.0.1 6379 1

其中 mymaster 为 监控对象起的别名 ; 1 表示至少有一个哨兵确认主服务器出故障,然后才会对从服务器进行选举

2、启动哨兵

redis-sentinel /myredis/sentinel.conf

3、选举流程

当确认主服务器器故障时

1、在从服务器中选一个作为主服务器

选举条件为:

a、选择优先级高的服务器(replica-priority 100 :数值越小优先级越高)
b、选偏移量大的服务器(与主服务器的同步越多偏移量越大,数据越完整)
c、选runid最小的服务器(redis每次启动会随机生成40位的runid)

2、挑选出新的主服务器之后,sentinel 向剩余的从服务器 发送 slaveof 命令,从服务器变为新主服务器的 slave

3、当旧主服务器重新上线时,sentinel 会向其它从服务器发送 slaveof 命令 ,让其成为新主服务器的 slaveof

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis主从复制是将一台主Redis服务器的数据复制到其他从Redis服务器的过程。主服务器负责写操作,从服务器负责读操作。主从复制可以减轻主服务器的读写压力和服务器负载,提高系统的性能和可靠性。搭建Redis主从复制的步骤如下: 1. 配置主服务器:在主服务器的配置文件中,设置`slaveof`指令,指定从服务器的IP地址和端口号。重启主服务器使配置生效。 2. 配置从服务器:在从服务器的配置文件中,设置`slaveof`指令,指定主服务器的IP地址和端口号。重启从服务器使配置生效。 3. 启动主从服务器:先启动主服务器,再启动从服务器。从服务器会自动连接到主服务器并开始同步数据。 4. 验证主从复制:可以使用`info replication`命令查看主从服务器的复制状态。如果状态显示为`connected`,则表示主从复制已成功搭建。 需要注意的是,主从复制是单向的,只能由主服务器向从服务器复制数据。从服务器只能提供读操作,不能进行写操作。如果主服务器发生故障,可以将一个从服务器提升为新的主服务器,以保证系统的可用性。 引用\[1\]中提到了主从复制的概念和基本原理,引用\[2\]和\[3\]提供了关于Redis主从复制的详细说明和搭建步骤。 #### 引用[.reference_title] - *1* *2* [Redis主从复制搭建](https://blog.csdn.net/qq_56370103/article/details/126247390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Redis主从复制架构搭建](https://blog.csdn.net/Trunks2009/article/details/107562575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值