主从复制
主从复制主要的作用
- 数据冗余: 主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
- 故障恢复: 当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复 (实际上是一种服务的冗余)。
- 负载均衡: 在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写 Redis 数据时应用连接主节点,读 Redis 数据时应用连接从节点),分担服务器负载。尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。
- 高可用基石: 除了上述作用以外,主从复制还是哨兵和集群能够实施的 基础,因此说主从复制是 Redis 高可用的基础。
在redis中实现主从复制非常简单,只需要在开启的服务中输入:SLAVEOF MASTER PORT,就可以与主服务器实现主从复制。info replication查看主从状态。主服务器可以进行读写操作,从服务器只能进行读操作,不能进行写操作。
哨兵模式
哨兵模式是在主从模式的基础上,增加一个哨兵节点,对主从服务器进行监控,若发现主服务器宕机故障,则自动实现故障转移,在从服务器中选择一个新的主服务器,不需要人工干预。
Step1:创建哨兵启动文件 vim sentinel.conf,其中的主要配置为sentinel monitor mymaster 192.168.0.5 6379 2
mymaster为主机名字,可随意取;192.168.0.5 6379,主服务器的ip地址和端口;最后的数字2,代表当主机宕机,选取新的主服务器的时候需要2个哨兵节点的同意。
Step2:开启哨兵服务 redis-sentinel sentinel.conf
Step3:开启一个主服务器,两个从服务器
Step4:断掉主服务器
Step5:默认时间为30秒(可配置),哨兵会选取新的从服务器变为主服务器,等之前的主服务器重连后,会变成新的从服务器。
从 Slave 中选择新 Master 节点的规则(slave 升级成 master 之后)
- 选择 slave-priority 最高的节点。
- 选择复制偏移量最大的节点(同步数据最多)。
- 选择 runId 最小的节点