Redis7--基础篇6(复制replica)

2023-12-01 18:20
文章标签 基础 复制 redis7 replica

本文主要是介绍Redis7--基础篇6(复制replica),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 复制(replica)介绍

在这里插入图片描述
在这里插入图片描述

Redis数据库支持主从复制,master以写为主,slave以读为主,当master数据变化的时候,自动将新的数据异步同步到slave数据库。
实现读写分离、容灾恢复、数据备份、水平扩容支撑高并发。

2. 案例演示

2.1 架构说明

一个master,两个slave。
在这里插入图片描述

2.2 以配置文件方式启动主从复制

以端口为6379的redis举例修改配置文件并启动主从复制

1. 开启daemonize

在这里插入图片描述

2. 注释

在这里插入图片描述

3. 关闭protected-mode

在这里插入图片描述

4. 指定端口

在这里插入图片描述

5. 指定当前工作目录

在这里插入图片描述

6. pid文件名

在这里插入图片描述

7. log文件名

在这里插入图片描述

8. requirepass

在这里插入图片描述

9. dump.rdb

在这里插入图片描述

10. aof(本步骤可选,非必须)

在这里插入图片描述
在这里插入图片描述

11. 从机访问主机的访问密码(slave从机需要配置,master主机不用配置)

在这里插入图片描述

12. 先启动主机master,再启动从机slave

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13. 主从关系查看

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

  • 从机日志
    在这里插入图片描述
    在这里插入图片描述

  • 命令
    info replication
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

14. 主从问题小结

从机不可执行写命令

在这里插入图片描述

slave是从头开始复制还是从切入点开始复制?

master启动,写到k3
slave1跟着master同时启动,跟着写到k3
slave2写到k3后才启动,那之前的是否也可以复制?
Y,首次一锅端,后续跟随,master写,slave跟

主机shutdown后情况如何?从机是上位还是原地待命

从机不动,原地待命,从机数据可以正常使用;等待主机重启动归来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主机shutdown后重启,主从关系能恢复吗,从机能否顺利复制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主从关系可以恢复,从机可以顺利复制。

某台从机down掉后,主机继续,从机重启后会继续复制吗

手动配置复制关系: 如果在启动过程中没有直接在从机的配置文件中定义主机(Master)信息,而是通过命令行启动并使用类似于 SLAVEOF 127.0.0.1 6379 的命令将从机连接到主机,那么在从机宕机后重新启动时,它将会以自己作为主机的状态启动,并不会自动恢复数据同步。为了使数据同步重新开始,需要再次手动执行 SLAVEOF 127.0.0.1 6379 这样的命令,将其重新设为主机的从机,以实现数据同步。

配置文件定义复制关系: 如果在从机的配置文件中明确指定了主机的信息,那么在从机宕机后重新启动时,它会自动尝试连接到指定的主机并恢复数据同步。这种情况下,从机会重新以从属身份连接到主机,继续同步数据。

2.3 以命令方式启动主从复制

三台机器都是主机状态,在预设的从机上执行命令:slaveof 主机ip 主机端口

在这里插入图片描述
在这里插入图片描述

1. 从机重启以后的效果

在这里插入图片描述

2. 配置VS命令实现的区别

配置方式实现,持久稳定。
命令方式实现,当次生效。

2.4 从机是否可以作为其他从机的主机

上一个从机可以是下一个从机的主机,从机同样可以接受其他从机的连接和同步请求,那么此从机就作为链条中下一个从机的主机,可以有效减轻上一层主机的写压力。

2.5 从机变回主机命令

SLAVEOF NO ONE

对一个从属服务器执行命令 SLAVEOF NO ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。
利用『 SLAVEOF NO ONE 不会丢弃同步所得数据集』这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行

3. 复制原理和工作流程

3.1 slave启动,同步初请

slave启动成功连接到master后,会发送一个sync命令。
slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清楚。

3.2 首次连接,全量复制

master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制会触发RDB),同时收集所有接收到的用于修改数据集的命令缓存起来,master节点执行RDB持久化后,master将RDB快照文件和所有缓存的命令发送到所有slave,以完成一次同步。
slave在接收到文件后,将其存盘并加载到内存中,从而完成复制的初始化。

3.3 心跳持续,保持通讯

master发出PING包的周期,默认是10秒
在这里插入图片描述

3.4 进入平稳,增量复制

master继续将新收集到的所有的修改命令,依次传递给slave,完成同步。

3.5 从机下线,重连续传

master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterID,offset是保存在backlog中的,master只会把已经复制的offset后面的数据复制给slave,类似于断点续传。

4. 复制的缺点

4.1 复制延时,信号衰减

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

4.2 master down掉以后无法处理

默认情况下不会在slave中自动选出一个节点当做master。

这篇关于Redis7--基础篇6(复制replica)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/442201

相关文章

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL