Redis主从复制

  • 1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
  • 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。

过程

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

图解如下:

clipboard.png

什么是哨兵机制

Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:

  • 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
  • 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automaticfailover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master(通过选举投票机制), 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

单个哨兵:

clipboard.png

Master为Redis主服务器,slave为从服务器(redis只有一台主服务器,多台从服务器)。

思考:若redis服务器一个个都挂了?怎么处理?
答:重启(×)

redis服务器都宕机了,哨兵模式选举不了了,
应该是使用keepalived(重启脚本)监听,自动重启,若服务器宕机了自动重启,
若重启失败,则是邮件方式通知运维人员。

Redis高可用机制

keepalived+哨兵机制才是完善的Redis高可用机制。
注意:keepalived是重启脚本,不仅仅重启redis,包括其他软件应用

具体实现后续再整理一下


y猪
246 声望25 粉丝