维护在线重做日志(一)

学习目标

  • 解释在线重做日志文件的目的概述
  • 在线重做日志文件的结构
  • 控制日志开关和检查点
  • 多路复用和维护在线重做日志文件
  • 使用OMF管理在线重做日志文件
  • 获取在线重做日志文件信息

在线重做日志文件提供了在数据库发生故障时重做事务的方法。
每个事务都同步写入重做日志缓冲区,然后刷新到在线重做日志文件,以便在媒体失败时提供恢复机制。
(除了在启用了NOLOGGING子句的对象中直接加载插入等例外情况。)
这包括尚未提交的事务、撤消段信息以及模式和对象管理语句。
在线重做日志文件用于实例失败时恢复未写入数据文件的已提交数据的情况。
在线重做日志文件仅用于恢复。

在线重做日志文件具有以下特点
  • 记录对数据所作的所有更改
  • 提供恢复机制
  • 可以组织成小组
  • 至少需要两组

重做日志文件结构

重做日志文件结构

重做日志文件组的工作原理
  1. 多个重做日志组:Oracle数据库可以配置多个在线重做日志组,每个重做日志组包含一个或多个在线重做日志文件。这样可以提高数据库的并发性和容错性。

  2. 轮流写入:当数据库进行修改操作时,这些操作会首先写入当前活跃的在线重做日志组中的重做日志文件。如果当前的重做日志文件写满了,数据库会自动切换到下一个在线重做日志组中的重做日志文件继续记录修改操作。

  3. 循环使用:在线重做日志组是循环使用的,当一个重做日志文件写满后,数据库会自动切换到下一个重做日志文件继续记录修改操作。这样可以确保数据库的重做日志不会无限增长,同时保证了数据库的持久性和一致性。

  4. 保证数据完整性:通过多个在线重做日志组的轮流写入,Oracle数据库可以确保即使在一个重做日志组发生故障或损坏时,仍然可以继续记录修改操作,保证数据库的数据完整性和可靠性。

  5. 性能优化:合理配置和管理多个在线重做日志组可以提高数据库的性能和并发能力,确保数据库的稳定性和可靠性。

联机重做日志文件的结构
  • 数据库管理员可以设置Oracle数据库维护在线重做日志文件的副本,以避免由于单点故障而丢失数据库信息。

  • 联机重做日志文件组
    在线重做日志文件的一组相同的副本称为在线重做日志文件组。LGWR后台进程并发地将相同的信息写入组中的所有在线重做日志文件。
    Oracle服务器至少需要两个在线重做日志文件组来保证数据库的正常运行。

  • 联机重做日志文件成员
    组中的每个在线重做日志文件称为一个成员。
    组中的每个成员具有相同的日志序列号和相同的大小。
    每次Oracle服务器写入日志组时,都会分配日志序列号,以唯一标识每个在线重做日志文件。当前日志序列号存储在控制文件和所有数据文件的头文件中。

  • 联机重做日志文件的结构
    创建初始在线重做日志文件
    在线重做日志文件组和成员的初始集是在创建数据库时创建的。
    以下参数限制在线重做日志文件的数量:

  • CREATE DATABASE命令中的MAXLOGFILES参数指定在线重做日志文件组的绝对最大值。

  • MAXLOGFILES的最大值和默认值取决于您的操作系统。

  • 在CREATE DATABASE命令中使用的MAXLOGMEMBERS参数决定每个组的最大成员数。
    MAXLOGMEMBERS的最大值和默认值取决于您的操作系统。

多路复用重做日志文件

为了防止涉及重做日志本身的故障,Oracle数据库允许多路重做日志,这意味着可以在不同的位置自动维护两个或多个相同的重做日志副本。为了获得最大的好处,这些位置应该位于单独的磁盘上。但是,即使重做日志的所有副本都在同一个磁盘上,冗余也可以帮助防止I/O错误、文件损坏等。当重做日志文件多路复用时,LGWR并发地将相同的重做日志信息写入多个相同的重做日志文件,从而消除了重做日志的单点故障。
多路复用是通过创建重做日志文件组来实现的。组由重做日志文件及其多路副本组成。每一个相同的副本都被认为是这个群体的一个成员。每个重做日志组由一个数字定义,例如组1、组2,等这等。

