Redis主从复制(master/slave)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis主从复制(master/slave)

Redis主从复制(master/slave)

1 概念

一个主人有好几个仆从

2 一台Redis服务器(主master)的数据复制到其他多个Redis服务器(从slave),主机主要进行写的操作,从记进行读的操作

3 主从复制主要为了解决读写分离,80%的情况下都是在进行读操作,我们把所有读操作的压力分配到从机上,写的操作请求交给主机进行处理,这样的模式可以减缓服务器压力,在架构中经常使用,最低的配置一般是三个,即为一主二从

我们在开发中最低的配置一般是三个,即为一主二从

网络异常,图片无法展示
|

4 基本的一主二从模型

暂时无法在文档外展示此内容

网络异常,图片无法展示
|

5 主从复制的作用

网络异常,图片无法展示
|

6 为什么使用主从复制?

如果只有一台redis服务器的话,如果发生宕机会导致数据丢失,而且读写不分离会给redis造成过大的压力,在公司中,主从复制是必须使用的

网络异常,图片无法展示
|

7 配置主从复制环境(注:目前没有Linux系统,在windows10上进行操作,有的是截图)

1 默认情况下,每台Redis服务器都是主节点 ,Redis配置主从复制记住一句话:只配置从库,不用配置主库,Redis默认自己本身就是一个主库

2 查看当前库的信息的命令

127.0.0.1:6379> info replication #查看当前库的信息
# Replication
role:master #角色 从机 当前是个主机
connected_slaves:0 #当前连接的从机个数 当前有0个从机,没有从机
master_replid:2f88f386e76af7e9b23fcd6909e49529e48492e6 #随机生成的ID
master_replid2:0000000000000000000000000000000000000000 #随机生成的ID
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

3 linux下配置需要修改复制三个配置文件,修改对应的信息

1.端口号
2.pid 名字
3.log文件 日志名字
4.dump.rdb备份文件名字

4 修改完毕之后,启动我们的3个redis服务器,可以通过进程命令查看信息 ps-ef|grep redis

网络异常,图片无法展示
|

5 默认情况下,每台Redis服务器都是主节点,我们一般情况下只需要去配置从机就好了

认老大 一主二从

1 从机进行配置
 真实的主从复制配置应该是在文件中进行配置的,这样的话就是永久的.我们这里使用的是命令,是暂时的
1 使用配置文件配置
需要把注释解开,把主机的ip+端口进行填入,如果主机有密码的话,还需要写入主机的密码

网络异常,图片无法展示
|

2 使用命令配置(slaveof)
1 给从机进行配置并且查看从机信息
127.0.0.1:6379> slaveof 127.0.0.1 6379 #从机进行配置主机 ip 端口 找谁当自己老大
OK
127.0.0.1:6379> info replication #查看本机信息
# Replication
role:slave #当前角色是从机
#可以看到主机信息
master_host:127.0.0.1 #主机ip
master_port:6379 #主机端口
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:1638625163
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:9a6a05f442945636e5a8bd3623a7d398efa43f1f
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
2 查看主机配置

网络异常,图片无法展示
|

如果继续在从机上进行slaveof配置主机信息,那么从机的数量也会继续进行变化

3 主机从机配置以及数据共享的细节
1 主机可以写(设置值),从机只能读,不能写,主机中的所有信息和数据,都会自动被从机保存,就算主机蹦了,但是数据不会丢失,会保存在从机中

1 主机写数据

网络异常,图片无法展示
|

2 从机也可以读取到相同的数据,但是从机不能写

网络异常,图片无法展示
|

2 如果主机断开连接宕机,从机依旧是可以连接到主机的读取数据的,但是没有写操作了(因为主机断了),这个时候如果主机回来了(正常运行),从机依旧可以直接获取到主机的信息(保证了我们的高可用性,当然我们目前这个策略还不行,高级点的策略应该是,就算我主机断了,从机们也会立马选举出来一个从机作为主机)
3 如果是命令行配置我们的主从复制,我们的从机断了(宕机)后再次连接,不进行配置的话就会变成主机(默认是一个主机),不会读取到我们配置的那个主机的数据,如果我们收到使用slaveof命令配置主机的话,还是可以正常读取到我们主机的数据

8 复制原理(全量复制,增量复制)

网络异常,图片无法展示
|

9 另外一种主从配置方式

主机-》从机/主机-》从机

层层链路,上一个master连接下一个slave,依次这样连接,这种的方式也是可以完成我们的主从复制的

暂时无法在文档外展示此内容

10 如果没有老大了(主机),那么能不能选择在我们的从机中选择一个老大出来呢?

在哨兵模式没有出来前,我们一般通过手动来完成的 (slaveof no one),如果主机断开连接了,那么我们可以使用slaveof no one使自己作为主机,其他的节点就可以手动连接到最新的那个主机(主节点),如果这个时候老大(主机)恢复了,那就只能重新配置连接,哨兵模式出来以后,我们就不用手动来配置,可以自动完成这一系列的操作
127.0.0.1:6379> slaveof no one #让自己做主机
OK
127.0.0.1:6379> info replication #查看本机信息
# Replication
role:master #主机
connected_slaves:0 #没有从机 从机个数为0
master_replid:2bd621cb6661097489977e9547aae78ad351d7e4
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
127.0.0.1:6379>


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1天前
|
存储 负载均衡 NoSQL
Redis之主从复制
【1月更文挑战第8天】主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
182 3
|
1天前
|
NoSQL 关系型数据库 MySQL
Redis高可用之主从复制架构(第一部分)
Redis高可用之主从复制架构(第一部分)
|
1天前
|
监控 NoSQL 容灾
【Redis】主从复制
【Redis】主从复制
|
1天前
|
负载均衡 NoSQL 关系型数据库
深入浅出Redis(六):Redis的主从架构与主从复制原理
深入浅出Redis(六):Redis的主从架构与主从复制原理
|
1天前
|
监控 NoSQL Redis
redis主从复制
redis主从复制
|
1天前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1天前
|
负载均衡 NoSQL 容灾
|
1天前
|
NoSQL Linux 网络安全
解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~
解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~
|
1天前
|
NoSQL Java Redis
Redis的主从复制是什么?它的作用是什么?
Redis的主从复制是什么?它的作用是什么?
39 0
|
1天前
|
NoSQL Redis 数据库
redis主从复制
redis主从复制
46 0