当前位置: 首页 > article >正文

主从复制(Redis的特性)

背景:在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满足故障恢复和负载均衡等需求。Redis 也是如此,它为我们提供了复制的功能,实现了相同数据的多个 Redis 副本。


什么是主从复制?


  在redis若干个节点中,有的是主节点,有的是从节点。这里如果,我们部署了3个 redis-server,其中有一个主节点,有2个从节点。这里从节点必须听主节点的,从节点只允许进行读操作,主节点进行写操作。

  从节点上的数据会根据主节点上的数据变化而变化,从节点的数据要和主节点上的数据保持一直。如果,我们从节点挂了一个,那么对于我们的服务影响是很小的,从其他从节点或者是主节点上读取数据即可,那么我们的主节点如果挂了,那么真就不能写数据了。

如图:


建立复制


  首先呢要想配置,redis的主从复制的结构,至少要启动3个redis服务程序,如果没有3台服务器,那么我们可以,通过修改复制配置文件的方式,来启动3台redis服务程序。其实这里我们是通过修改端口号来启动3个不同端口号的redis服务程序。分配了不同的进程。

这个操作比较简单,我就不掩饰了。


建立主从结构


如图以下有三种构建方式:

主节点是master,从节点是slave,在这里我们还需要将从节点修改其 daemonize 为 yes,目的是将从节点以后台进程的方式执行。

这里我设置的两个从节点的端口号,分别为 6380 和 6381。

如以下命令:

redis-server /etc/redis/redis-slave.conf --port 6380 --slaveof 127.0.0.1 6379

表示 6380 为6379的从节点。

通过 netstat -nlpt 确保三个 Redis 均已正确启动。
如图所示:

可以通过 info replication 命令查看复制相关状态
如图:
以上是主节点的状态。
以上是副节点的状态。

断开复制


  slaveof 命令不但可以建立复制,还可以在从节点执行 slaveof no one 来断开与主节点复制关系。

在这里我们如果断开6381从节点与主节点的复制,会怎么样呢?

断开复制主要流程:
1)断开与主节点复制关系。
2)从节点晋升为主节点。
从节点断开复制后并不会抛弃原有数据,只是无法再获取主节点上的数据变化。
如图:
6380这个节点看着像是主节点,其实本质上还是从节点。
通过 slaveof 命令还可以实现切主操作,将当前从节点的数据源切换到另⼀个主节点。执行
slaveof {newMasterIp} {newMasterPort} 命令即可。
切主操作主要流程:
1)断开与旧主节点复制关系。
2)与新主节点建立复制关系。
3)删除从节点当前所有数据。
4)从新主节点进行复制操作。

以上只是说明了主从复制,后面还会讲到主从复制的具体流程。


http://www.kler.cn/a/468489.html

相关文章:

  • 深入探索 Kubernetes:从基础概念到实战运维
  • 复杂对象的创建与组装 - 建造者模式(Builder Pattern)
  • flutter在windows平台中运行报错
  • BOOST 库在机器视觉中的应用及示例代码分析
  • 【C++】B2099 矩阵交换行
  • 基于 GitHub Actions 的流程自动化实践
  • Apache Traffic存在SQL注入漏洞(CVE-2024-45387)
  • 感冒之嗓子红肿,咽红且痛,微恶风寒,无浑身疼痛,无清鼻涕
  • Redis数据库笔记—— Hash(哈希)的扩容机制(rehash)
  • Python爬虫基础——requests模块
  • Harmony OS开发-ArkTS语言速成五
  • 嵌入式Linux(二)·配置VMware使用USB网卡连接STM32MP157实现Windows、Ubuntu以及开发板之间的通信
  • 基于海思soc的智能产品开发(camera sensor的两种接口)
  • React中的合成事件
  • 源代码编译安装X11及相关库、vim,配置vim(2)
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之13 方案再探之4:特定于领域的模板 之 div模型(完整版)
  • SpringCloud源码-Ribbon
  • Python爬虫基础——案例:爬取豆瓣电影动画排行榜
  • 蓝桥杯备赛:C++基础,顺序表和vector(STL)
  • Zabbix5.0版本(监控Nginx+PHP服务状态信息)