Redis的复制(Master/Slave)、主从复制、读写分离 (下)
哨兵模式(就是反客为主的自动版)
能够自动监控主机是否故障,如果故障了根据投票数自动将从机变成主机
1创建哨兵文件
touch sentinel.conf [root@localhost myredis]# ls -l 总用量 228 -rw-r--r--. 1 root root 55 7月 31 23:38 dump6379.rdb -rw-r--r--. 1 root root 55 7月 31 23:38 dump6380.rdb -rw-r--r--. 1 root root 41642 8月 1 08:33 redis6379.conf -rw-r--r--. 1 root root 41642 7月 31 23:04 redis6380.conf -rw-r--r--. 1 root root 41642 7月 31 23:11 redis6381.conf -rw-r--r--. 1 root root 41612 7月 31 18:08 redis_aof.conf -rw-r--r--. 1 root root 41611 7月 28 21:27 redis.conf -rw-r--r--. 1 root root 0 8月 1 09:47 sentinel.conf
2、给哨兵文件添加监听内容
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1:这里的这个数字1,表示主机死掉以后slaver投票看让谁接替称为主机,谁票数多多谁是主机。
sentinel monitor host6379 127.0.0.1 6379 1
3、启动哨兵
[root@localhost myredis]# redis-sentinel /myredis/sentinel.conf 22600:X 01 Aug 09:55:20.908 * 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: 22600 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 22600:X 01 Aug 09:55:20.910 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 22600:X 01 Aug 09:55:20.910 # Sentinel runid is 31cfb89ac4fe6085784e0541972261ff7f09f339 22600:X 01 Aug 09:55:20.910 # +monitor master host6379 127.0.0.1 6379 quorum 1 22600:X 01 Aug 09:55:20.912 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ host6379 127.0.0.1 6379 22600:X 01 Aug 09:55:20.914 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ host6379 127.0.0.1 6379
4、主机关闭,哨兵会自动选举出主机
127.0.0.1:6380> info replication # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6381,state=online,offset=1116,lag=0 master_repl_offset:1116 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:1115 127.0.0.1:6380> set k44 444 OK
127.0.0.1:6381> info replication # Replication role:slave master_host:127.0.0.1 master_port:6380 master_link_status:up master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_repl_offset:4098 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 127.0.0.1:6381> get k44 "444"
5、前面主机回来(前主机作为Slaver)
127.0.0.1:6379> info replication # Replication role:slave master_host:127.0.0.1 master_port:6380 master_link_status:up master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_repl_offset:19636 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 127.0.0.1:6379> get k44 "444"