美文网首页redis学习
Redis主从复制的使用姿势

Redis主从复制的使用姿势

作者: 奔跑的Robi | 来源:发表于2019-08-19 23:05 被阅读0次

使用背景

redis是现在分布式应用刚需的一个缓存数据库,具有超强的并发能力,高吞吐量。但是在部署时同样需要考虑redis的高可用,通常redis高可用可以通过主从复制和哨兵机制来做保证。下面介绍一下复制方式的使用,在另一篇里会分析主从复制的细节

建立从节点的方式

  • 在redis.conf文件中配置slaveof <master_ip> <master_port>
  • redis-server启动命令后加上--slaveof <master_ip> <master_port> 如果是本机启动两个实例也可省略master_ip直接写--port
  • 从节点上直接执行slaveof <master_ip> <master_port>命令

建立后可使用info replication命令查看本机的复制配置

image.png
可以看到role是slave,并且还有master的相关信息
字段解释如下:
# Replication
role:slave                      //节点角色
master_host:localhost           //主节点的IP
master_port:6379                //主节点的端口
master_link_status:up           //与主节点的连接状态
master_last_io_seconds_ago:0    //主节点最后与从节点的通信时间间隔,单位秒
master_sync_in_progress:0       //从节点是否正在全量同步主节点的RDB文件
slave_repl_offset:407           //复制偏移量
slave_priority:100              //从节点的优先级
slave_read_only:1               //从节点是否只读
connected_slaves:0              //连接从节点的个数
master_repl_offset:0            //当前从节点作为其他从节点的主节点时的复制偏移量
//以下四种信息为通用的配置
repl_backlog_active:0           //复制缓冲区的状态
repl_backlog_size:1048576       //复制缓冲区的大小
repl_backlog_first_byte_offset:0//复制缓冲区起始偏移量,标识当前缓冲区可用的范围
repl_backlog_histlen:0          //标识复制缓冲区已存在的有效数据长度
127.0.0.1:9999> KEYS *          //由于主节点的键空间为空,所以从节点的键空间也为空。

实现效果

slave在启动的时候就会连接master,把数据同步过来,再在master上执行命令写入数据时,就会看到slave上同样有数据。但是slave模式下本身是只读的不可以写入,如果写入会报下面的错误

127.0.0.1:9999> SET key value
(error) READONLY You can't write against a read only slave.

部署方式

在slave的info replication信息中可以看到slave上同样有connection_slaves属性,说明slave也可以作为另一个机器的master去拷贝,也就是说我们的部署结构可以是这样

  • 一主一从


    image.png
  • 一主多从


    image.png
  • 树型结构


    image.png

在数据量大时,slave的个数如果太多,master上拷贝的开销会很大,所以master上连接太多的slave是不好的,所以可以使用树形的方式减轻master的分发压力,但是这种方式对于孙子节点上的实例来说,要走两跳网络拷贝,所以数据更新很可能有延迟,所以这种方式比较适合AP系统,即弱一致性

断开从节点模式

  • 在从节点上直接执行slaveof no one,自动断开与主节点的连接,本机节点升为master

防止主节点在不安全的情况执行写命令

min-slaves-to-write 3   //从节点数量少于3个,主节点拒绝执行写命令
min-slaves-max-lag 10   //3个从节点的延迟(lag)值,大于或等于10,主节点拒绝执行写命令

这样就保证了在从节点完备的情况执行写命令,不会因为从节点大面积宕机导致redis出现单机读写

相关文章

  • Redis主从复制

    Redis主从复制 一.主从复制介绍 1.Redis复制功能介绍 1)Redis 使用异步复制。从 Redis2....

  • Redis主从复制的使用姿势

    使用背景 redis是现在分布式应用刚需的一个缓存数据库,具有超强的并发能力,高吞吐量。但是在部署时同样需要考虑r...

  • Redis|主从复制与哨兵机制

    1. Redis主从复制 1.1 Redis主从复制 Redis主从复制主要有两个角色,主机(master)对外提...

  • Redis集群搭建

    Redis主从复制 此处使用 4.0.2 的版本,搭建一主两从的Redis集群。 环境准备 从此处下载redis-...

  • Redis Cluster 重定向问题 - Moved/Ask重

    相比于单机redis或使用sentinel来管理的redis主从复制的客户端,Redis cluster的客户端连...

  • 【Redis学习笔记】13 Redis 主从复制

    1. Redis 主从复制特性 2. Redis 主从复制流程 3. Redis 主从复制操作 IP地址端口角色1...

  • 浅析 Redis 主从复制实现原理

    本篇主要分三部分讨论Redis主从复制的实现原理:主从复制过程、状态机、源码解析。Redis从节点使用了状态机机制...

  • Redis的高可用

    Redis主从复制 什么是主从复制 Redis有三种集群方案,主从复制,哨兵,cluster集群,主从复制是指将一...

  • redis(二)

    Redis用户认证 禁用危险命令 主从复制的过程 主从复制的部署 哨兵 Redis哨兵+主从+密码 Redis哨兵...

  • Redis Sentinel 介绍与部署

    Redis Sentinel 介绍与部署 1. Sentinel介绍 1.1 主从复制的问题 Redis主从复制可...

网友评论

    本文标题:Redis主从复制的使用姿势

    本文链接:https://www.haomeiwen.com/subject/efnssctx.html