Redis——主从复制

一、概念
 主从复制,主机数据更新后根据配置和策略,自动同步到从机的master/slaver机制,Master以写为主,Slaver以读为主。这么做的好处:
 ①读写分离,提高性能
 ②容灾恢复,提升安全

二、配置
 原则:配从不配主,修改从机的配置文件,使用slaveof命令指定从属关系。步骤如下:
 ①复制redis.conf配置文件,同时修改配置文件名,在启动的时候是根据配置文件名启动的,同时启动该文件的时候会根据该文件中的配置启动,有几份就可以启动几个Redis服务
 ②修改配置文件内容
  a、开启daemonize yes
  b、Pid文件名字最好和端口一致
  c、指定端口,端口不能相同
  d、Log文件名字
  e、Dump.rdb名字,最好和端口一致
 ③启动多个Redis服务
在这里插入图片描述
 ④启动多个客户端,启动客户端的时候指定端口
在这里插入图片描述
 ⑤查看每个客户端的信息:使用info replication命令,在不指定从属关系的时候都是master
在这里插入图片描述
 ⑥使用slaveof ip 端口:指定从属关系,注意每次与master断开之后,都需要重新设置从属关系,除非你配置进redis.conf文件
在这里插入图片描述
  设置了从属关系之后,就变成了从机slaver,这时在主机中写入的数据会立即同步到从机,可以从从机获取到主机的数据
在这里插入图片描述
  一个主机可以有多个从机,主机中的数据会同步到所有的从机

三、常用的主从机设置模式
 1、一主多仆:一个主机,其他服务器都是该主机的从机,主机写为主,从机读为主
  几个问题:
   ①切入点问题:slave1、slave2是从头开始复制还是从切入点开始复制?答案是从头开始复制,从机中的数据总会保持和主机一致
   ②从机是否可以写(set可否):默认不可写,可以配置为可写

在这里插入图片描述
   ③主机shutdown后从机是上位还是原地待命:原地待命
   ④主机又回来了后,主机新增记录,从机还能否顺利复制:可以
   ⑤其中一台从机宕掉后再恢复它能跟上大部队吗?可以

 2、薪火相传:第一个从机slaveof主机,第二个从机slaveof第一个从机,第三个slaveof第二个从机…,就是说上一个slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力(因为主机不必同时向多个从机写数据,只需要向一个从机写数据),但如果中途变更转向(Slaveof 新主库IP 新主库端口),会清除之前的数据,重新建立拷贝最新的,其后续从机都会数据跟着改变,如果中途一个宕掉,后续的都会危险。

 3、反客为主:SLAVEOF no one,使当前数据库停止与其他数据库的同步,转成主数据库,当采用一主多仆时,主机宕掉时,可以修改从机执行slaveof no one将该从机变成主机

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

五、哨兵模式
 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库,这应该是最好的方式。
 ①在一个目录(比如/usr/local/bin)中创建配置文件sentinel.conf,注意该文件的名字不能错
 ②在sentinel.conf中配置哨兵:sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1,上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
在这里插入图片描述
 ③启动哨兵:Redis-sentinel /usr/local/bin/sentinel.conf,具体和配置文件的路径有关
 ④启动哨兵后如果主机挂了,会从各个从机中投票选举新的主机,投票过程:可以在启动了sentinel.conf的终端上看到
在这里插入图片描述
 ⑤投票结束,选出新的主机,数据就可以写入到新的主机了,之前的从机也都从属于新的主机
 ⑥如果之前的主机又重新启动,会自动变为新选出的主机的从机

注意:一组sentinel能同时监控多个Master

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值