Redis复制的原理和使用方式,在一主多从的Redis系统中,从数据库在整个系统中起到了数据冗余备份和读写分离的作用。
当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续提供服务。然而整个过程相对麻烦且需要人工介入。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。
哨兵的作用就是监控Redis系统的运行状况。它的功能包括以下两个。
1.监控主数据库和从数据库是否正常运行。
2.主数据库出现故障时自动将从数据库转换为主数据库。
在一主多从的Redis系统中,可以使用多个哨兵进行监控任务以保证系统足够稳健,此时不仅哨兵会同时监控主数据库和从数据库,哨兵之间也会互相监控。
配置哨兵
[root@TA30-53 redis_master]# vi sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster 123456
其中mymaster表示要监控的主数据库的名字,可以自定义。这个名字必须仅由大小写字母、数字和“.-_”这 3 个字符组成。
后两个参数表示主数据库的地址和端口。
最后的1表示最低通过票数。
接下来执行来启动Sentinel进程,并将上述配置文件的路径传递给哨兵:
[root@TA30-53 local]# cd redis_master/src/
[root@TA30-53 src]# ./redis-sentinel ../sentinel.conf
配置哨兵监控一个系统时,只需要配置其监控主数据库即可,哨兵会自动发现所有复制该主数据库的从数据库。
启动哨兵后,哨兵输出如下内容:
[root@TA30-53 redis_master]# ./src/redis-sentinel ./sentinel.conf
30327:X 26 Jun 16:49:08.340 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 30327
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|