天天看点

4. Redis-主从复制+哨兵

4.1 主从复制

  1. master可以拥有多个 slave
  2. 多个 slave 可以连接同一个 master 外,还可以连接到其他的 slave
  3. 主从复制不会阻塞 master 在同步数据时,master可以继续处理client请求
  4. 提供系统的伸缩性

4.2 主从复制过程

  1. slave 与 master 建立连接,发送 sync 同步命令。
  2. master 会开启一个后台进程,将数据库快照保存到文件中,同事 master 主进程会开始收集新的写命令并缓存
  3. 后台完成保存后,就将文件发送给 slave
  4. slave 将此文件保存到本地上

4.3 主从复制配置

主从复制方案

角色 ip 端口
master 192.168.136.175 6379
slave 192.168.136.176 6379
slave 192.168.136.178 6379

​1. 安装redis​

​2. 配置 redis.conf 文件,master 不要修改配置,只需要修改 slave 的。slaveof 192.168.136.175 6379​

4. Redis-主从复制+哨兵

​3. 重启三台服务器,在 master 进入redis-cli,输入 info 命令,看到以下信息,证明配置成功。​

4. Redis-主从复制+哨兵
4. Redis-主从复制+哨兵

4.4 哨兵

有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在 redis2.6 之后提供了,一个哨兵的机制,在2.6版本中为哨兵1.0版本。在2.8之后哨兵功能,稳定起来。

哨兵的含义就是监控 redis 的运行情况,其主要功能有两点:

  1. 监控主数据库和从数据库是否正常运行。
  2. 主数据库出现故障时,可以自动将从数据库转为主数据库,实现自动切换。

4.4.1 哨兵实现步骤:

在任意一台从服务器(slave)启动 sentinel.conf (其实应该在第四台机器上启动)

​1. 复制 sentinel.conf 文件到 /opt/redis/etc 中。sentinel.conf 文件在redis的源码包下​

4. Redis-主从复制+哨兵

​2. 修改 sentinel.conf 文件​

​sentinel monitor mymaster 192.168.136.175 6379 1 ​

4. Redis-主从复制+哨兵

​sentinel down-after-milliseconds mymaster 10000​

4. Redis-主从复制+哨兵

​sentinel parallel-syncs mymaster 2​

4. Redis-主从复制+哨兵

​sentinel failover-timeout mymaster 30000​

4. Redis-主从复制+哨兵

​3. 启动三台 redis 服务器​

​4. 启动哨兵 ./redis-server /opt/redis/etc/sentinel.conf --sentinel &​

4. Redis-主从复制+哨兵

​配置完成!!!​

查看哨兵监控的信息,在任意一台机器都可以查看。 ./redis-cli -h 192.168.136.176 -p 26379 info Sentinel

4. Redis-主从复制+哨兵

关闭 主节点服务器 (192.168.136.175),配置了哨兵的服务器上自动打印出提示。

4. Redis-主从复制+哨兵

重新开启 175,但是节点不会把主节点切回175上。

4. Redis-主从复制+哨兵