第四十一章 配置镜像 - 使用 ^ZMIRROR 例程

news/2024/12/2 13:08:23/

文章目录

  • 第四十一章 配置镜像 - 使用 ^ZMIRROR 例程

第四十一章 配置镜像 - 使用 ^ZMIRROR 例程

用户定义的 ^ZMIRROR 例程允许为特定镜像事件(例如故障转移成员成为主要成员)实现自己的自定义、特定于配置的逻辑和机制。

^ZMIRROR 例程包含以下入口点。如果它们被省略,它们都提供适当的默认值。

  • $$CanNodeStartToBecomePrimary^ZMIRROR() — 当实例确定
    • 另一个故障转移成员当前未充当主要成员,并且在没有手动干预的情况下无法成为主要成员。
    • 本地成员有资格成为主要成员,即将开始接管过程。

CanNodeStartToBecomePrimary 为逻辑提供了一个入口点,以阻止故障转移成员自动成为主节点(无论是在启动时还是作为备份连接时),以提供对故障转移的手动控制,并且不是大多数 ^ZMIRROR 例程的一部分。

CanNodeStartToBecomePrimary 返回 1 时,本地实例已完全初始化为主要故障转移成员,可以继续成为主要成员的过程:所有镜像数据库都是可读写的,ECP 会话已恢复或回滚,本地事务(如果有)来自以前的主要已回滚。由于不允许用户登录,超级服务器连接被阻止,ECP 仍处于恢复状态,因此没有完成新的工作。

如果此入口点返回 0 (False),则实例进入重试循环,在该循环中它继续每 30 秒调用 CanNodeStartToBecomePrimary,直到

- CanNodeStartToBecomePrimary 返回1,本地成员继续成为主要成员的过程。- 该实例检测到另一个故障转移成员已成为主要成员(必须通过手动干预),此时本地成员成为备用成员。
  • $$CheckBecomePrimaryOK^ZMIRROR() — 此过程在 CanNodeStartToBecomePrimary 返回 1 (True) 后调用。

如果 CheckBecomePrimaryOK 存在并返回 1,则镜像以本地成员为主恢复操作;这是可以启动任何本地进程或执行为用户准备应用程序环境所需的任何初始化的点。但是请记住,只有运行 CheckBecomePrimaryOK 的进程才能实际写入镜像数据库,直到它返回 1 之后,此时镜像数据库才会更新以供一般使用。

CanNodeStartToBecomePrimary 一样,如果 CheckBecomePrimaryOK 返回 0 (False),实例将中止成为主节点的过程并每 30 秒重试一次 CheckBecomePrimaryOK,直到

- 入口点返回 1,镜像以本地成员为主恢复操作。- 该实例检测到另一个故障转移成员已成为主要成员(必须通过手动干预),此时本地成员成为备用成员。

一般来说 CheckBecomePrimaryOK 是成功的;如果存在节点未成为主要成员的“常见情况”,则应由 CanNodeStartToBecomePrimary 而不是 CheckBecomePrimaryOK 处理。

如果将代码从主节点上现有的 ^%ZSTART 例程移动到 ^ZMIRROR,以便在初始化镜像之前不执行它,那么 CheckBecomePrimaryOK 是它的最佳位置。但是,如果使用 job 命令启动其他作业,这些作业应该等到 $SYSTEM.Mirror.IsPrimary() 返回 true,这将在 CheckBecomePrimaryOK 返回 1 之后发生;或者,您可以改为在 $$NotifyBecomePrimary^ZMIRROR() 中启动作业。

注意:如果 CheckBecomePrimaryOK 返回 FalseECP 会话将被重置。当一个节点成功成为主节点时,ECP 客户端重新连接并且 ECP 事务被回滚(而不是保留)。在显式执行 TRollback 命令之前,客户端作业会收到 <NETWORK> 错误。

  • $$NotifyBecomePrimary^ZMIRROR() — 在成为主要故障转移成员的过程的最后(即,在允许用户和 ECP 会话(如果有的话)已变为活动状态之后)调用此过程以供参考。此入口点不返回值。如果需要,您可以包含代码以生成任何通知或启用应用程序登录。
  • $$NotifyBecomePrimaryFailed^ZMIRROR() — 当
    • 故障转移成员启动后成为主备成员失败。
    • 备份检测到主要失败并尝试成为主要但失败。

每个事件只调用一次该入口点;一旦它被调用,它就不会被再次调用,直到成员成为主要成员或检测到主要成员。


http://www.ppmy.cn/news/56102.html

相关文章

区块链在元宇宙中的作用(二)

第一&#xff0c;解决数据信任问题 如果一个元宇宙没有区块链技术&#xff0c;那么可能会面临各种各样的数据信任问题&#xff0c;你的账号可以被随时平台禁封&#xff0c;你的“资产”价值完全受平台定价和发行量的影响、你的投诉意见可以被平台忽视、你的言论可以被平台屏蔽…

软件开发团队的护网低成本应对方案

主题&#xff1a; 1、攻击方技术手段说明&#xff0c;结合攻击队手段重点关注的防御点介绍&#xff1b; 2、防守方&#xff08;软件开发团队&#xff09;的低成本应对思路&#xff1b;系统是如何被攻破的 攻防演练&#xff08;APT&#xff09;攻击路径 未知攻&#xff0c;焉知…

关于Prompt Engineering你该了解啥?OpenAI应用研究负责人帮你梳理了

‍来源 | 机器之心 微信号&#xff1a;almosthuman2014 随着 ChatGPT、GPT-4 等模型的兴起&#xff0c;人们对如何创建提示以获得想要的输出越来越感兴趣。研究者对特定提示的响应可能很难预测&#xff0c;并且会因模型的不同而不同。本文来自 OpenAI 的翁丽莲&#xff08;Lili…

Go官方指南(五)并发

Go 程 Go 程&#xff08;goroutine&#xff09;是由 Go 运行时管理的轻量级线程。 go f(x, y, z) 会启动一个新的 Go 程并执行 f(x, y, z) f, x, y 和 z 的求值发生在当前的 Go 程中&#xff0c;而 f 的执行发生在新的 Go 程中。 Go 程在相同的地址空间中运行&#xff0c…

一文看懂数据分析必备计算功能—内存计算

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 接下来&#xff0c;我们准备讲一系列的奥威BI软件的内存计算在各种分析场景中的应用。在正式开讲之前&#xff0c;我先简单说一下…

SignalR实现简单的Web端实时通讯,跳过WebSocket验证,Swagger加锁后不能访问接口,Script setup不支持动态绑定

版本.Net6Vue3Element-Plus 问题 Swagger加锁后不能访问接口 &#xff08;看第三步&#xff09;跳过WebSocket验证 &#xff08;看第四步里面&#xff09;添加自定义接受方法 &#xff08;看第四步&#xff09;不能使用 第一步、下载包 后端&#xff1a; 前端&#xff1a;…

Java版本企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

docker容器原理及简单且详细的使用

docker原理简单介绍 docker是一种虚拟化容器技术。 虚拟化&#xff1a;早期为了节约成本和学习只有在宿主机中基于 kvm&#xff08;基于内核的虚拟机&#xff09;等技术虚拟出来完整的操作系统&#xff0c;而这个完整的操作系统会大量的占用宿主机的硬件资源&#xff0c;当创建…