Redis7之Redis复制(八)

2023-11-11

8.1 介绍

  • 主从复制

    • mmaster以写为主,slave以读为主
    • 当master数据变化时,自动将新的数据异步同步到其他slave数据库
  • 读写分离

  • down机恢复

  • 数据备份

  • 水平扩容支撑高并发

8.2 基本操作

  • 配从不配主
    • 权限细节
      • master如果配置了 requirepass 参数,需要密码登录
      • slave 需要配置 masterauth来设置检验密码,否则的话master会拒绝slave的访问请求

基本操作命令

info replication   查看复制节点的主从关系和配置信息
    
replicaof/slaveof 主库IP 主库端口   replicaof/slaveof这两个一样,一般写入进redis.conf配置文件内,在运行期间修改slave节点的信息,如果该数据库已经某个数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步

replicaof/slaveof no one      使当前数据库停止与其他数据库的同步,升级为主数据库

配置一个master,两个slave

  • 3台虚拟机,拷贝redis.conf文件
    • redis6379.conf (master)

      • 开启 daemonize yes 在这里插入图片描述

      • 注释掉 bind 127.0.0.1

      • protected-mode no

      • 指定端口号 port 6379

      • 指定当前工作目录 dir

      • 在这里插入图片描述

      • pid文件名字 pidfile

      • log文件名字 logfile

      • requirepass

      • dbfilename dump.rdb

      • appendonly yes appendfilename appendonly.aof 在这里插入图片描述

      • 从机需要配置 从机配置上主机的ip、端口、密码 在这里插入图片描述

    • redis6380.conf (slave)

    • redis6381.conf (slave)

  • 注意防火墙配置
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld
    
添加 :firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入: firewall-cmd --reload
查看: firewall-cmd --zone= public --query-port=80/tcp
删除: firewall-cmd --zone= public --remove-port=80/tcp --permanent
  • 常用3招

    • 一主二仆

      • 方案1 配置文件固定写死

        • 配置两个从机 6380.conf 和 6381.conf 在这里插入图片描述

        • 依次启动

          • 6379.conf
            	redis-server /myredis/redis6379.conf 
            	redis-cli -a 123456
            
            6380.conf
            	redis-server /myredis/redis6380.conf 
            	redis-cli -a 123456 -p 6380
            
            6381.conf
            	redis-server /myredis/redis6381.conf 
                redis-cli -a 123456 -p 6381
            
        • 主从关系查看

          • 日志查看

            • 主机 在这里插入图片描述

            • 从机 (以一台为例) 在这里插入图片描述

          • 命令查看

            • info replication
      • 方案2 命令操作手动指定

        • 去掉配置文件中配置的从属关系
        • replicaof/slaveof no one 升级为主机
        • replicaof/slaveof 主库IP 主库端口 称为主库的从机
        • 配置VS命令的区别
          • 配置,持久稳定
          • 命令,当次生效
    • 薪火相传

      • 上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻主master的写压力
      • 中途变更转向:会清除之前的数据,重新建立拷贝最新的
      • slaveof/replicaof 新主库IP 新主库端口
    • 反客为主

      • slaveof/replicaof no one 使当前数据库停止与其他数据库的同步,转成主数据库

