Redis 笔记(六)主从复制、哨兵模式

目录

搭建一主二从 Redis 集群

哨兵模式

总结


主从复制:是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master),后者称为从节点(Slave)。默认情况下,所有的 Redis 服务都是主机,即都能写和读,但是都还没有从机。

注意:Master 主要负责写入数据,之后会把数据同步到 Slave, Slave 主要负责读取数据,数据只能从 Master 同步到 Slave,而不能由 Slave 写入。由此可以遵循 主少从多主写从读读写分离的方式。
 

搭建一主二从 Redis 集群

1、准备三份 Redis 配置文件,模拟三台 Redis 服务器。

bind 127.0.0.1 ::1

port 6380

pidfile /var/run/redis_6380.pid

logfile "/var/run/logs/redis_6380.log"

dbfilename dump_6380.rdb

2、分别使用三个 Redis 配置文件,启动三个 Redis 服务。

redis-server /usr/local/etc/redis6380.conf &

redis-server /usr/local/etc/redis6381.conf &

redis-server /usr/local/etc/redis6382.conf &

redis-cli -p 6380

redis-cli -p 6381

redis-cli -p 6382

3、查看服务器主从属性

info replication

-------------------------------------------------------------------------------------------------------------------------

127.0.0.1:6380> info replication

# Replication

role:master

connected_slaves:0

master_failover_state:no-failover

master_replid:bd769f4fbb0a329fba5e63572de8d9cef008d2dc

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:0

second_repl_offset:-1

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:6380>

4、检测 分别在三台服务上创建数据,验证数据互不影响

127.0.0.1:6380> set k6380 v6380

OK

127.0.0.1:6380>

-------------------------------------------------------------------------------------------------------------------------

127.0.0.1:6381> set k6381 v6381

OK

127.0.0.1:6381>

-------------------------------------------------------------------------------------------------------------------------

127.0.0.1:6382> set k6382 v6382

OK

127.0.0.1:6382>

5、设置主从关系(设从不设主

在 6381 服务器上执行   slaveof 127.0.0.1 6380

在 6382 服务器上执行   slaveof 127.0.0.1 6380

 6、全量复制:一旦主从关系确定,会自动把主库上已有的数据同步复制到从库,并删除原有数据

127.0.0.1:6381> keys *

1) "k6380"

127.0.0.1:6381>

7、增量复制:主库写数据会自动同步到从库

8、主写从读,读写分离,在从机上进行写入操作会报错

127.0.0.1:6381> set k3 v3

(error) READONLY You can't write against a read only replica.

127.0.0.1:6381>

9、主机宕机、从机原地待命 。主机恢复、一切恢复正常

10、从机宕机、主机少一个从机、其它从机不变。从机恢复需要重新跟主机关联

11、从机上位(从机变主机)

1、从机断开原来主从关系

        在6381上执行:slaveof no one
        查看6381服务的主从角色:info replication

2、重新设置主从关系

        在6382上执行:slaveof 127.0.0.1 6381

对于之前的主机 6380 修复后,没有任何从机关联。可以根据情况定义是否可以继续当主机。

将 6380 设置为 6382的 从机,那么 6382 即为主机又为从机,但是不可以写数据(只要包含从机信息,就不可以写入数据)。

一台主机配置多台从机,一台从机又可以配置多台从机,从而形成一个庞大的集群架构。减轻一台主机的压力,但是增加了服务间的延迟时间。 

主从复制最大的缺点就是延迟,主机负责写,从机负责备份,这个过程会有一定延迟,当系统繁忙的时候,这个问题会更加严重,从机的个数增加也会是这个问题更加严重。

---------------------------------------------------------------------------------------------------------------------------------

哨兵模式

当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

          

哨兵的两个作用:

  • 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器         
  • 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机

然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式

1、提供哨兵配置文件

        redis-sentinel.conf

        创建sentinel.conf文件,并编辑   sentinel monitor mymaster 127.0.0.1 6380 2

# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,127.0.0.1代表监控的主服务器,6380代表端口,2代表有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行 Failover 操作。

2、启动哨兵服务

        redis-sentinel redis_sentinel.conf

当主机服务出现问题宕机后,会根据投票机制选择一个从机作为主机。当之前的主机修复重启后,自动从属于新的主机(不是马上就变成从机,有一个转变的过程,消耗时间可以忽略不计)

总结

1、查看主从关系命令

        info replication

2、设置主从关系命令(在从服务器设置)

        slaveof   主机ip   主机port

3、清除主从关系

        slaveof on one

4、开启哨兵模式

        redis-sentinel redis_sentinel.conf

5、主从复制原则

        开始是全量复制,之后是增量复制

6、哨兵模式三大任务

        监控、提醒、自动故障迁移

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值