注意:Oracle建议您将重做日志文件多路复用。如果需要恢复,日志文件数据的丢失可能是灾难性的。注意,当您复用重做日志时,数据库必须增加它执行的1/0量。根据您的配置,这可能会影响整体数据库性能。

在这里插入图片描述

在线重做日志文件是如何工作的

在线重做日志文件以循环的方式使用。
转到下一个日志组。
当在线重做日志文件已满时,LGWR将移动

  • 称为日志开关
  • 检查点操作也会发生
  • 写入控制文件的信息

从一个日志文件组切换到另一个日志文件组的行为称为日志切换。
检查点是将脏(修改)块从缓冲缓存写到磁盘的过程。

LGWR(Log Writer)是Oracle数据库中的一个重要后台进程,负责将数据库缓冲区中的修改操作写入在线重做日志文件中。

  1. 写入重做日志:LGWR负责将数据库缓冲区中的修改操作(如插入、更新、删除)写入在线重做日志文件中,确保数据库的修改操作被持久化到磁盘,以保证数据库的一致性和持久性。
  2. 控制提交:LGWR在事务提交时负责将事务的修改操作写入重做日志文件,并生成提交记录,以确保事务的提交状态能够被恢复。
  3. 性能优化:LGWR通过批量写入和异步写入的方式优化性能,减少磁盘I/O的开销,提高数据库的性能和并发能力。
  4. 故障恢复:LGWR在数据库发生故障或崩溃时起着重要作用,通过重放在线重做日志中的操作,可以帮助数据库恢复到一致的状态。
  5. 保证数据完整性:LGWR的工作确保了数据库的数据完整性,即使在异常情况下,也可以通过重做日志文件中的记录来恢复数据库到一致的状态。
Oracle服务器将对数据库的所有更改顺序记录在Redo Log Buffer中。重做条目由LGWR进程从重做日志缓冲区写入当前在线垂做日志文件组。LGWR在以下情况下写入
  • 当事务提交时
  • 当重做日志缓冲区满三分之一时
  • 当重做日志缓冲区中有超过1兆字节的更改记录时
  • 在DBWn将数据库Buffer Cache中的修改块写入数据文件之前在线重做日志文件以循环方式使用。每个在线重做日志文件组由日志序列号标识,该序列号在日志每次被重用时被覆盖。
日志切换

LGWR按顺序写入在线重做日志文件。当当前在线重做日志文件组被填满时,LGWR开始向下一个组写入。这被称为日志开关。
当最后一个可用的在线重做日志文件被填满时,LGWR返回到第一个在线重做日志文件组并开始再次写入。

日志交换机和日志序列号
  • 日志切换是数据库停止写入一个重做日志文件并开始写入另一个重做日志文件的点。通常,当当前重做日志文件被完全填满,并且必须继续写入下一个重做日志文件时,会发生日志切换。但是,您可以将日志开关配置为定期发生,而不管当前的重做日志文件是否被完全填充。您也可以手动强制记录交换机日志。
  • Oracle数据库在每次发生日志切换和LGWR开始写入时,为每个重做日志文件分配一个新的日志序列号。当数据库归档重做日志文件时,归档日志保留其日志序列号。当重做日志文件被循环使用时,将给出下一个可用的日志序列号。
  • 每个在线或归档的重做日志文件由其日志序列号唯一标识。在崩溃、实例或介质恢复期间,数据库通过使用必要的归档和重做日志文件的日志序列号,以升序正确地应用重做日志文件。
检查点

