redis的主从复制 和 它的哨兵模式sentinel)
介绍
主从复制 :也就是我们所说的主从复制,主机数据更新后根据配置和策略,
自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,主从复制可以做:
- 读写分离
- 容灾恢复
redis主从复制配置(Master/Slave)
配从(库)不配主(库)
命令配置:slaveof 主库IP 主库端口
(在从库执行命令)
每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
配置参数:slaveof <主库ip> <主库端口>
查看主从库信息命令:info replication
配置实例
一主二从
主库:192.168.72.129:6379
从库:192.168.72.130:6379
从库:192.168.72.131:6379
一个master2个slave
130机器执行:slaveof 192.168.72.129 6379
131执行:slaveof 192.168.72.129 6379
执行:info replication 查看当前库状态
129:
130和131:
一主二从注意事项:
- 只有主机能写,从机只能读不能写
- 主机宕机,从机保持原样不会取代主机,等待主机连接后,又恢复原来的样子
- 主机有的数据,从机初始化的时候,会完全复制一份,当主机有数据写入,从机也会同步一份该数据
- 从机宕机,剩下的2台保持原样,也就是一主一从模式
薪火相传(上一个Slave是下一个slave的Master)
- 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他
slaves的连接和同步请求,那么该slave作为了链条中下一个的master,
可以有效减轻master的写压力
如:129是130的master,而130又是131的master
反客为主(从机取代主机成master)
当主机宕机挂掉,其中一台从机可以使用命令:SLAVEOF no one
:使当前数据库停止与其他数据库的同步,转成主数据库
其他的从库也要重新执行命令:slaveof 主机ip 端口,指向主机。
复制原理
- slave启动成功连接到master后会发送一个sync命令
- Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
- 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
- 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
- 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
主从复制缺点
哨兵模式(sentinel)
哨兵模式简介
- 在主从模型下,从服务器能监控主机是否故障,如果主服务器出现故障,从服务器根据投票数自动将从库转换为主库
- 如果宕机的那台主服务器又恢复正常工作,那么此主服务器(宕机的那台服务器)会从主服务器变为从服务器
哨兵模式配置与启动
- 配置哨兵模式
-
选择你要当做master(主机)的redis服务,在安装目录下创建sentinel.conf文件(哨兵配置文件,注意:在redis的解压目录也有一个sentinel.conf文件)
-
在sentinel.conf文件里面添加内容格式:
sentinel monitor [master-group-name] [ip] [port] [quorum]
,
如:sentinel monitor mySentinel 127.0.0.1 6379 1- 其中sentinel monitor为固定写法;
- [master-group-name] 为自己给哨兵取的名字;
- [ip] 为所要连接的主机ip;
- [port] 为redis的端口号;
- [quorum]是哨兵用来判断某个 Redis 服务器是否下线的参数,表示投票需要的"最少法定人数",比如有10个sentinal哨兵都在监控某一个master节点,如果需要至少6个哨兵发现master挂掉后,才认为master真正down掉,那么这里就配置为6,最小配置1台master,1台 slave。
创建sentinel.conf文件,bin编辑
-
启动哨兵模式
在安装的bin目录下启动哨兵:
redis-sentinel /xxxx/sentinel.conf
注意:哨兵是另外一个线程,他是监控主redis
哨兵模式示例
一主二从
主库:192.168.72.129:6379
从库:192.168.72.130:6379
从库:192.168.72.131:6379
哨兵监控 主机 192.168.72.129:6379
主机没挂之前,info replication 状态如下:
从机状态:
当主机挂掉,退出,看哨兵日志如下:
从日志可以看出,主机挂掉后,从机131被选为新的主机,
看131 info replication输出:
131 已经自动变为主机。
130 的master已经变为131:
注意:当原来的主机宕机后,然后又恢复正常,那么原来的主机(宕掉的那台)master会变成slave,如:当129恢复正常,info replication状态如下:
哨兵模式缺点
哨兵选举需要时间,如果此时有数据写入,那么就会丢掉数据