命令:SALVEOF NO ONE
从原来的主从关系中脱离,将当前从库变成主库。
该命令在主库挂掉时可以将指定某个从库改为主库,只影响本从库的主从关系,而不影响其他从库的主从关系。当主库重新在线时,使用过该命令的从库也不会恢复原来的主从关系。
在现在的工作环境中,手动设置主从关系不现实。此时就用到了redis的哨兵模式(sentinel)
新建一个sentinel.conf
配置文件,文件内容:
sentinel monitor 被监控数据库名字(自己起名字[只要按照命名规范即可])[例如: host] 127.0.0.1 6379 1[1代表只要投票数超过1的即作为主机]
通过redis-sentinel
命令指向该配置文件: redis-sentinel [sentinel.conf的全路径+文件名]
命令执行后:
5301:X 11 Jul 18:58:49.970 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.4 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 5301
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
5301:X 11 Jul 18:58:49.997 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5301:X 11 Jul 18:58:49.997 # Sentinel runid is fef1564d02a35fbc5c73aa381cf28de0b164d34b
5301:X 11 Jul 18:58:49.997 # +monitor master host 127.0.0.1 6379 quorum 1
5301:X 11 Jul 18:58:50.976 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ host 127.0.0.1 6379
5301:X 11 Jul 18:58:50.977 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ host 127.0.0.1 6379
此时哨兵模式监控着主机库,当主机库宕机或其他不可抗拒的原因导致主机下线,此时哨兵模式下会通过[随机投票算法: 自猜的
]重新从从库中选出一个从库转换为主库,然后所有在线的从库都指向该库作为主库。
注: 当主库重新上线后,主库随即会转变成从库指向新的库。[类似老员工放长假回来发现自己位置被他小弟占了,但是公司因为发展很快,他小弟得水平已经超过了他。于是他就只能在他小弟下面干活了。]
一组sentinel能同时监控多个Master。