集群目标
主从复制,读写分离;故障切换(通过哨兵实现)
查看集群状态
info replication
配置方法
只设置从数据库就可以了;最佳实践,在主数据库配置masterauth <master-password>,这样在主库挂了后又重启状态就不会是down
配置过程
注意,要求主从数据库的密码一致,哨兵要求
1、配置文件方式
slaveof <master ip> <masterport> 主库的ip和端口
masterauth <master-password> 主库的密码
slave-read-only yew 从库只读,默认
2、命令行方式
slaveof host port 将当前库设置为host、port对应的实例的从库
config set masterauth <master-password>
config rewrite
slaveof no one 取消当前库的从库身份,已同步的数据保留
config rewrite
哨兵配置(实现故障切换)
port 26379 // 哨兵端口号
protected-mode no // 允许其它ip访问
dir /tmp
sentinel monitor mymaster 192.168.1.200 6379 1 // 主数据库名字、ip、端口、几个哨兵认为主数据库挂了就挂了
sentinel auth-pass mymaster 12345 // 主从库密码
sentinel down-after-milliseconds mymaster 30000 // 判定下线时间
sentinel failover-timeout mymaster 180000 // 故障迁移时间
启动哨兵
./src/redis-server sentinel.conf --sentinel
哨兵要求主从节点的密码是相同的
一般会配置多个哨兵,防止哨兵误判,比如它自己的网络有问题
多个哨兵不需要多个redis软件,只要添加多个sentinel.conf,启动哨兵时后面跟上不同的配置文件即可
哨兵需要提供对外的接口,master、slave都不需要对外提供接口,master和slave都是由哨兵来统一管理