在检查点期间:

  • DBWn将许多脏数据库缓冲区写入数据文件,这些缓冲区由正在被检查点的日志所覆盖。
    检查点后台进程CKPT更新控制文件,以反映它已成功完成检查点。如果检查点是由日志切换引起的,CKPT还会更新数据文件的头。
  • 检查点可以发生在数据库中的所有数据文件上,也可以只发生在特定的数据文件上。
    例如,在以下情况下会出现检查点:
  • 在每个日志开关处
  • 当使用正常、事务或立即选项关闭实例时
  • 当通过设置FAST_START_MTTR_TARGET初始化参数强制时当数据库管理员手动请求时
  • 当ALTER TABLESPACE [OFFLINE | NORMALIREAD ONLY|BEGIN BACKUP]命令对特定的数据文件进行校验时
    每个检查点的信息记录在alert_SID.log中。如果初始化参数LOG_CHECKPOINTS_TO_ALERT设置为TRUE,则日志文件将被删除。该参数的默认值FALSE不记录检查点。
强制

与在线重做日志相关的视图

desc v$log
select group# ,group#,sequence#,status from v$log;

在这里插入图片描述

FAST_START_MTTR_TARGET

FAST_START_MTTR_TARGET是Oracle数据库中一个重要的参数,用于指定数据库的自动内存调整目标,以便在数据库发生故障时快速恢复到一致的状态。在您提供的情况下,FAST_START_MTTR_TARGET = 600表示设置了数据库的自动内存调整目标为600秒。
具体来说,FAST_START_MTTR_TARGET参数的作用是控制数据库的自动内存调整过程,以确保在数据库发生故障时,数据库可以在指定的时间内(以秒为单位)快速恢复到一致的状态。通过调整这个参数的值,可以影响数据库的恢复速度和性能。
在这种情况下,设置FAST_START_MTTR_TARGET = 600表示数据库的自动内存调整目标为600秒,即数据库在发生故障时,会尽力在600秒内完成恢复操作,以确保数据库的一致性和可用性。

show parameter fast可以查询当前参数

强制日志开关和检查点
日志切换和检查点在数据库操作的某些点自动执行,如前所述。但是,DBA可以强制执行日志切换或检查点。迫使检查点
FAST START MTTR TARGET参数取代了已弃用的参数:FAST_START_IO-TARGET LOG_CHECKPOINT_TIMEOUT如果使用了参数FAST START MTTR TARGET,则不能使用这些已弃用的参数。
在上面的示例中,已经设置了FAST-START_MTTR_TARGET参数,以便实例恢复不超过600秒。数据库将根据这一目标调整其他参数。

增加在线重做日志数量

在线重做日志组数量
  1. 确定当前的在线重做日志组数量:首先,您可以查询数据库的参数设置或查看数据库的配置文件,确认当前的在线重做日志组数量。

  2. 备份数据库:在进行任何更改之前,请务必备份数据库,以防意外发生。

  3. 添加新的在线重做日志组:您可以使用ALTER DATABASE ADD LOGFILE GROUP命令来添加新的在线重做日志组。例如,您可以执行类似以下的SQL语句:

ALTER DATABASE ADD LOGFILE GROUP 4 ('/path/to/logfile_group_4a.log', '/path/to/logfile_group_4b.log') SIZE 100M;

在上面的示例中,我们添加了一个新的在线重做日志组,包含两个重做日志文件,并指定了每个文件的大小为100M。您可以根据实际需求和数据库配置进行调整。

  1. 激活新的在线重做日志组:添加新的在线重做日志组后,您需要激活这些新的重做日志组,以便数据库开始使用它们记录修改操作。您可以执行以下SQL语句来激活新的重做日志组:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/path/to/logfile_group_4a.log', '/path/to/logfile_group_4b.log') SIZE 100M;
  1. 验证和监控:添加新的在线重做日志组后,您可以验证数据库是否正常工作,并监控数据库的性能和日志记录情况,以确保新的重做日志组被正确使用。
