redis主从复制

尚硅谷官方bilibili教学视频:https://www.bilibili.com/video/BV1Rv41177Af?p=31&spm_id_from=pageDriver

一、主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master)后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

在这里插入图片描述
主从复制的作用
主从复制的作用主要包括:

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

二、搭建一组多从

将配置文件中的daemonize属性值改为yes
在这里插入图片描述
创建多个配置文件启动redis,这里我们开启三个redis服务,端口分别是6379、6380、6381,其中6379端口为主服务,其他两个为从服务器。

创建三个端口的配置文件

自己选定一个文件夹,将你的redis.conf复制到这个文件夹里方便使用include将公共配置引入进来,然后再创建每个端口redis服务器对应的服务配置文件。
1. 新建redis6379.conf配置文件

# 使用vim编辑器创建redis6379.conf配置文件
[root@iZbp10ofdiqqy3ld2kiahtZ myredis]# vim redis6379.conf

# 然后输入以下内容
include /myredis/redis.conf		#将原来的redis配置文件引入
pidfile /var/run/redis_6379.pid  #redis服务的进程名
port 6379   #端口
dbfilename dump6379.rdb		#指定rdb持久化文件名

# esc退出编辑模式、进入底线模式,输入wq保存退出
:wq

到这主redis服务器的配置文件配置完成。其他两个从服务器只要改下对应的redis服务的进程名、端口、rdb持久化文件名即可。

2. 新建redis6380.conf配置文件

# 使用vim编辑器创建redis6379.conf配置文件
[root@iZbp10ofdiqqy3ld2kiahtZ myredis]# vim redis6380.conf

# 然后输入以下内容
include /myredis/redis.conf		#将原来的redis配置文件引入
pidfile /var/run/redis_6380.pid  #redis服务的进程名
port 6380   #端口
dbfilename dump6380.rdb		#指定rdb持久化文件名

# esc退出编辑模式、进入底线模式,输入wq保存退出
:wq

3. 新建redis6381.conf配置文件

# 使用vim编辑器创建redis6379.conf配置文件
[root@iZbp10ofdiqqy3ld2kiahtZ myredis]# vim redis6381.conf

# 然后输入以下内容
include /myredis/redis.conf		#将原来的redis配置文件引入
pidfile /var/run/redis_6381.pid  #redis服务的进程名
port 6381   #端口
dbfilename dump6381.rdb		#指定rdb持久化文件名

# esc退出编辑模式、进入底线模式,输入wq保存退出
:wq
启动三台redis服务器

启动这三台服务之前要将原来已经启动6379的redis服务器停掉

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

执行完上命令后,查看服务是否已经都启动了
在这里插入图片描述查看三台主机运行的情况
使用redis-cli进入不同服务器、使用info replication查看各个服务器的主从关系
6379端口:
在这里插入图片描述6380端口:
在这里插入图片描述6381端口:
在这里插入图片描述可知每台服务器都是独立的、并没有主从关系。

配置主从关系

配置主从关系时遵循配主不配从的规则、也就是在从服务器中执行命令slaveof 服务器的ip地址 服务器的端口号指定主服务器

# 将端口为6380和6381端口的服务器的主服务器设定为6379
slaveof localhost 6379

执行这个命令之后分别使用info replication查看各个服务器的主从关系。
6381端口:

在这里插入图片描述

6380端口:

在这里插入图片描述

6379端口:

在这里插入图片描述

1、配置完后、只能在主服务器上写数据,从服务器不能写数据。
在这里插入图片描述

2、主机写数据、从机都能接收到数据
3、主机挂掉,重启就行,一切如初
4、从机重启不会是原来的状态需要重新设置,重设:slaveof 127.0.0.1 6379

三、主从复制的原理

1、主服务器每次进行写数据,会主动发送消息给从服务器同步数据,原理是通过同步rdb持久化文件实现。

2、当从服务器挂掉后,重启重新设定后会发送请求给主服务器要求同步数据、当主服务器接收到消息之后会将数据进行持久化到rdb文件中,然后将rdb文件发送给从服务器,从服务器拿到rdb文件读取数据进行同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值