Redis主从复制与集群

参考: http://redisdoc.com/topic/sentinel.html

一、安装配置

  redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。

1.1、修改配置文件redis.conf,只修改从数据库

slaveof ip port

也可以在命令行动态设置(推荐

127.0.0.1:6379> slaveof 192.168.179.14 6379 

如果主数据库宕机, 可以将从数据库转为主数据库

slaveof no one

  通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。

1.2、主从复制过程

  • 1:当一个从数据库启动时,会向主数据库发送sync命令,
  • 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
  • 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
  • 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。

注意:redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会重新执行上述操作,不支持断点续传。
redis2.8之后支持断点续传

1.3、注意:从 Redis 2.8 开始, 为了保证数据的安全性, 可以通过配置min-slaves-to-write

  让一个主节点在至少有N个从节点的情况下才能执行写操作。从节点以每秒一次的频率ping主节点,主节点会记录各个从服务器最后一次向它发送ping的时间。用户可以通过配置, 指定网络延迟的最大值 min-slaves-max-lag以及执行写操作所需的至少从服务器数量 min-slaves-to-write

min-slaves-to-write 3
min-slaves-max-lag 10

  如果至少有 min-slaves-to-write 个从服务器, 并且这些服务器的延迟值都少于 min-slaves-max-lag 秒, 那么主服务器才会执行客户端请求的写操作。只要有一个条件不满足,写操作就不会执行,主服务器会向请求执行写操作的客户端返回一个错误

问题: 虽然可以切换主从节点, 但是需要用户手动就比较麻烦, 还需要时刻监控主从节点的健康状态,然后手动切换。sentinel可以提供我们所需的功能。

二、sentinel

2.1、redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务

  • 1、监控: Redis Sentinel实时监控主服务器和从服务器运行状态。
  • 2、提醒:当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
  • 3、自动故障转移: 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。

2.2、sentinel监控

Redis 的 Sentinel 中关于下线(down)有两个不同的概念:

  • 主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断。
  • 客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。 (一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线。)
    在这里插入图片描述

2.3、启动sentinel

修改sentinel.conf文件
	sentinel monitor mymaster 192.168.179.14 6379 2


启动sentinel的两种方式
	redis-sentinel sentinel.conf
	redis-server sentinel.conf --sentinel

启动后,可以看到监控信息
在这里插入图片描述

2.3、测试主节点挂了

2.3.1、手动将192.168.179.14的redis-server kill

三、集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值