首页 > 数据库 >【Redis】Redis主从复制(一)————主从搭建

【Redis】Redis主从复制(一)————主从搭建

时间:2024-06-08 11:58:12浏览次数:27  
标签:主从复制 配置文件 Redis redis 节点 复制 server 主从

目录

背景

单节点服务器的问题问题:

  • 可用性:如果这个机器挂了,意味着服务就中断了.
  • 性能:支持的并发量也是比较有限的.

解决思路:引入分布式系统

  • 分布式系统中,往往需要多个服务器来部署 redis 服务,从而构成 redis 集群
  • 此时就可以让这个集群给整个分布式系统中的其他服务,提供更稳定 / 更高效的数据存储功能.

主从复制

  • 主从复制是一种数据同步机制,用于在数据库之间实现数据的自动复制。
  • 在主从复制中,一个数据库(主数据库)被定义为主节点,负责接收和处理所有的写操作;
  • 而其他的数据库(从数据库)被定义为从节点,负责接收和复制主节点的数据更新。
  • 如果是挂掉了某一个从节点,没什么影响,此时继续从主节点或者其他从节点读取数据,效果是完全一样的.
  • 如果改掉的是主节点,是有一定影响的,因为主节点还负责 “写数据”

主从复制的工作流程

  1. 主节点接收到一个写操作。
  2. 主节点将该写操作记录到其日志文件(二进制日志)中。
  3. 通过网络,主节点将该写操作发送给所有的从节点。
  4. 从节点收到该写操作后,将其记录到其日志文件(中继日志)中。
  5. 从节点执行该写操作,并将执行结果返回给主节点。
  6. 主节点将该写操作及执行结果记录到其日志文件中。
  7. 从节点将执行结果发送给客户端。

通过主从复制,可以实现以下几个目的:

  1. 提高数据库的读性能:从节点可以处理读操作,减轻主节点的负载。
  2. 提高数据库的可用性:当主节点发生故障时,可以快速切换到从节点,保证系统的正常运行。
  3. 数据备份:从节点可以作为主节点的备份,以防止数据丢失。

需要注意的是,主从复制只能实现数据的单向复制,即主节点到从节点的复制。如果希望实现数据的双向同步,可以使用主主复制机制。

主从复制的优点

  1. 提高读性能:主从复制可以将读操作分发到从节点上进行处理,减轻主节点的读负载。通过增加从节点的数量,可以进一步扩展读吞吐量,提升系统的性能。

  2. 提高可用性:主从复制可以保证数据库的高可用性。当主节点发生故障时,可以将其中一个从节点提升为新的主节点,使系统继续正常运行而不会中断。

  3. 数据备份:从节点可以用作主节点的备份,保证数据的安全性。主节点的数据变更会被同步到从节点,从而实现数据的备份和恢复。

  4. 负载均衡:通过将读操作和写操作分离到不同的节点上处理,主从复制可以将负载分摊到多个节点上,提高系统的整体性能和吞吐量。

  5. 地理冗余:主从复制还可以用于实现地理冗余。通过将主节点和从节点部署在不同的地理位置上,可以保证在某个地区发生网络故障或自然灾害时,其他地区的节点可以继续提供服务。

配置 redis 主从结构

  • 配置 redis 主从结构,需要启动多个 redis 服务器,分配在一个个单独的主机上(分布式),这里使用一台设备来模拟主从结构
  • redis-server 的端口是 6379 ,此时就不能让其他节点启动时也用 6379 了,我们有一下两种方式来指定 redis-server 的端口号:
    • 启动程序时,通过命令的方式来指定端口号(–port 选项)
    • 直接在配置文件中,来设定端口(推荐,因为修改配置文件,是持久有效的).

复制配置文件,修改

  • 主节点的配置不变,只需要修改从节点的配置即可,因此我们只需要复制两份主节点的配置文件,并修改这两份文件的端口和后台运行方式即可.
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

配置主从结构

  • 在两个配置文件末尾加 slaveof 配置主从结构(绑定父节点为 6379 端口).
    在这里插入图片描述

启动 redis 服务

  • 通过 redis-server 命令来启动刚刚配置好的这两个节点.
    在这里插入图片描述

备注

如果 redis 服务启动后修改了配置文件就需要重启才能起效。

  • 如果是通过 redis-server 启动服务器,就必须搭配 kill 命令来停止.

  • 如果是通过 service redis-server start 启动服务器,必须搭配 service redis-server stop 来停止.

  • 如果使用 kill 命令停止 service redis-server start ,这个 redis-server 进程会自动启动.

  • 通过 netstat -anp 命令就可以查看从节点和主节点的绑定情况
    在这里插入图片描述

  • 在复制两个会话,启动两个从节点的 redis 客户端,此时 redis 从节点上就只能读数据,不能写入数据了在这里插入图片描述在这里插入图片描述

