redis 主从复制
定义:
也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
备份时间切片点:
slaver会备份master的所有数据。
原则:
slaver给人的感觉是静默的角色。 如果master挂了,slaver会是只读状态等待。
1、主从复制搭建
配置修改:
- 端口
- dump.rdb
- appendfilename
- logfile
查看配置:
- info replication
查看master-slave 角色
- slaveof 127.0.0.1 6379
设置为slave,关联master - slaveof no one
如果某台机器是slave, 该命令可以摆脱原有主从体系和slaver角色,变成一台普通的机器。
2、主从使用
一主多仆:
- 读写情况:
slaveof 127.0.0.1 6379 连接主机后,slave 中会有master的所有数据,但是slave是只读的,只有master可以写。 - 宕机情况:
master宕机,slaver 还可以读(依旧不能写),如果master重启,那么slaver还会连接这个master,恢复到宕机前。
slaver宕机,slaver宕机后重启,会失去slaver角色,变为一台普通的机器,也就是说,slaveof host post 只是有效一次。
薪火相传:
ip2的机器还是slaver角色,但是他有自己的slaver.
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。
反客为主:
slaveof no one 摆脱原有的slaver角色。
3、主从复制原理:
先全量复制,再增量复制
slaver第一次连接master,会全部复制master 所有的,之后master每次写,再增量复制到slaver.
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
说明:
注意:
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 要等会才有效果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。