掘金 后端 ( ) • 2024-04-23 16:16

theme: vue-pro

一、什么是Redis7的主从复制

Redis 的主从复制是一种数据复制机制,用于在多个 Redis 服务器之间实现数据同步。

  • master以写为主,Slave以读为主

  • 当master数据变化的时候,自动将新的数据异步同步到其它slave数据库

二、主从复制的四种模式

前置操作

①准三台centos虚拟机IP分别为: 129、131、131

image.png

②恢复Redis的配置为原始配置

cd /java/redis/redis-7.0.2/

cp redis.conf /root/myredis/redisNeW.conf

image.png

2.1 一主二仆

配置步骤

①配置 IP:129 的Redis

2.1.1 开启daemonize yes

image.png

2.1.2 注释掉bind 127.0.0.1

image.png

2.1.3 protected-mode no

image.png

2.1.4 指定端口

image.png

2.1.5 指定当前工作目录,dir

image.png

2.1.6. pid文件名字,pidfile

image.png

2.1.7 log文件名字,logfile

image.png

2.1.8 requirepass 123456

image.png

2.1.9 dump.rdb名字

image.png

② 配置 IP:131 的Redis

2.2.1 将129的redis配置拷贝到131里面

scp /root/myredis/redisNew.conf [email protected]:/root/myredis

image.png

修改文件名为redis131.conf

2.2.2 replicaof

image.png

2.2.3 指定端口 6381

image.png

2.2.4 配置主机密码 masterauth 123456

image.png

③配置 IP:132 的Redis

2.3.1 将129的redis配置拷贝到132里面

scp /root/myredis/redisNew.conf [email protected]:/root/myredis 修改文件名为redis132.conf

2.3.2 replicaof

image.png

2.3.3 指定端口 6382

image.png

2.3.4 配置主机密码 masterauth 123456

image.png

④具体演示

2.4.1启动129的Redis

cd /usr/local/redis/bin/

./redis-server /root/myredis/redisNew.conf

./redis-cli -a 123456

image.png

2.4.2启动131的Redis

cd /usr/local/redis/bin/

./redis-server /root/myredis/redis131.conf

./redis-cli -a 123456 -p 6381

image.png

2.4.3启动132的Redis

cd /usr/local/redis/bin/

./redis-server /root/myredis/redis132.conf

./redis-cli -a 123456 -p 6382

image.png

查看129.的日志

image.png

image.png

image.png

1.从机可以执行写命令吗?

不可以,从机只有读写命令的去哪里

2.主机shutdown后,从机会上位吗?

不会,会一直等待到主机启动

3.主机shutdown后,重启后主从关系还在吗?从机还能否顺利复制?

还在,能顺利复制

4.某台从机down后,master继续,从机重启后它能跟上大部队吗?

可以

2.2改换门庭

① 将131的主机配置去掉

image.png

②将132的主机配置去掉

image.png

③ 重启Redis,查看三个Redis的主从状态 info replication

info replication

image.png

image.png

image.png

三个Redis都为主机

③ 将131,132重新用命令设定主机129

slaveof 主库IP 主库端口

slaveof 192.168.118.129 6379

image.png

image.png

④ 主机新增数据,查看从机是否同步更新

image.png

image.png

需要注意的是,通过手动命令设置的主从关系,一旦重启就失效了,是临时命令

2.3 薪火相传

Redis的薪火相传是指上一个 Slave(从服务器)可以是下一个 slave 的 Master(主服务器),Slave 同样可以接收其他 slaves 的连接和同步请求,那么该 slave 作为了链条中下一个的 master,可以有效减轻 master 的写压力,去中心化降低风险。

实现步骤

①131配置主机129

./redis-server /root/myredis/redis131.conf

./redis-cli -a 123456 -p 6381

slaveof 192.168.118.129 6379

image.png

②132配置主机131

./redis-server /root/myredis/redis131.conf

./redis-cli -a 123456 -p 6381

slaveof 192.168.118.131 6381

image.png

③ 查看各个Redis的主从状态

info replication

image.png

image.png

image.png

④ 129主机新增数据查看各个从机数据

image.png

image.png

image.png

2.4自立为王

Redis的自立为王是指将当前的 slave(从服务器)数据库停止与其他 master(主服务器)数据库的同步关系,转成主数据库。执行该操作后,该 slave 数据库将不再接收其他 master 数据库的数据同步,而是自己成为一个独立的主数据库,可以接受其他 slave 数据库的连接和数据同步请求。简单来说就是从从机变为主机

实现步骤

SLAVEOF no one

image.png

三、总结

本文主要介绍了什么是主从复制,以及主从复制的四种模式分别为:一主二仆、薪火相传、改换门庭、自立为王的意思以及如何配置和效果演示。