查看复制状态

  • 在 redis 客户端,通过 info replication 就可以查看当前节点的复制状态了.
    在这里插入图片描述
  • 在复制两个会话,启动两个从节点的 redis 客户端,此时 redis 从节点上就只能读数据,不能写入数据了
    在这里插入图片描述在这里插入图片描述
  • 值得注意的是,从节点和主节点之间的数据同步,不是瞬间完成的,并且同时主节点上也会 “源源不断” 的收到其他 “修改数据” 的请求
  • 因此这个时候就需要使用 offset 来记录当前主节点和从节点的数据同步情况,当 从节点 的 offset 等于 主节点的 offset 时,表明此时数据完全一致.

标签:主从复制,配置文件,Redis,redis,节点,复制,server,主从
From: https://blog.csdn.net/weixin_37833693/article/details/139527927

相关文章

  • 头歌初识redis答案
    头歌初识Redis的答案可以从多个方面进行归纳和总结。以下是根据参考文章提供的信息,按照清晰、分点表示和归纳的方式给出的答案:一、Redis基础知识Redis有16个数据库,默认使用第0个数据库,可以用select命令进行切换。Redis是基于内存操作的,其性能瓶颈不是CPU,而是机器的内存和......
  • Redis实战——创建账户及连接数据库
    一、创建一个新账户要创建一个带有免费数据库的新账户,请按照以下步骤操作:前往RedisCloud的注册页面。有两种开始使用RedisCloud的选项:在表单中输入您的信息,然后选择“GetStarted”(开始使用)。使用Google或Github账户进行注册。  3.在您输入信息后,您应该会收......
  • Java (Redis)
    前沿让我们来学习下Redis吧 官网下载客户端https://app.redislabs.com/#/rlec-downloads  什么是Redis?Redis(RemoteDictionaryServer)是一个开源的、高性能的、基于内存的键值存储系统。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于其基于......
  • 福州大学苏立超老师《大数据库系统》第三章复习提纲“redis”
    第三章(考点:3.3-3.7数据类型与操作(会写会熟练使用)消息订阅持久化主从复制运维和哨兵怎么配,作用)一.通用命令设置setkeyvalue查询keyskey(*)支持模糊查询*任意多个字符;[]括号内某个字符;?单个字符randomkey随机keyexistskey判断是否存在typekey返回类型delke......
  • Mysql 8.4.0 结合 Docker 搭建GTID主从复制,以及传统主从复制
    注意:本教程不适用旧版本,Mysql8.4.0和旧版本,主从复制相关命令有所变化,具体区别请看文末参考软件版本Docker:26.1.3Mysql:8.4.0 GTID主从复制1.准备主从两台服务器2.两台服务器分别创建DockerCompose文件services:mysql:image:mysql:8.4.0ports:-"3......
  • linux安装mysql8并配置主从
    服务器10.213.3.68DBmaser10.213.3.69DBslave都安装mysql8安装包,解压mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz[root@DB-mastermysql8]#lsbindocsincludelibLICENSEmanREADMEsharesupport-files优化过的配置文件[mysqld]server-id=1log-bin=mys......
  • Redis-12-SpringBoot集成Redis哨兵模式
    Redis哨兵的配置,参考我这篇文章:Redis-5-高可用1.背景网上搜半天没搜到份好用的,自己整理了下方便以后复制,基于springboot2.6.13。lettucecommons-pool22.集成2.1导入pom<!--spring-redis--><dependency><groupId>org.springframewor......
  • 使用Redis优化Java应用的性能——高效的缓存实践
    引言:在现代应用开发中,高效的缓存策略是提升性能和用户体验的关键。Redis作为一个高性能的键值存储系统,提供了一种快速存取数据的方式,帮助Java应用处理大量动态信息而无需频繁查询数据库。什么是Redis?Redis是一个开源的键值存储系统,它支持多种类型的数据结构如字符串、哈希、......
  • Docker 下载redis
    docker拉取redis镜像dockerpullredis:对应的版本号(不写默认为最新版) 查看镜像是否拉取成功dockerimages 创建redis配置文件启动前需要先创建reids的外部挂载的配置文件(/opt/docker/redis/conf/redis.conf)(因为redis本身容器只存在/etc/redis目录,本身就不创建redis......
  • 高并发下使用Redis分布式锁确保接口执行唯一性【重点】
    摘要:本文将介绍如何使用Redis分布式锁来确保在高并发环境下,确保某个接口只有一个线程能够执行。通过使用Redis的SETNX命令,我们可以实现一个简单的分布式锁,从而避免多个线程同时访问共享资源。一、背景在高并发的系统中,为了保证数据的一致性和完整性,我们经常需要对某些接口......