0
点赞
收藏
分享

微信扫一扫

Redis主从复制(下)


Redis主从复制[下]

  • ​​5.2 薪火相传:​​
  • ​​5.2.1 配置之前先查看主机的主从配置信息:​​
  • ​​5.2.2 配置6381端口的主机位6380端口:​​
  • ​​5.2.3 查看6381端口的主从配置信息:​​
  • ​​5.2.4 查看6380端口的主从配置信息:​​
  • ​​5.2.5 查看主机6379端口:​​
  • ​​5.2.6 主机(6379端口)设置值:`set k9 v9`​​
  • ​​5.2.7 从机获取值:​​
  • ​​5.3 反客为主​​
  • ​​5.3.1 假设主机挂掉:​​
  • ​​5.3.2 配置6380反客为主​​
  • ​​5.3.3 让6381的主机变为6380​​
  • ​​5.3.4 6379重新启动:​​
  • ​​5.4 复制原理​​
  • ​​5.5 哨兵模式​​
  • ​​5.5.1 什么是哨兵模式:​​
  • ​​5.5.2 创建sentinel.conf文件​​
  • ​​5.5.3 启动哨兵​​
  • ​​5.5.4 挂掉6379端口(原来的主机),测试哨兵的监控​​
  • ​​5.5.5 查看6381(新的master)和6380端口的主从配置​​
  • ​​5.5.6 如果之前的master重启回来,会不会冲突?​​
  • ​​5.6、复制的缺点:复制延时​​


上篇链接:

​​javascript:void(0)​

5.2 薪火相传:

  • 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
  • 中途变更转向:会清除之前的数据,重新简历拷贝最新的
  • 命令:slaveof 新主库IP 新主库端口
    我们现在将6379作为主机,将6380作为6379的从机,将6381作为6380的从机

5.2.1 配置之前先查看主机的主从配置信息:

info replication

6379:

Redis主从复制(下)_主从配置

5.2.2 配置6381端口的主机位6380端口:

SLAVEOF 127.0.0.1 6380

5.2.3 查看6381端口的主从配置信息:

info replication

Redis主从复制(下)_redis_02

5.2.4 查看6380端口的主从配置信息:

Redis主从复制(下)_主从配置_03

可以看到6380端口的role还是slave,且从机为6381

5.2.5 查看主机6379端口:

Redis主从复制(下)_80端口_04

可以看到6379端口的从机是6380

5.2.6 主机(6379端口)设置值:​​set k9 v9​

Redis主从复制(下)_80端口_05

5.2.7 从机获取值:

Redis主从复制(下)_主从配置_06


Redis主从复制(下)_80端口_07

5.3 反客为主

假设配置之前,6379端口的机器为主机,6380和6381都是6379的从机。

5.3.1 假设主机挂掉:

Redis主从复制(下)_linux_08

5.3.2 配置6380反客为主

SLAVEOF no one

Redis主从复制(下)_redis_09


再设置个值

Redis主从复制(下)_数据库_10

5.3.3 让6381的主机变为6380

SLAVEOF 127.0.0.1 6380

Redis主从复制(下)_redis_11

获取k10

Redis主从复制(下)_数据库_12

5.3.4 6379重新启动:

Redis主从复制(下)_80端口_13


可以看到,这个没有从机。获取k10也获取不到。

5.4 复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

5.5 哨兵模式

5.5.1 什么是哨兵模式:

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
配置哨兵:假设现在的主机是6379端口,6380和6381端口的都是从机。

5.5.2 创建sentinel.conf文件

在自定义的目录下面创建sentinel.conf文件

我的目录是 /myredis/

Redis主从复制(下)_80端口_14

touch sentinel.conf
vi sentinel.conf

Redis主从复制(下)_80端口_15


在文件内添加:

sentinel monitor host6379 127.0.0.1 6379 1

意思让哨兵监听6379端口,上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

5.5.3 启动哨兵

cd /usr/local/bin
ll

Redis主从复制(下)_redis_16


启动:​​redis-sentinel /myredis/sentinel.conf​

Redis主从复制(下)_redis_17

5.5.4 挂掉6379端口(原来的主机),测试哨兵的监控

Redis主从复制(下)_redis_18


查看哨兵的监控情况:

如下图,可以看到,投票选出新的master为端口为6381端口的机器。

Redis主从复制(下)_redis_19

5.5.5 查看6381(新的master)和6380端口的主从配置

info replication

6380端口:

Redis主从复制(下)_80端口_20


6381端口:

Redis主从复制(下)_数据库_21


可以看到,现在的情况是6381端口的机器为主机,6380端口的机器为从机。

5.5.6 如果之前的master重启回来,会不会冲突?

让6379端口的机器重启:

redis-server /myredis/redis6379.conf
redis-cli -p 6379

Redis主从复制(下)_linux_22


我们查看下改机器的主从配置:

info replication

Redis主从复制(下)_80端口_23


可以看到,6379已经变成了6381的从机

再查看下6381的主从配置:

Redis主从复制(下)_数据库_24

可以看到主机6381下面有两个从机6379和6380

查看哨兵的监控情况:

Redis主从复制(下)_redis_25


可以看到,哨兵监控到原来的6379主机复活之后,将其作为了新挑选出的主机6381的从机。

5.6、复制的缺点:复制延时

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


举报

相关推荐

redis主从复制

Redis 主从复制

Redis —— 主从复制

Redis:主从复制

Docker下配置Redis的主从复制

0 条评论