<Redis> 入门六 主从复制方式的集群

1.集群如何操作

  现在有三台虚拟机,ip分别为100,105,106,将100作为master,其他两台作为slave

  

  1.vim redis.conf

  以前的版本是 slaveof <masterip> <masterport>

  

  我使用的是redis 5.0.3

  所以是 replicaof <masterip><masterport> 分别代表主节点ip和主节点端口

  

  2.修改两个从节点,配置为如下,设置 eplicaof <masterip><masterport> ,masterauth 密码

  

  3.完成配置

2.检查是否配置成功

  重启三台服务器,然后在从节点下输入指令: info replication

  可以看到role是slave,以及主机ip、端口,状态等信息,即代表配置成功。  

  

  master发送命令

  

  在slave端获取

  

  无法在从节点上进行写的操作

  

3.主从复制的原理

3.1 全量同步

  1.slave 第一次连接 或 重连 到 master 上以后,会向 master 发送 sync 的命令

  2.master收到 sync 命令,执行 bgsave 生成 rbd 快照,新的命令会写进缓冲区

  3.master执行完bgsave后,将 rbd 文件发送给各slave节点

  4.slave接收到 rbd 文件,丢弃旧的 rbd 数据,执行新的rbd快照

  5.master发送完rbd快照后,将缓冲区数据发送到slave

  6.slave完成对rbd的载入后,执行master缓冲区的写命令

  

3.2 增量同步

  slave服务器完成初始化,工作正常,主服务器发生写操作同步到从服务器

  增量同步主要是:主服务器每执行一条写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的命令

3.3 部分同步

  当master服务器断线后,从服务器需要重新发送sync命令,这样会消耗大量服务器 cpu、内存、磁盘,并且传送rdb还会消耗网络资源等

  在redis2.8版本后,部分同步 psync 来执行同步的命令。

  master在内存中给每个slave维护了一份同步日志和同步标识。每个slave和master同步都会携带自己的同步标识和上次同步的最后位置

  当master断线重连后,slave带着自己的同步标识,和上次同步的最后位置去找master,如果slave的偏移量在master同步日志中

  那么slave从偏移量开始的位置继续同步,无需进行全量同步。

3.4 同步策略

  第一次连接,进行全量同步,全量同步结束后,进行增量同步。

  如果断开,尝试部分同步,不行的话,依然采用全量同步。

3.5 部分命令

  通过replconf listening-port 6379

   sync,去向主服务器发送同步命令,此时进入通过输出模式,并不断发送ping包

   

  master写入数据

  

  slave 就会输出从缓冲区来的数据

  

  replica-server-stale-data yes  意味着必须完成 master 同步之后才能做接下来的操作。可以防止数据不一致的情况

  

  缺点:主从复制时,当 master 宕机后,从服务器没办法进行动态选举,从只能读取就的数据。

原文地址:https://www.cnblogs.com/mapleins/p/10175701.html

时间: 2024-10-21 14:43:35

<Redis> 入门六 主从复制方式的集群的相关文章

Redis安装(单机及各类集群,阿里云)

Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很哈皮地告诉我,我的博客被某个Java平台进行了微信推送.看到许多人阅读,并认同了我的博客,心理还是很开心的. 好了,话题收回来.这次就Redis在实际服务器中的各种安装,进行详细描述. 另外由于内容较多,并不一定能涵盖各个方面,万望见谅.如果存在什么问题,或者有什么需要添加的,请私信或@我. 最后,由于打马赛

Spark3000门徒第六课精通Spark集群搭建总结

今晚听了王家林老师的第六课精通Spark集群搭建和测试,课后作业是:搭建自己的spark环境并成功运行pi,我的总结如下: 1 硬件环境: 至少8GB内存,推荐金士顿内存,虚拟机推荐Ubuntu kylin版本,可以安装各种办公软件包括搜狗输入法.上网方式:Nat,root权限登录,避免权限问题 2.软件环境: RedHat 6.4  spark 1.6.0   hadoop 2.6.0   scala 2.11.8 3 /etc/hosts ip-hostname对应关系 spark.even

