码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 主从复制

时间:2021-05-24 08:53:45      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:发送   mic   指定   内存   完全   主服务器   eof   指示   http   

一、简介

官网介绍

行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。

二、准备工作

准备三个服务器配置文件,以6379、6380、6381三个端口为例。

步骤1:拷贝多个redis.conf文件

技术图片

步骤2:开启daemonize yes

技术图片

步骤3:pidfile文件名字

技术图片

步骤4:指定端口

技术图片

步骤5:log文件名字

技术图片

步骤6:dump.rdb名字

技术图片

配置完以后启动三个redis实例,此时三个实例地位相同,都是master

技术图片

技术图片

技术图片

三、一主双从配置

可以使用SLAVEOF命令将该实例设置为从机

技术图片

将6380、6381都设置为从机后,再看主机的情况

技术图片

  • Slave会在启动后完全复制Master的数据。
  • Slave只能读不能写
  • Master宕机后,Slave原地待命,不会自动变成Master,Master重启后,如果写入数据,Slave依然会复制。

注意:SLAVEOF命令是一次性的,如果Slave宕机后,重启后会变成Master,除非将slaveof命令写入配置文件。

技术图片

四、薪火相传

  • 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
  • 中途变更转向会清除之前的数据,重新建立拷贝最新的
  • slaveof 新主库IP 新主库端口

技术图片

 技术图片

 技术图片

五、反客为主

SLAVEOF no one

使当前slave停止与其他实例的同步,转成master

技术图片

六、复制原理

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

七、哨兵模式(sentinel)

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

步骤1:调整结构6379带着6380、6381

步骤2:自定义的/opt/myredis目录下新建sentinel.conf文件,名字绝不能错

步骤3:配置哨兵,填写内容

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
  • 第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。
  • 不过要注意, 无论你设置要多少个 Sentinel 同意才能判断一个服务器失效, 一个 Sentinel 都需要获得系统中多数(majority) Sentinel 的支持, 才能发起一次自动故障迁移, 并预留一个给定的配置纪元 (configuration Epoch ,一个配置纪元就是一个新主服务器配置的版本号)。
  • 换句话说, 在只有少数(minority) Sentinel 进程正常运作的情况下, Sentinel 是不能执行自动故障迁移的。

其他选项的基本格式如下:

sentinel <选项的名字> <主服务器的名字> <选项的值>

步骤4:启动哨兵

redis-sentinel /opt/myredis/sentinel.conf

上述目录依照各自的实际情况配置,可能目录不同

步骤5:测试

主动将6379停掉,sentinel开始选举新的master,最终6380被选为新的master,6381为slave

技术图片

注意sentinel不仅将存活的6381选为slave,6379如果重启也会作为slave存在

技术图片

 

Redis 主从复制

标签:发送   mic   指定   内存   完全   主服务器   eof   指示   http   

原文地址:https://www.cnblogs.com/jwen1994/p/14554347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!