在线重做日志组内数量
  1. 确定当前的在线重做日志组文件数量:首先,您可以查询数据库的参数设置或查看数据库的配置文件,确认每个在线重做日志组中当前的文件数量。
    SELECT COUNT(*) AS "Number of Redo Log Groups" FROM V$LOG;   # 查看重做日志组数量
    SELECT * FROM V$PARAMETER WHERE NAME LIKE '%log_file%';   # 查看数据库的参数设置
    

2. **备份数据库**:在进行任何更改之前,请务必备份数据库,以防意外发生。3. **修改在线重做日志组文件数量**:您可以使用ALTER DATABASE ADD LOGFILE MEMBER或ALTER DATABASE DROP LOGFILE MEMBER命令来增加或减少每个在线重做日志组中的文件数量。以下是一些示例SQL语句:- **增加文件数量**:```sql
ALTER DATABASE ADD LOGFILE MEMBER '/path/to/new_logfile.log' TO GROUP 1;

在上面的示例中,我们向第一个重做日志组添加了一个新的重做日志文件。

  • 减少文件数量
ALTER DATABASE DROP LOGFILE MEMBER '/path/to/logfile_to_be_dropped.log';

在上面的示例中,我们从数据库中删除了一个特定的重做日志文件。

  1. 激活修改:在修改每个在线重做日志组中的文件数量后,您可能需要重新启动数据库实例或执行适当的命令来激活这些更改。

  2. 验证和监控:修改每个在线重做日志组中的文件数量后,您可以验证数据库是否正常工作,并监控数据库的性能和日志记录情况,以确保修改生效并不会影响数据库的稳定性。

查看重做日志位置

SELECT MEMBER FROM V$LOGFILE;   # 获取重做日志文件的位置
SELECT * FROM V$LOG;      # 查看所有重做日志文件的相关信息,包括位置、大小等

删除Redo文件成员

  • 允许删除重做日志文件,使多路重做日志暂时变得不对称。例如,如果您使用重做日志文件的双工组,您可以删除一个组中的一个成员,即使所有其他组每个都有两个成员。但是,您应该立即纠正这种情况,以便所有组至少有两个成员,从而消除重做日志可能出现的单点故障。

  • 一个实例总是需要至少两组有效的重做日志文件,无论组中有多少成员。(一个小组由一个或多个成员组成。)如果要删除的成员是组的最后一个有效成员,则在其他成员生效之前不能删除该成员。要查看重做日志文件的状态,请使用V$LOGFILE视图。如果数据库无法访问重做日志文件,则重做日志文件变为INVALID。如果数据库怀疑它不完整或不正确,则变为STALE。过时的日志文件在下次将其组设置为活动组时再次有效。


  • 只有当重做日志成员不属于活动组或当前组时,才能删除该成员。如果要删除活动组成员,请首先强制进行日志切换。
  • 在删除重做日志成员之前,请确保重做日志成员所属的组已存档(如果存档已启用)。要查看是否发生了这种情况,请使用V$LOG视图。

当重做日志成员从数据库中删除时,操作系统文件不会从磁盘中删除。相反,将更新关联数据库的控制文件以从数据库结构中删除成员。删除重做日志文件后,确保删除成功完成,然后使用适当的操作系统命令删除被删除的重做日志文件。

设置列格式

  COLUMN column_name FORMAT A20     # 这将设置名为column_name的列的宽度为20个字符col member format A20
具体删除
  1. 确定要删除的重做日志文件:首先,您需要确定要删除的重做日志文件的位置和名称。您可以使用以下SQL查询语句来查看当前数据库中的重做日志文件信息:
SELECT * FROM V$LOGFILE;

这将列出数据库中所有的重做日志文件及其相关信息,包括位置、大小等。

  1. 切换日志文件组:在删除重做日志文件之前,建议首先切换到其他日志文件组,以确保数据库能够继续正常运行。您可以使用以下SQL语句来切换日志文件组:
ALTER SYSTEM SWITCH LOGFILE;

这将触发数据库切换到下一个可用的重做日志文件组。

  1. 删除重做日志文件:一旦切换到其他日志文件组,您可以使用操作系统命令来删除特定的重做日志文件。例如,如果要删除名为redo_logfile_1.log的重做日志文件,您可以使用类似以下的命令:
rm /path/to/redo_logfile_1.log

请确保在删除重做日志文件之前已经备份数据库,并且谨慎操作,以避免数据丢失或数据库损坏。

  1. 清除Oracle数据库中的重做日志信息:删除重做日志文件后,您可能需要清除数据库中对应的重做日志信息。您可以使用以下SQL语句来清除已删除的重做日志文件信息:
ALTER DATABASE CLEAR LOGFILE GROUP group_number;

请将group_number替换为实际的重做日志组号。

  • 另一种顺序
    在这里插入图片描述
删除重做日志组
SELECT GROUP#, MEMBERS, ARCHIVED, STATUS FROM V$LOG;

查询Oracle数据库中的重做日志组的组号(group#)、成员数(members)、是否已归档(archived)、状态(status)
状态这一列:
CURRENT:表示该重做日志组当前正在被使用,是当前正在写入的重做日志组。
ACTIVE:表示该重做日志组包含尚未归档的重做日志,即这些重做日志还未被归档到归档日志中。
INACTIVE:表示该重做日志组中的重做日志已经被归档,不再处于活动状态。
UNUSED:表示该重做日志组尚未被使用,没有包含任何重做日志。

一个实例至少需要两组在线重做日志文件。
不能删除活动组或当前组。
删除在线重做日志文件组时,不会删除操作系统文件。

在这里插入图片描述

应该先删除组4,要保证序号是连续的

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mayo介绍和QTqmake编译基于Opencascade开发的mayo工程-小白配置

目录: 一、mayo介绍:zap: 最新功能(截止7.8.2)在这里插入图片描述 二、编译准备三、编译过程3.1QT Creator打开源码的pro工程3.2修改几处pro配置3.3复制所需的动态链接库3.4编译完成 一、mayo介绍 1️⃣mayo是一个基于opencascade开源库开发的一个开源CA…

【Github】如何使用Git将本地项目上传到Github

【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置(可选) 3. 创建Github仓库4. 获取仓库地址5. 本地操作(1)进入项目文件夹(2)克隆…

【layui】table的switch、edit修改

<title>简单表格数据</title><div class"layui-card layadmin-header"><div class"layui-breadcrumb" lay-filter"breadcrumb"><a>系统设置</a><a>简单表格数据</a></div> </div>&…

Spring Template

Thymeleaf 入门 Web 开发离不开动态页面的开发&#xff0c;很早以前企业主要使用 JSP 技术来开发网页&#xff0c;随着技术的升级更替&#xff0c;目前来说最主流的方案是&#xff1a;Thymeleaf&#xff0c;Thymeleaf 是一个模板框架&#xff0c;它可以支持多种格式的内容动态…

【大语言模型】ACL2024论文-20 SCIMON:面向新颖性的科学启示机器优化

【大语言模型】ACL2024论文-20 SCIMON&#xff1a;面向新颖性的科学启示机器优化 目录 文章目录 【大语言模型】ACL2024论文-20 SCIMON&#xff1a;面向新颖性的科学启示机器优化目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果推荐阅读指数&#xff1a;★★★★☆ …

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…

docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)

一、临时拉取方式 在docker pull后先拼接镜像源域名&#xff0c;后面拼接拉取的镜像名 $ docker pull dockerpull.org/continuumio/miniconda3 二、永久配置方式 vim修改/etc/docker/daemon.json&#xff0c;并重启docker服务。 # 创建目录 sudo mkdir -p /etc/docker# 写…

AMD(Xilinx) FPGA配置Flash大小选择

目录 1 FPGA配置Flash大小的决定因素2 为什么选择的Flash容量大小为最小保证能够完成整个FPGA的配置呢&#xff1f; 1 FPGA配置Flash大小的决定因素 在进行FPGA硬件设计时&#xff0c;选择合适的配置Flash是我们进行硬件设计必须考虑的&#xff0c;那么配置Flash大小的选择由什…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备如何使用Docker运行?

在当今的安防监控领域&#xff0c;随着视频监控技术的不断发展和应用范围的扩大&#xff0c;如何高效、稳定地管理并分发视频流资源成为了行业内外关注的焦点。EasyNVR作为一款功能强大的多品牌NVR管理工具/设备&#xff0c;凭借其灵活的部署方式和卓越的性能&#xff0c;正在引…

【SKFramework框架】一、框架介绍

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

Python 版本的 2024详细代码

2048游戏的Python实现 概述&#xff1a; 2048是一款流行的单人益智游戏&#xff0c;玩家通过滑动数字瓷砖来合并相同的数字&#xff0c;目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能&#xff0c;包括游戏逻辑、界面绘制和用户交互。 主…

排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)

对数组进行排序&#xff0c;主要演示选择排序、直接排序、冒泡排序、二路归并排序算法&#xff0c;附上代码演示 一、编写好各类排序方法的函数 &#xff08;1&#xff09; s_sort(int e[],int n):选择排序。 &#xff08;2&#xff09;si_sort(int e[],int n):直接插人排序。…

Unity图形学之Surface Shader结构

1.没有Pass&#xff1a;因为Render Path已经封装好了 Shader "Custom/Test" {Properties{_Color ("Color", Color) (1,1,1,1)_MainTex ("Albedo (RGB)", 2D) "white" {}_Glossiness ("Smoothness", Range(0,1)) 0.5_Meta…

数据集-目标检测系列- 牵牛花 检测数据集 morning_glory >> DataBall

数据集-目标检测系列- 牵牛花 检测数据集 morning DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集可视化项目&#xff1a;git…

摄影:相机控色

摄影&#xff1a;相机控色 白平衡&#xff08;White Balance&#xff09;白平衡的作用&#xff1a; 白平衡的使用环境色温下相机色温下总结 白平衡偏移与包围白平衡包围 影调 白平衡&#xff08;White Balance&#xff09; 人眼看到的白色&#xff1a;会自动适应环境光线。 相…

Odoo :免费且开源的农牧行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 引言 提供农牧企业数字化、智能化、无人化产品服务及全产业链高度协同的一体化解决方案&#xff0c;提升企业智慧种养、成本领先、产业互联的核心竞争力。 行业典型痛点 一、成本管理粗放&#xff0c;效率低、管控弱 产品研发过程缺少体系化…

oracle查看锁阻塞-谁阻塞了谁

一 模拟锁阻塞 #阻塞1 一个会话正在往一个大表写入大量数据的时候&#xff0c;另一个会话加字段&#xff1a; #会话1 #会话2 会话2被阻塞了。 #阻塞2 模拟一个会话update一条记录&#xff0c;没提交。 另一个会话也update这一条记录&#xff1a; 会话2被阻塞了。 二 简单查…

HDR视频技术之三:色度学与颜色空间

HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到&#xff0c;光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础&#xff0c;但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围&#xff0c;同时也关注于提供更加丰富的色彩。因此&#xff…

神经网络中常用的激活函数(公式 + 函数图像)

激活函数是人工神经网络中的一个关键组件&#xff0c;负责引入非线性&#xff0c;从而使神经网络能够学习和表示复杂的非线性关系。没有激活函数&#xff0c;神经网络中的所有计算都是线性变换&#xff0c;而线性模型的表达能力有限&#xff0c;无法处理复杂的任务。 激活函数…

Redis——Raft算法

Raft使用较为广泛的强一致性、去中心化、高可用的分布式协议&#xff0c;即使在网络、节点故障等情况下&#xff0c;多个节点依然能达到一致性。 其中redis、etcd等都用到了这种算法 在Redis集群中&#xff0c;采取的主从复制结构&#xff0c;当主节点宕机后&#xff0c;哨兵会…