Redis 主从复制

时间:2022-10-14 07:59:29

前戏

单节点Redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从复制集群,实现读写分离。

主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后
者称为从节点(slave);

数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

目前很多中小企业都没有使用到 Redis 的集群,但是至少都做了主从。有了主从,当 master 挂掉的时候,运维让从库过来接管,服务就可以继续,否则 master 需要经过数据恢复和重启的过程,这就可能会拖很长的时间,影响线上业务的持续服务。

Redis 主从复制

主从复制的作用

主从复制的作用主要包括:

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

从复制特点

  • ​一个master可以有多个slave
  • 一个slave只能有一个master
  • 数据流向是单向的,master到slave

注:redis主从复制原来与mysql大致相同,不多累述

redis主从复制搭建

1.创建三个没用的目录

mkdir 6001 6002 6003

2.将配置文件cp到对应目录

echo 6001 6002 6003 | xargs -t -n 1 cp redis.conf
sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/rds\/6001\//g' 6001/redis.conf
绑定ip
printf '%s\n' 6001 6002 6003 | xargs -I{} sed -i '1a replica-announce-ip 192.168.100.190' {}/redis.conf
...

3.启动redis

[root@bk rds]# redis-server 6001/redis.conf 
[root@bk rds]# redis-server 6002/redis.conf
[root@bk rds]# redis-server 6003/redis.conf

Redis 主从复制

4.配置从节点

# 6002
redis-cli -p 6002
127.0.0.1:6002> slaveof 192.168.100.190 6001
# 6003
redis-cli -p 6003
127.0.0.1:6003> REPLICAOF 192.168.100.190 6001

Redis 主从复制

5.验证主从复制配置是否生效

Redis 主从复制

slave 状态只读无法写入数据

192.168.100.190:6002> set nu 2
(error) READONLY You can't write against a read only replica.