文章
· 三月 25, 2023 阅读大约需 4 分钟

第八章 镜像架构和规划 - 镜像同步

第八章 镜像架构和规划 - 镜像同步

镜像同步

如数据完整性指南的“日志”一章所述,日志文件包含自上次备份以来对 IRIS 实例中的数据库所做更改的时间顺序记录。在镜像中,记录对主数据库所做更改的日志数据成为对备份和异步数据库副本进行相同更改的基础。因此,镜像数据库始终记录在主数据库上,而在备份和 DR 异步上,它们始终是只读的,以防止来自其他来源的更新。通常它们在报告异步时也是只读的。

当镜像数据库上记录Global更新操作(主要是 SetKill 操作)的数据写入主数据库的日志时,日志记录将传输到其他镜像成员。一旦在备份或异步成员上收到日志记录,记录在其中的操作就会在该成员的数据库上执行。这个过程被称为dejournaling

日志记录从主服务器到备份的传输是同步的,主服务器在关键点等待备份的确认。这使故障转移成员保持紧密同步并使备份处于活动状态,如备份状态和自动故障转移中详细描述的那样。相反,异步从主服务器异步接收日志数据。因此,异步镜像成员有时可能比主成员落后一些日志记录。

注意:当 IRIS 实例成为镜像的成员时,会发生以下日志更改以支持镜像:

  • 当 IRIS 实例成为镜像中的主要故障转移成员时,会发生以下变化:
    • 日志切换被触发,以 MIRROR-mirror_name 为前缀的新日志文件,例如 MIRROR-MIR21-20180921.001。从那时起,所有日志文件都作为镜像日志文件写入并记录到 mirrorjrn-mirror_name.log,例如 mirrorjrn-MIR21.log,以及 journal.log
    • 当发生日志 I/O 错误时,无论当前设置如何,都会自动覆盖冻结日志记录配置以冻结所有日志化的Global更新。如果当前设置为否,则当实例不再是主要故障转移成员时,行为将恢复为此设置。。
  • 当一个实例成为备份或异步镜像成员时,从主实例接收的镜像日志文件将与本地实例的标准日志文件以及主实例的镜像日志日志(mirrorjrn-mirror_name.log)的副本一起写入配置的日志目录在 install-dir\Mgr 中创建并不断更新。

自动故障转移机制

镜像旨在在主数据库发生故障或变得不可用时向备份提供安全的自动故障转移。本节描述了允许这种情况发生的机制,包括:

安全自动故障转移的要求

只有在确保满足两个条件的情况下,备用 IRIS 实例才能自动接管主实例:

  • 备份实例已从主实例接收到最新的日志数据。

此要求保证在中断之前对主数据库上的镜像数据库所做的所有持久更新已经或将对备份上的相同数据库进行更新,从而确保不会丢失任何数据。

  • 主实例不再作为主实例运行,并且在没有人工干预的情况下无法这样做。

此要求消除了两个故障转移成员同时充当主要成员的可能性,这可能导致逻辑数据库降级和完整性丧失。

自动故障转移规则

本节介绍管理自动故障转移过程并确保满足自动故障转移要求的规则。

注:除非满足以下条件,否则备份在任何情况下都不会尝试成为主备份:

  • 选择启动时需要安装的所有数据库,包括镜像和非镜像,都已安装。
  • 选择启动时需要安装的所有镜像数据库都将被激活并同步(请参阅激活和同步镜像数据库)。

备份状态和自动故障转移

在正常镜像操作期间,备用故障转移成员的日志传输状态为活动,这意味着它已从主服务器接收到所有日志数据并与主服务器同步。 活动备份在写入时接收当前日志数据主服务器,主服务器等待活动备份确认收到日志数据,然后才认为该数据是持久的。因此,活动备份满足故障转移的第一个条件。

如果活动备份未在服务质量 (QoS) 超时内确认从主服务器收到新数据,主服务器将撤销备份的活动状态,断开备份并暂时进入故障状态。当处于故障状态时,主节点不会提交任何新的日志数据(可能会导致应用程序暂停),从而留出时间来恢复联系,或者在两个成员不同步的情况下进行适当且安全的故障转移决策。

当备份重新连接到主服务器时,它首先通过从主服务器获取所有最新的日志数据来赶上进度,然后变为活动状态。当备份通过从主服务器获取最新的日志数据并确认其接收而赶上时,其活动状态将恢复。

讨论 (0)1
登录或注册以继续