数据库运维
记录DBA学习成长历程

Redis-sentinel(哨兵)

永久性高可用,可以一次性管理多套集群

功能

1、监控
2、自动选主,切换(6381 slaveof no one)
3、2号从库(6382)指向新主库(6381)
4、应用透明 
5、自动处理故障节点

sentinel搭建过程

mkdir /data/26380
cd /data/26380
vim sentinel.conf
port 26380
dir "/data/26380"
sentinel monitor mymaster 127.0.0.1 6380 1  ###mymaster为第一个集群名字,1表示在多台sentinel下,最少多少台sentinel投票,才表示主库宕机
sentinel down-after-milliseconds mymaster 5000  ###主库宕机5秒,开始切换
sentinel auth-pass mymaster 123 ###主库密码

启动

[root@db01 26380]# redis-sentinel /data/26380/sentinel.conf &>/tmp/sentinel.log &

如果有问题

1、重新准备1主2从环境
2、kill掉sentinel进程
3、删除sentinel目录下的所有文件
4、重新搭建sentinel

查看日志文件无error表示启动成功

[root@db01 26380]# tail -f /tmp/sentinel.log

停主库测试

[root@db01 26380]# redis-cli -p 6380 -a 123 shutdown
5秒钟之后主库切换至6381
[root@db01 26380]# tail -f /tmp/sentinel.log
1965:X 28 Oct 16:30:15.493 # +switch-master mymaster 127.0.0.1 6380 127.0.0.1 6381
[root@db01 26380]# redis-cli -p 6381 -a 123 info replication
# Replication
role:master

启动源主库(6380),看状态

6380为直接变为从库加入集群
[root@db01 26380]# redis-server /data/6380/redis.conf
[root@db01 ~]# tail -f /tmp/sentinel.log
1965:X 28 Oct 16:34:32.334 # -sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381
1965:X 28 Oct 16:34:42.317 * +convert-to-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381

Sentinel管理命令

redis-cli -p 26380
PING :返回 PONG 。
SENTINEL masters :列出所有被监视的主服务器
SENTINEL slaves <master name> 
SENTINEL get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 
SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的主服务器。 
SENTINEL failover <master name> : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移。
赞(0)
MySQL学习笔记 » Redis-sentinel(哨兵)