redis 主从复制

定义:
也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
备份时间切片点:
slaver会备份master的所有数据。
原则:
slaver给人的感觉是静默的角色。 如果master挂了,slaver会是只读状态等待。

1、主从复制搭建

配置修改:

  • 端口
  • dump.rdb
  • appendfilename
  • logfile

查看配置:

  • info replication
    查看master-slave 角色

clipboard.png

  • slaveof 127.0.0.1 6379
    设置为slave,关联master
  • slaveof no one
    如果某台机器是slave, 该命令可以摆脱原有主从体系和slaver角色,变成一台普通的机器。

2、主从使用

一主多仆:

clipboard.png

  • 读写情况:
    slaveof 127.0.0.1 6379 连接主机后,slave 中会有master的所有数据,但是slave是只读的,只有master可以写。
  • 宕机情况:
    master宕机,slaver 还可以读(依旧不能写),如果master重启,那么slaver还会连接这个master,恢复到宕机前。
    slaver宕机,slaver宕机后重启,会失去slaver角色,变为一台普通的机器,也就是说,slaveof host post 只是有效一次。

薪火相传:

clipboard.png
ip2的机器还是slaver角色,但是他有自己的slaver.
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。

反客为主:
slaveof no one 摆脱原有的slaver角色。

3、主从复制原理:

先全量复制,再增量复制
slaver第一次连接master,会全部复制master 所有的,之后master每次写,再增量复制到slaver.
clipboard.png

4、哨兵模式

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

步骤:

  • 新建 sentinel.conf
    sentinel monitor mymaster 127.0.0.1 6379 1
    固定 固定 master的名称 masterip masterhost 谁的票数大于1,谁是master
  • 启动master和其它机器
  • slaveof ip host 确定master 和slaver
  • 启动 哨兵
    ./redis-sentinel /path/sentinel.conf

说明:

clipboard.png

注意:

6379 master
6380 slaver
6381 slaver

1、master(6379)挂掉后,会从slave中选举出新的master,(需要一定时间),选举新的master之后.假设新的master是6381,人工启动6379机器,这时,6379机器会以slaver角色加入集群,作为6381的slaver。
2、在redis5.0版本测试发现, 如果我们用哨兵机制操作了redis,发生了上述1的过程。此时关机,关掉所有的redis,再开机,只是重启6379,此时,我们用 info replication 命令发现,6379的角色还是slaver, 它的master时候6381(1中的假设,6381是选举的master),sentienl.conf 配置文件也发生改变了。
3、哨兵机制,步骤间需要时间,取决于系统和网络。所以我们用info replication 要等会才有效果。
clipboard.png


dhxx
37 声望19 粉丝

中间件相关