<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 宕机后,从服务器没办法进行动态选举,从只能读取就的数据。
<Redis> 入门六 主从复制方式的集群的更多相关文章
- shell脚本部署redis以及redis主从复制和redis-cluster集群
# 关于脚本: # 使用root用户执行此脚本,提前关闭selinux: # 执行脚本之前,hostsIP内的IP修改成自己的机器IP: # hostsIp内的IP数量如果有增加或者减少,for循环的 ...
- 实现Redis Cluster并实现Python链接集群
目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...
- Linux下redis 的部署、主从与集群
老男孩Python全栈6期——redis--------------------------Linux 操作系统 默认的内存管理机制RSS:page cache:anno page:Linux操作系统 ...
- redis 5.0.3 讲解、集群搭建
REDIS 一 .redis 介绍 不管你是从事Python.Java.Go.PHP.Ruby等等... Redis都应该是一个比较熟悉的中间件.而大部分经常写业务代码的程序员,实际工作中或许只用到了 ...
- Redis安装(单机及各类集群,阿里云)
Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...
- Redis学习笔记(九)——集群
一.概述 Redis Cluster与Redis3.0.0同时发布,以此结束了Redis无官方集群方案的时代. Redis Cluster是去中心化,去中间件,也就是说,集群中的每个节点都是平等的关 ...
- Tomcat 集群模式下 Session 更新 Bug (redis memcached 及tomcat自已的集群)
从 excel 中导入数据入系统,我们用的是先上传文件至服务器再分析所上传的文件逐行导入. 就是执行了一循环,在当前循环位置标识一下客户端就知道执行的进度了,以前的方式 是用 session.setA ...
- Redis详解(七)——集群
Redis详解(七)--集群 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是 ...
- Redis系列5:深入分析Cluster 集群模式
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) 1 背景 前面我们 ...
随机推荐
- CodeForces 721B Passwords (水题)
题意:给定 n 个密码,你要按长度不递减的顺序进行尝试,问你最多和最少试多少次可能找出密码,每尝试 k 次错误的,就要等5秒. 析:我们只要把长度全都统计下来,然后从1开始去找目标长度,最少的就是正好 ...
- spring分布式事务学习笔记(1)
此文已由作者夏昀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 分布式事务对性能有一定的影响,所以不是最佳的解决方案,能通过设计避免最好尽量避免. 分布式事务(Distrib ...
- Log4j日志等级
Log4j根据日志信息的重要程度,分OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL 当然再细分的话 还有 FATAL(严重错误), 但是Log4j官方建议实际实用的话,Log4 ...
- 【笔记】对自定义异常的理解(Java)
原本,原有的异常是非手动地.自动地抛出的. 了解自定义异常时,发现其信息只是: 继承了谁,即它自己算哪种异常: 它的信息,比如一个ID,这个貌似还是可选的: 它是可被传入信息的 没有遗漏的话,就这仨了 ...
- 【牛客-14602】xinjun与阴阳师(01背包)
xinjun与阴阳师 题目描述 xinjun是各类手游的狂热粉丝,因随手一氪.一氪上千而威震工大,现在他迷上了阴阳师.xinjun玩手游有一个习惯,就是经过层层计算制定出一套方案来使操作利益最大化(因 ...
- Qt下存储读写应用程序设置的三种方法
一.简介 用户对应用程序经常有这样的要求:要求它能记住它的settings,比如窗口大小.位置和密码等等.有三种方法可以实现: 使用注册表: 使用配置文件(.ini): 使用自定义文件(例如.txt) ...
- 172 Factorial Trailing Zeroes 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量.注意: 你的解决方案应为对数时间复杂度. 详见:https://leetcode.com/problems/factorial-trailing-ze ...
- 一个net程序猿必备工具
自古以来,人类的进步都是依赖于工具的进步,从刀耕火种,到使用青铜器,再到现在的科技,每一次都使我们的工作效率提高了无数倍,所以一个好的工具能使我们提高无数倍的工作效率,下面,我就根据自己简单的总结一下 ...
- MYSQL5.7 忘记ROOT密码/初始化ROOT密码
编辑my.cnf允许空密码登录 [root@7Core ~]# vi /etc/my.cnf #在[mysqld]下加入一行 skip-grant-tables=1 重新启动Mysql服务 [root ...
- Android开发中使用代码删除数据库
更多信息参考:Android开发中使用代码删除数据库 在Android开发中,如果用到数据库,就会有一个很麻烦的问题,就是有时候需要删除数据库很麻烦,要打开Android Device Monitor ...