复制原理

  • slave启动,同步初请
    • slave启动成功连接到master后会发送一个sync命令
    • slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除
  • 首次连接,全量复制
    • master节点收到sync命令后会在后台开始保存快照(即RDB持久化,主从复制会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化后,master将rdb快照文件和缓存的命令发送到所有slave,已完成一次完全同步
    • 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
  • 心跳持续,保持通信
    • repl-ping-replica-period 10
    • master发出PING包的周期,默认是10秒
  • 进入平稳,增量复制
    • master 继续将新的所有收集到的修改命令自动一次传给slave,完成同步
  • 从机下线,重连续传
    • master 会检查backlog里面的offset,master和slave都会保存一个复制的offset怀有一个masterId
    • offset 是保存在backlog 中的。master只会把已经复制的offset后面的数据赋值给slave,类似断电续传

缺点

  1. 复制延时,信号衰减

    1. 由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
      在这里插入图片描述
  2. master挂了

    1. 默认情况下不会在slave节点自动重选一个master
    2. 需要人工干预
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis7之Redis复制(八) 的相关文章

  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • Laravel 异常队列最大尝试次数超出

    我创建了一个应用程序来向多个用户发送电子邮件 但在处理大量收件人时遇到问题 该错误出现在failed jobs table Illuminate Queue MaxAttemptsExceededException App Jobs ESe
  • 创建 C++ Redis 模块 - “不导出 RedisModule_OnLoad() 符号”

    我在加载 Redis 模块时遇到一些问题 我只是复制来自的示例https redis io topics modules intro https redis io topics modules intro 但我把它剥下来了 include
  • 如何延长 django-redis 中的缓存 ttl(生存时间)?

    我正在使用 django 1 5 4 和 django redis 3 7 1 我想延长缓存的 ttl 生存时间 当我取回它时 这是示例代码 from django core cache import cache foo cache get
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • ServiceStack.Redis:无法连接:sPort:

    我经常得到 ServiceStack Redis 无法连接 sPort 0 或 ServiceStack Redis 无法连接 sPort 50071 或其他端口号 当我们的网站比较繁忙时 就会出现这种情况 Redis 本身看起来很好 CP
  • 为什么我们需要 Redis 来运行 CKAN?

    我想知道为什么我们需要 Redis 服务器来运行 CKAN 如果需要 为什么 我如何使用 CKAN 配置它 附注 我正在 RHEL7 中运行我的 ckan 实例 Update Redis 已成为一项要求从CKAN 2 7开始 https d
  • 在 Rails 应用程序上将 HASH 保存到 Redis

    我刚刚开始使用 Redis 和 Rails 所以这可能是一个愚蠢的问题 我试图将哈希值保存到 Redis 服务器 但是当我检索它时 它只是一个字符串 IE hash field gt value field2 gt value2 redis
  • Redis AOF fsync(始终)与 LSM 树

    我对日志结构化合并树 LSM 树 的理解是 它利用了附加到磁盘非常快 因为它不需要查找 这一事实 只需将更新附加到预写日志并返回到客户端即可 我的理解是 这仍然提供了立即的持久性 同时仍然非常快 我不认为 Redis 使用 LSM 树 它似
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • 如果没有过期的内容,Redis maxmemory-policy volatile-lru 是否会被驱逐?

    我有一个 redis 服务器 设置了maxmemory policy set to volatile lru 文档表明 当达到内存限制时 这将从设置过期的条目集中逐出 在这种情况下 redis 是否只驱逐过期的项目 如果内存中的所有内容都设
  • 如何暂停或恢复 celery 任务?

    我的项目中有一项要求 客户可以暂停或恢复正在挂起的流程 而不是流程流程 我在用网络套接字显示芹菜任务结果 但在暂停 恢复时我不明白如何设计代码 我想到的唯一方法就是revoke暂停请求中的任务 同时保留数据撤销的过程在缓存中 并稍后在res
  • 如果 Redis 已经是堆栈的一部分,为什么 Memcached 仍然与 Redis 一起使用?

    Redis 可以执行 Memcached 提供的所有操作 LRU 缓存 项目过期以及现在版本 3 x 中的集群 目前处于测试阶段 或通过 twemproxy 等工具执行 性能也类似 此外 Redis 增加了持久性 因此您无需在服务器重新启动
  • 如何让 Redis 在 Heroku 上启动?

    我已经添加了RedistogoHeroku 上的 nano 插件 我已经在控制台中成功测试了它 但是 当我的应用程序尝试连接 Redis 时 出现以下错误 Heroku 日志文件 2011 10 12T08 19 50 00 00 app
  • 有没有办法在jedis中传递redis命令,而不使用函数?

    我们正在尝试构建一个控制台来处理 Redis 查询 但是 在后端我们需要使用Jedis 因此 作为输入给出的命令需要使用 Jedis 进行处理 例如 在redis cli中 我们使用 keys 同样 我们在 Jedis 中使用 jedis
  • 如何从redis中的哈希中获取与特定模式匹配的所有键?

    我想从哈希中获取所有键及其值 其中键与特定模式匹配 我将 Redis 与 C 库 ServiceStack Redis 结合使用 我找到了命令Keys with a pattern http redis io commands keys h
  • 如何将redis中的数据保存到磁盘中的文件并读回redis?

    我可以在程序中写入 Redis 并从中读取 但是 关闭服务器后 我猜数据已从内存中删除 如何将redis中的数据保存到磁盘中 以便下次打开redis时 它可以打开数据 让控制台程序读取它吗 如果我的电脑突然断电重启 redis可以恢复状态吗
  • 使用 StackExchange.Redis 处理暂时性网络错误

    寻找有关使用 StackExchange Redis 客户端时处理临时网络问题的指南 澄清一下 我并不是说最初使用 ConnectionMultiplexer Connect 连接到 Redis 服务器 我指的是如何处理在操作过程中由于任何

随机推荐

  • 优雅的玩转Fast-DDS

    优雅的玩转Fast DDS 安装依赖 sudo apt install cmake g python3 pip wget git pip3 install U colcon common extensions vcstool Fast DD
  • Web开发权威指南笔记(二)

    书 Web开发权威指南 美 Chris Aquino Todd Gandee著 为2nd实战项目CoffeeRun练习以及代码整理 全为个人借鉴本书产出 若需要转载请联系通知我 请尊重原创 谢谢 整理了大概5天了 内容比较多 很多重点都整理
  • mysql区别

    mysql区别 5 0之后与5 0之前 mysql5 0以及5 0以上的版本都存在一个系统自带的系统数据库 是information schema 而5 0之前的版本不存在且5 0以下的版本是多用户单操作 information schem
  • 如何创建NFT-独家设计

    如何创建NFT 第一步 下载并安装 MetaMask小狐狸钱包 第二步 打开官网https opensea io 点击右上角的钱包标志 进行链接 第三步 右上角弹出钱包提示 点击下一步就成功了 第四步 回到首页 点击create按钮 进入创
  • feign使用注意

    参数使用注意 参数name value属性 这两个的作用是一样的 指定的是调用服务的微服务名称 参数url 指定调用服务的全路径 经常用于本地测试 如果同时指定name和url属性 则以url属性为准 name属性指定的值便当做客户端的名称
  • c#正确用smtp.office365.com发邮件

  • Python自动化测试Unittest框架基本使用

    Unittest 框架 首先要知道这个框架是Python自带的 不需要安装 这个框架最重要的4 个核心 TestCase TestSuite TextTestRunner Fixture TestCase 个人总结一下 这个就是用测试用例继
  • SpringCloud与SpringBoot的版本对应关系

    在SpringCloud官网 https spring io projects spring cloud 可以看到 当前 2021年11月 SpringCloud的最新GA版本是2020 0 4这一版 除了2020 0 X版本外 Sprin
  • 基于掌控板+二哈+TinyWebDB+Easy_IoT的人脸识别测温

    文章目录 前言 一 部分硬件及平台介绍 1 二哈识图 HuskyLens 2 TinyWebDB 3 Easy IoT 二 操作步骤 1 二哈的使用 2 TinyWebDB的使用 3 Easy IoT的使用 三 硬件连接 四 图形化代码编写
  • jdk8 免登录安装

    1 注册一大堆 麻烦死了 程序员怎么可能做被迫的事情 2 复制下载链接https www oracle com webapps redirect signon nexturl https download oracle com otn ja
  • 解析目标文件

    最近在看 程序员的自我修养 颇有体会 故化繁为简 整理书中部分内容 作为学习笔记 PC平台上流行的可执行文件格式主要是windows下的PE Portable Executable 和Linux下的ELF Executable Linkab
  • 基于MapReduce的手机上网流量统计分析

    Hadoop简介 适合大数据的分布式存储与计算平台 运行在Hadoop之上的大型服务器集群 数据情况 摘取部分 字段描述 时间戳 手机号码 AP mac AP mac 访问的网址 网址种类 上行数据包 下行数据包 流量 访问状态 手机上网流
  • 区块链项目数据存储系统分析

    前言 一 区块链简介 二 数据存储 1 比特币 Bitcoin 2 以太坊 3 Hyperledger Fabric 4 EOS Enterprise Operation System 4 1 IPFS 4 2 EOS存储的设计 5 The
  • 初识C语言(5)C语言一些基本常识

    需提前看 初识C语言 4 字符串和转义字符 目录 相关知识 匹对原则 写法习惯 被省略 详解 介绍 介绍 介绍 介绍 介绍 VS2013调试 进入调试 逐语句和逐过程 F5全速调试 F9断点 相关知识 匹对原则 学习C语言之前 我们需要先知
  • 软件研发部门的基础设施

    作者 朱金灿 来源 http blog csdn net clever101 有时我在想一个问题 软件研发部门的基础设施包括哪些东西 先说说硬件吧 最容易想到的开发人员用的电脑 还有开发部门局域网 源码服务器 构建服务器和备份服务器 再说说
  • Logstash.service: Unit not found (CentOS 7)

    1 生成logstash service sudo usr share logstash bin system install etc logstash startup options systemd
  • linux系统下web服务器的配置

    配置步骤及源码 绑定IP地址 为Apache服务器网卡绑定两个IP地址 分别是eth0 1 192 168 91 21和eth0 2 192 168 91 22 通过复制的方式复制ifcfg eth0为ifcfg eth0 1和ifcfg
  • 数据库(二)—— 关系数据库以及关系代数和关系运算

    一 关系数据结构及形式化定义 1 关系 关系模型的数据结构非常简单 只包含单一的数据结构 关系 在用户看来 关系模型中数据的逻辑结构是一张扁平的二维表 1 1 域 域是一组具有相同数据类型值的集合 1 2 笛卡儿积 笛卡儿积是域上的一种集合
  • Win10远程桌面连接怎么用?(远程桌面连接教程)

    怎么开启远程桌面连接 电脑远程桌面连接怎么用 要使用远程桌面控制电脑 您需先在电脑上开启远程桌面连接并且两台电脑还需在同一个局域网中 否则您的设置端口转发才能使用远程桌面连 那么怎么开启远程桌面连接呢 具体操作步骤如下 步骤1 在Win10
  • Redis7之Redis复制(八)

    8 1 介绍 主从复制 mmaster以写为主 slave以读为主 当master数据变化时 自动将新的数据异步同步到其他slave数据库 读写分离 down机恢复 数据备份 水平扩容支撑高并发 8 2 基本操作 配从不配主 权限细节 ma