目录
一、redis主从复制
二、哨兵模式
三、哨兵模式的优缺点
主从复制中数据的复制时单项相的,只能从主节点复制到从节点(主写从读)
主从复制读写分离可以实现:
1. 数据热备份;2. 故障恢复;3. 负载均衡;4. 集群哨兵等高可用的基础
1. 环境配置
只配置从库,不配置主库,例如:一主(79)二从(80,81)
a. 修改从节点的配置文件,区分节点信息:1. 端口号;2. pid文件;3.日志文件名;4. rdb文件名
b. 127.0.0.1:6380/6381> slaveof 127.0.0.1:6379
(命令搭建是暂时的,真实的开发主从复制配置是在从库的配置文件中配置,是永久性的)
2. 使用规则
这里只讨论修改配置文件永久性的情况,因为手动命令搭建后,机器重启,默认都是主节点
a. 从机只能读,不能写;主机可读可写,但是多用于写
b. 主机宕机,从机状态不变,依旧能连到主机,只是此时不可以写操作。待主机恢复后,依然会连接到从机,状态恢复原状;
3. 主机宕机产新主机的方式
a. 其它从节点手动执行slaveof no one 就可以让自己变成新的主机
b. 哨兵模式(自动选举)
4. 主从复制原理
slave启动—>连接master并发送sync同步命令—>master启动存盘程序并收集所有修改数据集命令—>后台进程执行完毕—>master把整个数据文件传给slave—>完成同步
只要是重新链接master,就会自动进行全量同步,所有数据在从机一点可以找到
1. 背景
主机宕机后,如手动把另一台服务器切换为主机,人工干预费时费力,服务还会有一段时间不可用
redis从2.8还是提供哨兵模式(sentinel),在确认主机宕机后自动选取一个新的主机;哨兵为独立进程,通过哨兵发送命令,等待服务器响应,从而监控多个redis实例
单个哨兵会出问题,一般会配置多个哨兵(哨兵集群,配置类似redis的集群配置)
2. 核心配置
a. 配置哨兵的文件:snetinel.config
b. 如:sentinel monitor mastername(主机名称) 127.0.0.1 6379 1
数字1表示当一个哨兵判断主机宕机,就可客观认为是主机故障,然后开始选举新的主机
c. redis-sentinel 哨兵文件path //命令启动哨兵
3. 哨兵的作用
a. 哨兵通过发送命令,让redis服务器返回其状态,包括主从服务器
b. 当哨兵检测到master宕机,会自动将slave切换成master,通过发布订阅让其他从服务器自动修改其配置文件,从而切换主机
4. 哨兵的过程
主机宕机,1个哨兵检测到不会马上进行故障转移(failover),通过投票算法计算,当超过一半哨兵都检测到,才会进行failover并切换主机;若原主机再恢复,只能当新主机的从机
优点:主机宕机时,主从自动切换,故障转移,提高系统可用性
缺点:集群达到一定规模,不好扩容,配置麻烦