热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis主从复制机制详解及其工作原理

主从复制机制在Redis中具有重要作用,能够实现读写分离、提升系统性能并提供快速的灾难恢复能力。具体实现方面,以一主两从的架构为例,需要创建三个独立的配置文件(.conf),分别用于主节点和两个从节点的设置。通过这种方式,可以从主节点同步数据到从节点,确保数据的一致性和高可用性。此外,还可以利用从节点进行读操作,减轻主节点的压力,进一步提高系统的整体性能。

主从的好处:可以读写分离,扩展性能,容灾快速恢复。
在这里插入图片描述

主从复制的实现,以一主二从为例
创建三个.conf配置文件,并引用redis.conf的配置
在这里插入图片描述

.conf的配置内容(三个都一样只不过端口号不同)
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
在这里插入图片描述
使用redis-server redis6379.conf命令来启动三台redis服务器
redis-cli -p 6379 命令启动客户端
slave-priority 10
设置从机的优先级,值越小,优先级越高,用于选举主机时使用。默认100
info replication 查看主从相关信息
slaveof 127.0.0.1 6379 设置主机(在6380和6381的客户端执行这个命令后,6380和6381就是从机,6379是主机)
设置好主从关系后,主机可以读写,从机只能读,主机写进去的内容会同步到从机,如果主机挂掉,重启启动依然是主机,从机挂掉重启之后需要执行slaveof ip port 命令来设置自己为从机。
薪火相传
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。
用 slaveof
中途变更转向:会清除之前的数据,重新建立拷贝最新的
风险是一旦某个slave宕机,后面的slave都没法备份
主机挂了,从机还是从机,无法写数据了
在这里插入图片描述在这里插入图片描述

反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
用 slaveof no one 将从机变为主机。
复制原理
Slave启动成功连接到master后会发送一个sync命令
Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
在这里插入图片描述


推荐阅读
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • 在腾讯云服务器上部署Nginx的详细指南中,首先需要确保安装必要的依赖包。如果这些依赖包已安装,可直接跳过此步骤。具体命令包括 `yum -y install gcc gcc-c++ wget net-tools pcre-devel zlib-devel`。接下来,本文将详细介绍如何下载、编译和配置Nginx,以确保其在腾讯云服务器上顺利运行。此外,还将提供一些优化建议,帮助用户提升Nginx的性能和安全性。 ... [详细]
  • 在SQL Server 2008数据库迁移过程中,备份方法是一种高效且可靠的导出手段。本文详细介绍了如何利用备份功能实现数据的快速迁移,并提供了具体的步骤和注意事项,适合Golang程序员和数据库管理员参考。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
  • 本文详细介绍了在Windows XP系统中安装和配置Unix打印服务的方法,以支持远程行式打印机(LPR)功能。对于同时使用Windows 2000 Server打印服务器和Unix打印服务器的网络环境,该指南提供了实用的步骤和配置建议,确保不同平台之间的兼容性和高效打印。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 如何在Mac上构建高效的本地服务器环境
    在Mac上构建高效的本地服务器环境,首先需要了解基本步骤:1. 配置目录基础;2. 启动Apache服务;3. 添加自定义文档至本地服务器;4. 查看自定义效果。此外,还可以通过手机或其他电脑访问本机服务器,以确保跨设备的兼容性和调试效果。Mac系统自带的Apache服务为本地开发提供了便捷的工具,本文将详细介绍每个步骤的具体操作方法。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
  • 在学习LVM(逻辑卷管理)技术的过程中,我对MD(多设备)、DM(设备映射器)以及逻辑设备和RAID的实现有了深入的理解。LVM2架构主要由DM主模块及其多个子模块组成,其中linear子模块用于创建线性设备,类似于简单的磁盘分区拼接。此外,还探讨了其他子模块如striped、mirror等在提高性能和数据冗余方面的应用。通过实际操作,我掌握了LVM的基本配置和管理方法,能够灵活应对不同存储需求。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
author-avatar
城隍山人因
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有