Redis 主从复制
1. 概述
- 数据的复制都是单向的, 只能由主节点到从节点, Master 以写为主, Slave 以读为主
- 主从复制, 读写分离, 主要是解决读的问题 ==> 80% 的情况下都是在进行读操作! 减缓服务器的压力! 架构中经常使用! 一主二从
- 默认情况下, 每台Redis服务器都是主节点
2. 环境配置
只配置从库, 不用配置主库
-
info replication ====> 查看当前库的信息
-
复制三个配置文件, 然后修改对应的信息
- 端口号
- 文件的pid
- log文件
- 持久化的文件名
-
打开服务, 看到生成了对应的log文件, 说明该服务已经成功启动了!
-
查看我们开启的redis服务
3. 一主二从搭建
-
我们一般情况下, 只用配置从机就好了!
-
认老大, 一主(79)二从(80,81)
-
从机配置 ====> slaveof host port
-
主机的信息
-
真实的主从配置应该在配置文件中配置, 这样的话就是永久的!, 在配置文件中的replication下配置replicaof
4. 细节
-
主机可以写, 从机不能写, 只能读
-
主机中的所有信息和数据, 都会自动被从机保存
-
主机断开连接, 从机依旧连接到主机, 但是没有些操作了. 如果主机回来了, 从机依旧可以直接获取到主机写的信息
-
如果是是用命令行来配置的主从, 这个时候, 如果重启了, 就会变回主机
-
只要变回从机, 立马就会从主机中获取值!
-
*命令 slaveof no one ====> 使自己成为主机, 其他的节点就可以手动连接到这个最新的主节点*
5. 哨兵模式
-
自动选取老大的模式!
-
Redis从2.8开始正式提供了 Sentinel (哨兵) 架构来解决这个问题
-
哨兵是一个独立的进程, 他会独立运行, 其原理是 哨兵通过发送命令, 等待 Redis 服务器响应, 从而监控运行的多个Redis实例
-
我们可以使用多哨兵模式, 哨兵之间也会进行监控
1. 测试
-
我们目前的状态是一主二从
-
配置哨兵配置文件
-
新建 sentinel.conf 文件
-
在配置文件中写如下配置 (这是最核心的配置)
-
#sentinel monitor myredis 被监控的名称 127.0.0.1 主机的ip地址 6379 主机的端口 1 sentinel monitor myredis 127.0.0.1 6379 1
-
后面的这个数字 1 代表主机挂了之后, slave 投票看让谁接替成为主机, 票数最多的, 就会成为主机
-
-
启动哨兵
- redis-sentinel 配置文件的路径
-
如果主节点挂了, 哨兵过一会可以发现, 并投票选出新的主节点
-
主节点回来之后, 只能作为从机
2. 优缺点
- 优点
- 哨兵集群, 基于主从复制模式, 所有的主从配置的优点, 他全有
- 主从可以切换, 故障可以转移, 系统的可用性就会更好
- 哨兵模式就是主从模式的升级, 手动到自动, 更加健壮
- 缺点
- Redis不好在线扩容, 集群容量一旦到达上限, 在线扩容就十分麻烦
- 实现哨兵模式的配置其实是很麻烦的, 里面有很多选择!