Redis主从复制
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
主从复制的作用
主从复制的作用主要包括:
1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2.故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3.负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4.高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
从节点开启主从复制,有3种方式:
1.配置文件
在从服务器的配置文件中加入:slaveof
2.启动命令
redis-server启动命令后加入 –slaveof
3.客户端命令
Redis服务器启动后,直接通过客户端执行命令:slaveof
上述3种方式是等效的,下面以客户端命令的方式为例,看一下当执行了slaveof后,Redis主节点和从节点的变化。
试验环境搭建
操作系统环境:CentOS8
Redis版本:6.0.8(Redis已经提前安装好了)
Redis安装路径:/redis
Redis配置文件名:6379.conf
IP | HOST | PORT | ROLE |
---|---|---|---|
192.168.10.11 | redis1 | 6379 | Master |
192.168.10.12 | redis2 | 6379 | Slave1 |
1.启动各个节点的redis
redis-server /redis/conf/6379.conf
2.开放redis的端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
3.修改主服务器上的redis.conf修改bind参数
bind 0.0.0.0
4.建立复制
在Slave1节点执行slaveof命令,使之变为从节点
5.在从库上查询主库的数据
6.在从库上插入数据(你会发现从库是只读的)
7.查看使用info命令 主节点和从节点偏移量 master_repl_offset (如果差的很多说明复制有问题)
8.slaveof no one 命令 取消复制
9.查看主从节点日志文件
从节点执行slaveof no one后,打印日志如下所示;可以看出断开复制后,从节点又变回为主节点。
主节点日志如下,可以发现断开复制后,主节点将丢失从节点