redis基础之redis-sentinel(哨兵集群)(六)

redis简单的主从复制在生产的环境下可能是不行的,因为从服务器只能读不能写,如果主服务器挂掉,那么整个缓存系统不能写入了.redis自带了sentinel(哨兵)机制可以实现高可用. redis-sentinel集群 哨兵机制的主要功能 不断监控主服务器和从服务器的是否正常运行: 出现问题是可以自动报告: 当一个节点出现问题可以进行故障转移,主服务器故障可以通过投票机制选出新的主服务器: 自动发现主服务器和从服务器: redis-sentinel基本介绍 redis-sentinel是一个单独

Redis 主从复制机制(集群)与 哨兵机制

1,什么是redis 主从复制 支持多个数据库之间的数据同步.只能一个主数据库(master),可以一个或者多个从数据库(slave) 主数据库,可以读写 从数据库,只可以读 当主数据库,做写的操作的时候,写完,redis会从给数据库发送信号,并将数据信息发送给从数据库,从数据库备份. 过程: 1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件

Redis简介、高可用及集群相关配置

一 Redis 持久化和复制 1 Redis持久化的两种方式: 1 RDB:可以再指定的时间间隔内生成数据集的时间点快照(每隔一定的时间做一个快照,进行将其刷新到磁盘上,断电)2 AOF:把服务器执行的所有写操作命令记录下来,然后在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件的操作相当于自增操作,Redis可以同时使用RDB和AOF这两种方式.当Redis重启时,会优先使用AOF文件来还原数据集.你也可以关闭持久化功能RDB:可以做备份,RDB可以最大化Redis性能,父进程在保存

Redis的安装配置及简单集群部署

最近针对中铁一局项目,跟事业部讨论之后需要我们的KF平台能够接入一些开源的数据库,于是这两天研究了一下Redis的原理. 1. Redis的数据存储原理及简述 1.1Redis简述 Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型.持久化.主从同步.它支持存储的value类型包括string(字符串).list(链表).hash(哈希).set(集合)和zset(有序集合).这些数据类型都支持p

redis之(十八)redis的支持水平扩容的集群特性,以及插槽的相关操作

[一]主从集群的缺点,客户端分片的缺点 (1)主从+哨兵的redis集群,只是做主从备份,数据冗余的一种处理.但在存储空间的扩展上还是有限制.因为集群中的节点都是存储同样的数据.单一节点的容量,就可以决定整个集群存储数据的容量.木桶效应. (2)客户端规划的分片(就是将不同的键存储在不同的节点上),包括客户端预分片技术,解决了存储容量的不受单台最小存储节点的限制,但在集群节点新加入和节点下线上,就会造成数据的命中率不高,需要人工手动重新规划,数据转移. [二]redis3.0版本支持集群(包括存

【Service Fabric】小白入门记录 本地Service Fabric集群安装及设置

本篇内容是自学自记,现在我还不知道Service Fabric究竟是怎么个入门法,反正按照入门教程先进行本地Service Fabric集群的安装,万里路始于足下,要学习总得先把环境装好了才能开始学习是不? 首先是先决条件,具体可见 https://docs.microsoft.com/zh-cn/azure/service-fabric/service-fabric-quickstart-dotnet#prerequisites,按照条件将所有必需的SDK安装完毕后,我们可以在windows菜

redhat6.5 redis单节点多实例3A集群搭建

在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628207.html 完成单节点的redis搭建之后,修改配置文件,开启集群模式,修改配置文件生成的目录,修改位对应的端口,即可完成单节点多实例的redis集群搭建. 一:多实例配置文件生成和修改 1 配置文件拷贝 cp /usr/local/redis/etc/redis.conf /usr/loca