无论是RDB还是AOF,都会存在数据丢失情况;如果想保证数据不丢失,同时实现高可用,可以使用Master-Slave模式
slaveof 主库ip 端口号
如:(slaveof 127.0.0.1 6379
)redis.conf
文件,作为配置其他服务的配置文件daemonize yes
配置步骤:
./redis-cli -p 9001
info replication
./redis-cli -p 9002
和 ./redis-cli -p 9001
slaveof
命令配置从库 此处,两个从库都配置为:slaveof 127.0.0.1 9001
(端口号可改)
7. 对主库(master)进行写操作,对从库(slave)进行读操作
特点:向主机写数据,就能同步到从机
缺点:如果主机宕机,就不能写数据了
配置步骤:
与一主二从相似,区别在于配置从库,呈链式
slaveof 127.0.0.1 9001
slaveof 127.0.0.1 9002
示例:
准备多个redis服务的环境
vi redis-9001.conf
命令打开配置文件查看主库的配置信息
配置第一个从机
配置第二个从机
验证:
主机写数据
从机9002读数据
从机9003读数据
当主机(9001)宕机后,从机(9002)变为主机,可以向9002写数据
优点:如果主机宕机,则从机变为主机。
缺点:如果有一个从机宕机,则后面的从机就不能同步前面的数据了。
配置步骤
- 启动主库(master)
- 查看主库的连接信息
- 启动从库
- 查看从库的配置信息
- 使用slaveof 命令配置从库 两个从库都使用:slaveof 127.0.0.1 6379
- 查看从库的配置 主库关闭时,第一个从库执行slaveof no one 断开变为主库,第二个从库使用slaveof 127.0.0.1 6380连接修改后的主库
- 如果Master再启动时,使用 slaveof连接6380,使它自己变成从库
特点:如果主机宕机,推选一个从机变为主机,其他的从机变为新主机的从机。是手动方式。
自动的反客为主,当一个主机宕机,由哨兵服务自动推选一个从机作为主机,自动更改各个redis服务的配置文件。
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis可通讯的机器中监控redis集群
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
- 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel
会开始一次。- 自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址,
使得集群可以使用新主服务器代替失效服务器。
哨兵模式的搭建步骤
- 自定义的/etc目录下新建sentinel.conf文件;
- 在此文件中增加 sentinel monitor 被监控数据库名字(自己起名字,例如master6379 127.0.0.1 6379 2 • 代表多少个从机认为主机下线可以开始投票
- 启动哨兵 • redis-sentinel /etc/sentinel.conf
- 启动主机及从机 • 启动redis后,主机挂掉后,从机上位;
从redis的安装目录拷贝哨兵的配置文件到redis的bin目录中
修改哨兵的配置文件
其中最后的1 代表如果有1个哨兵服务连接不上主机(即规定连不上主机的哨兵服务的个数),则要选举新的主机。