最新Redis7主从复制(保姆级教程)

前提准备:三台云服务器(吐血消费,点赞回血)也可以使用虚拟机创建三台,但是我搞了一天也连接不上,要是又可以连接上的大家可以教我一下,也可以参考一下或者大家可以参考一下这个大佬的配置:如何配置虚拟机

官网解释:

最新Redis7主从复制(保姆级教程)_第1张图片

一句话解释:master以写为主,slave以读为主;就是当master数据变化的时候,自动将新的数据异步同步到其他slave数据库

                        ​​​​​​最新Redis7主从复制(保姆级教程)_第2张图片

配置文件修改

我们使用vim redis.conf 在视图模式使用:set number 就可显示行数

开启daemonize yes 

注释掉bind 127.0.0.1 

protected-mode no 

指定端口 

指定当前工作目录:dir  

pid文件名字:pidfile 

log文件名字:logfile 

密码设置:requirepass 

dump.rdb名字 

aof文件:appendfilename 

从机访问主机的通行密码masterauth,必须

常用三招

一主二仆

配置文件固定写死

我们按照上述配置文件,修改一下我们的文件

先master后slave依次启动

最新Redis7主从复制(保姆级教程)_第3张图片

最新Redis7主从复制(保姆级教程)_第4张图片

最新Redis7主从复制(保姆级教程)_第5张图片

此时我们可以看见,每个redis服务器都执行keys *的时候,都可以把所有元素都打印一下

我们可以通过日志查看一下主从关系

主机日志:使用vim 6379.log

最新Redis7主从复制(保姆级教程)_第6张图片

从机日志:

最新Redis7主从复制(保姆级教程)_第7张图片

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

此时我们可以看到,我们使用从机设置的时候,报错了!!!

2、slave是从头开始复制还是从切入点开始复制?

master启动,写到k3

slave1跟着master同时启动,跟着写到k3

slave2写到k3后才启动,那之前的是否也可以复制?

最新Redis7主从复制(保姆级教程)_第8张图片

此时我们可以发现,slave2把所有内容都同步了,结论:首次一锅端,后续跟随,master写,slave跟

3、主机shutdown后情况如何?从机是上位还是原地待命

最新Redis7主从复制(保姆级教程)_第9张图片

从机不动,原地待命,从机数据可以正常使用;等待主机重启动归来,当主机回来后,青山依旧在!!!

4、某台从机down后,amster继续,从机重启后能否跟上大部队?

最新Redis7主从复制(保姆级教程)_第10张图片

由此我们可以知道,无论是那个从机down机了,重连之后都会从主机复制所有内容

命令操作手动指定

刚刚我们是吧主从关系写到配置文件中,这样只要一开机,就会自动连接主机,现在我们要实现手动连接

1、从机停机去掉配置文件中的配置项,三台都是主机的状态,各不从属

最新Redis7主从复制(保姆级教程)_第11张图片

2、使用info replication查看主从关系

最新Redis7主从复制(保姆级教程)_第12张图片

预设的从机上执行 slaveof 主机ip 端口号

最新Redis7主从复制(保姆级教程)_第13张图片

此时我们可以看见执行该命令的机器变成从机

如果从机重启的话关系还在呢

最新Redis7主从复制(保姆级教程)_第14张图片

很显然,我们重启之后这种主从关系就消失了

薪火相传

关于上述的一主二从的关系是比较鸡肋的,因为多个从机连接一个master会增加master的压力;所以我们要实现一种方法:

上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻主master的写压力

最新Redis7主从复制(保姆级教程)_第15张图片

反客为主

使当前数据库停止与其他数据库的同步,转为master

最新Redis7主从复制(保姆级教程)_第16张图片

复制的工作原理和工作流程

slave启动,同步初始

slave启动成功连接到master后会发送一个sync命令、

slave首次全新连接master,一次完全同步(全量复制)将会被自动执行,slave自身原有数据将会master数据覆盖清除

首次连接,全量复制

master节点收到sync命令后,会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接受到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,master将RDB快照文件和所有缓存的命令发送到slave,已完成一次完全同步

slave服务器在收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

心跳持续,保持通信

master发出PING包的周期,默认是10

进入平稳,增量复制

Master继续将新的所有收集到的修改命令自动依次传给slave,完成同步

从机下线,重连续传

Master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

复制缺点

复制延时,信号衰减

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        最新Redis7主从复制(保姆级教程)_第17张图片

master挂了怎么办

默认情况下,不会在slave节点中自动重选一个master,那么都要人工干预呢?无人值守变成刚需,那么我们请静等下集:哨兵!!!

你可能感兴趣的:(Redis,redis,java,数据库)