Redis主从 部署和配置
一.主从简介
主从介绍
Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点,复制的数据流是单向的。
作用:
1.将一直备份主节点数据,当主节点挂掉,可以顶替主提供服务
2.将扩展主节点的读能力,做读写分离,分担压力
问题:
主故障,需要手动切换到从节点进行读写
主节点的存储能力,读写能力都受到单机限制,始终是一个单机
一主一从,如果要高并发,可以在从节点开启持久化,主节点不开启。但要注意主节点如果死掉,不要自动重启,否则数据是空的,会让从也同步为空。
一主多从,用于写少读多场景。不过如果是写多的就不适合了,那会导致将一个写操作同步到多个从,消耗带宽。
树状图,用于有钱的公司。一主2从,其中一个从又当主,下面又有2从。这样多级复制,多写并发高也没问题。
主从原理

slaveof本身是异步命令,节点只保存主节点信息后返回,后续复制流程在节点内部异步执行。主从节点复制成功建立后,可以使用info replication命令查看复制相关状态, 如下所示。
切换主从会清空从节点所有数据,从节点应配置为只读。主从复制间是异步的,主接到请求完成和复制给从是不相关的。主从要求配置一致,例如内存之类的。
过程:
- 保存从节点信息
- 主从建立sock连接
- 发送ping命令,如果堵塞或者没回应,会过段时间再发送
- 权限验证,如果主设置了密码,要发送账号密码
- 同步数据,如果中途有问题导致失败,将会部分同步,而不是删除当前数据从新同步
- 数据持续复制
偏移量
- redis主节点在写入数据时会记录字节长度,在
info replication命令中master_repl_offset字段显示 - 在从节点
info relication中的slave_repl_offset中可以看到从写入的字节长度。 - 可以对比主从的字节长度查看同步差异。
缓冲区
主节点在写入时除了发送给从,自己执行,还将添加到复制缓冲区,用于数据有问题进行补救。先进先出,只保存最新的几个。
info replication
repl_backlog_active:1 #开启复制缓冲区
repl_backlog_size:1048576 #缓冲区最大长度
repl_backlog_first_byte_offset:7479 #起始偏移量,计算当前缓冲区可用范围
repl_backlog_histlen:1048576 #已保存数据的有效长度。
id节点
每个节点分配一个40位的运行id,用于区分。重启后id号将变化,导致从节点全量复制。可以在重启后用redis-cli debug reload命令加载RDB,使得id号不变。
二.主从部署
环境介绍
[Redis-Server-mastr]
主机名 = host-1
系统 = centos-7.3
地址 = 1.1.1.1
软件 = redis-3.2.9 6379
[Redis-Server-slave]
主机名 = host-2
系统 = centos-7.3
地址 = 1.1.1.2
软件 = redis-3.2.9 6379
主从配置
1.参照Centos7源码部署Redis3.2.9,每台机器部署redis。
2.配置master(host-1操作)
vim redis.conf
bind 1.1.1.1 127.0.0.1 #配置监听
requirepass root #配置密码
3.配置slave(host-2操作)
vim redis.conf
slaveof 1.1.1.1 6379 #配置主的地址和端口
masterauth root #主的密码
临时主从
1.查看会发现都是master(都操作)
redis-cli -p 6379 info | grep role
2.命令行切换到从(host-2操作)
redis-cli -p 6379
slaveof 1.1.1.1 6379
特点
在当前slave掉线后,再启动会从服务器会读取自己本地的 rdb 回复数据,而不会去自动链接主服务
三.主从测试
1.写入数据
redis-cli(host-1操作)
set name xx
2.查看从数据,是否同步过来了(host-2操作)
get name
Redis主从 部署和配置的更多相关文章
- Redis哨兵 部署和配置
目录 一.哨兵简介 哨兵介绍 哨兵原理 二.哨兵部署 环境介绍 哨兵配置 三.使用验证 一.哨兵简介 哨兵介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在 ...
- Redis 主从部署
Redis 主从部署 http://www.xuchanggang.cn/archives/978.html
- redis主从 以及认证配置
以前用redis用的很多,各种数据类型用的飞起,算是用得很溜了.不过那都是封装好的方法,自己直接调用.以前的公司比较规范,开发只是开发,很少去做跟运维相关的事情. 换了一份工作,不过这边项目刚开始起步 ...
- Redis主从和HA配置
1同步原理 摘自:http://www.cnblogs.com/stephen-liu74/archive/2012/03/30/2364717.html "下面的列表清楚的解释了Redis ...
- Redis 主从 Replication 的配置,主从复制原理
概述 Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份.具有以下特点: 异步复制.从2.8版本开始,slave能不时地从master那里获取到数据 ...
- redis主从+哨兵 安装配置二
实验环境: 192.168.2.201 centos7 master sentinel 192.168.2.202 centos7 slave sentinel 192.168.2.203 cen ...
- redis主从+哨兵 安装配置一
一.目的 实现redis的高可用. 二.同步过程 注意:当Master在后台把数据保存到快照文件完成之后,Master会把这个快照文件传送给Slave,而Slave则把内存清空后,加载该文件到内存中: ...
- nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存
一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...
- Redis主从高可用缓存
nopCommerce 3.9 大波浪系列 之 使用Redis主从高可用缓存 一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集 ...
随机推荐
- mongodb(一)
文档是 MongoDB 的核心,类似于 SQLite 数据库(关系数据库)中的每一行数据.多个键及其关联的值放在一起就是文档.在 Mongodb 中使用一种类 json 的 bson 存储数据,bso ...
- SpringMVC注解搭配环境
1.准备文件 2.工程中的pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- vue文件引入
<template> <div class="hello"> <h1>{{ msg }}</h1> <!-- <h1&g ...
- 超算云(GPU服务器)环境配置
最近在用并行超算云GPU服务器(中国国家网格12区)搭建毕设的环境,这里记录一下. 首先,超算云服务器的登录可以采用网页版.也可以采用客户端(超算云地址:https://cloud.paratera. ...
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- Codeforces 1063F - String Journey(后缀数组+线段树+dp)
Codeforces 题面传送门 & 洛谷题面传送门 神仙题,做了我整整 2.5h,写篇题解纪念下逝去的中午 后排膜拜 1 年前就独立切掉此题的 ymx,我在 2021 年的第 5270 个小 ...
- 洛谷 P7620 - CF1431J Zero-XOR Array(状压 dp)
洛谷题面传送门 首先显然题目等价于求有多少个长度 \(n-1\) 的序列 \(b\) 满足 \(a_i\le b_i\le a_{i+1}\),满足 \(b_1\oplus b_2\oplus\cdo ...
- Redis队列跟MQ的区别
Redis队列:Redis队列是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用 ...
- A Child's History of England.50
'Knave [man without honor]!' said King Richard. 'What have I done to thee [you] that thou [you] shou ...
- The Go tools for Windows + Assembler很好玩
我想用python做个tiny BASIC编译器.赋值和加减乘除,IF和FOR. 语法分析python有ply包,用ply.lex和ply.yacc做个计算器很简单,我已经做了. 做个解释器应该也不难 ...