主从复制:从主要做复制
一个redis可以有多个slaves,redis服务为master,其他复制品为slaves
只要网络连接正常,master会一直讲自己的数据更新同步给slaves,保持主从同步
只有master可以执行写,slaves只能执行读命令,从分担了读操作
主从复制创建:
1、redis-server --port <port> --slaveof <master-ip> <master-port>
配置当前服务器为某redis服务的slave
redis-server --port 6380 --slaveof 127.0.0.1 6379
2、slaveof host port命令,将当前服务器状态从master修改为别的服务器slave
slaveof 127.0.0.1 6379 ,将服务器转换为别的服务器slave
slaveof no one ,将服务器重新恢复到master,不会丢失已同步数据
3、配置文件方式,在conf中配置
slaveof <masterip> <masterport>
slaveof 127.0.0.1 6379
ss -tanl,查看redis端口
redis-cli -p 7030 shutdown,停止服务
哨兵机制:sentinel,实现故障转移
高可用方案,可以管理多个redis服务实例
编译后产生redis-setinel程序文件
redis sentinel是一个分布式系统,可以再一个加工中运行过个sentinel进程
启动sentinel,将src下产生的redis-sentinel程序拷贝到$redis——home/bin目录下,启动一个sentinel模式下的redis服务
redis-sentinel
或者redis-server /path/to/sentinel.conf --sentinel
sentinel不断检查master和slaves是否正常,每个sentinel可以监控任意多个master和该master下的slaves,
sentinel网络:监控同一个master的sentinel会自动连接,组成一个分布式的sentinel网络,互相通信并交换笔记监控服务的信息。
当主服务器下线,sentinel会自动进行故障转移,将某个从服务器提升为新的主服务器,让其他从服务器复制新主服务器,让系统重新上线
sentinel配置:
至少配置一个监控配置选项,用于指定被监控master的信息
sentinel monitor <name> <ip> <port> <quorum>,例如
sentinel monitor mymaster 127.0.0.1 6379 2
监视mymaster的主服务器,IP,端口,将这个服务判断为下线失效需要至少2个sentinel同意,如果多数sentinel同意才会执行故障转移,sentinel会根据master配置自动发现slaves
sentinel默认端口是26379
配置举例:
创建2个监视主服务器s1的sentinel实例
redis-sentinel sentinel1.conf
redis-sentinel sentinel2.conf
sentinel1.conf内容为
port 26379
sentinel monitor s1 127.0.0.1 6379 2
sentinel2.conf内容为
port 26380
sentinel monitor s1 127.0.0.1 6380 2