Redis 的主从复制

一、概述

  1. 是什么:主机数据更新后根据配置和策略,自动同步到备用机的 master / slave 机制,master 以写为主,slave 以读为主
  2. 能干嘛?
    (1) 读写分离
    (2) 容灾恢复

二、使用步骤

  1. 配从(库)不配主(库)
  2. 从库配置
    slaveof 主库 IP 主库端口
    
    (1) 查看身份及连接从库信息命令
    info replication
    
    (2) 只要从库使用 slaveof 命令,就立即主库中的所有都复制过来,之后 master 每添加 / 删除一条记录,从库就自动复制 / 删除一条记录
    (3) 从库只有读的操作,不可以执行写操作
    (4) slave 每次关机或出故障,与 master 断开之后,都需要重新用 slaveof 连接,除非你配置进 redis.conf 文件内;但是 master 关机或出故障,slave 是原地待命,当 master 重启之后,还是原样
  3. 修改配置文件细节操作
    (1) 拷贝多个 redis.conf 文件
    (2) 开启 daemonize yes
    (3) pid 文件名字
    (4) 指定端口
    (5) log 文件名字
    (6) dump.rdb 名字
  4. 常用三招
    (1) 一主二仆:即一个 master,两个 slave
    (2) 薪火相传:
    ① 命令
    slaveof 中间库IP 中间库端口
    
    ② 上一个 slave 可以是下一个的 master,slave 同样可以接收其他 slaves 的连接和同步请求,那么该 slave 作为了链条中的下一个 master,可以有效减轻 master 的压力;但给 slave 的身份依然是 slave
    ③ 中途变更转向会清除之前的数据,重新建立拷贝最新的数据
    (3) 反客为主:
    ① 命令
    slaveof no one
    
    ② 使当前数据库停止与其他数据库的同步,转成主数据库

三、复制原理

  1. Slave 启动成功连接到 Master 后会发送一个 sync 命令
  2. Master 接到命令后启动后台的存盘进程,同时收集到所有接收到的用于修改数据集命令,在后台进程执行完毕之后,Master 将传送整个数据文件到 Slave,以完成一次完全同步
  3. 全量复制:Slave 服务在接收到数据库文件数据后,将其存盘并加载到内存中
  4. 增量复制:Master 继续将新的所有收集到的修改命令依次传给 Slave,完成同步
  5. 但是只要重新连接 Master,一次完全同步(全量复制)将被自动执行

四、哨兵模式(sentinel)

  1. 哨兵模式即反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
  2. 使用步骤:
    (1) 首先是一主二仆的情况:6379 带着 6380、6381
    (2) 在目录 /myredis/ 下新增 sentinel.conf 文件,名字不能错
    (3) 配置哨兵,在 sentinel.conf 文件中加入
    sentinel monitor` 被监控数据库的名字(自己随便起) 127.0.0.1 6379 1
    # 上述的最后一个数字 1 ,表示主机挂掉之后 Slave 投票看让谁接替成为主机,得票数多少后成为主机,即大于该数字成为主机
    
    (4) 启动哨兵
    redis-sentinel /myredis/sentinel.conf
    
    (5) 当 6379 挂了之后,就会投票从 6380 和 6381 中选出一个来成为 Master,而另一个则成为新 Master 的 Slave;当 6379 重新开启回来之后,会也将其变为新 Master 的 Slave
  3. 一组 sentinel 能同时监控多个 Master

五、复制的缺点

复制延时:由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值