文章
· 五月 6, 2023 阅读大约需 4 分钟

第五十章 管理镜像 - 在报告异步上使用 Dejournal 过滤器

第五十章 管理镜像 - 在报告异步上使用 Dejournal 过滤器

在报告异步上使用 Dejournal 过滤器

仅在报告异步上,可以在给定镜像上设置用户定义的 dejournal 过滤器,让为每个日志记录执行自己的代码以确定哪些记录应用于该镜像中的读写数据库。定义过滤器后,可以在任意数量的镜像上设置它,并且可以随时设置、更改和删除过滤器。

重要提示:此功能仅适用于高度专业化的情况。应仔细考虑替代方案。为了控制将哪些全局变量复制到镜像成员,到非镜像数据库的全局映射提供了一种更简单、轻量级的解决方案。对于监控应用程序数据库的更新,在应用程序级别构建的解决方案通常更加灵活。

dejournal 过滤器允许报告异步跳过从主要接收的日志文件中的某些记录的 dejournaling。但是,这仅适用于读写数据库——最初以读写报告异步方式添加到镜像中的数据库,或者自数据库以只读方式添加到镜像后已清除 FailoverDB 标志的数据库。 (有关 FailoverDB 标志和镜像数据库在报告异步时的装载状态的详细说明,请参阅清除报告异步镜像成员上的 FailoverDB 标志。)如果在数据库上设置了 FailoverDB 标志,这意味着该数据库被装载为读取- 只是,dejournal 过滤器代码仍然执行,但所有记录总是在该数据库上 dejournaled,无论过滤器代码返回什么。

重要提示:设置 dejournal 过滤器会减慢它所设置的镜像的 dejournaling;这种影响可能很大,具体取决于过滤器的内容。

要创建 dejournal 过滤器,请扩展超类 SYS.MirrorDejournal 以创建镜像 dejournal 过滤器类。类名应以 Zz 开头,以便在 IRIS 升级期间保留。

要在报告异步的镜像上设置 dejournal 过滤器,请导航到“编辑异步配置”页面(系统管理 > 配置 > 镜像设置 > 编辑异步),单击镜像此异步成员中所需镜像旁边的编辑 Dejournal 过滤器链接属于列表,输入镜像dejournal过滤类的名称,点击保存。要删除过滤器,请执行相同的操作,但在单击保存之前清除输入框。每当您在镜像上添加、更改或删除日志过滤器时,都会自动为该镜像重新启动 dejournaling,以便可以应用过滤器。但是,如果修改并重新编译镜像 dejournal 过滤器类,则必须使用 ^MIRROR 例程的镜像管理菜单上的管理异步成员上的镜像 dejournaling 选项手动停止并重新启动所有镜像上的 dejournaling

一般镜像注意事项

本节提供镜像的考虑信息、建议和最佳实践指南。它包括以下小节:

Mirror APIs

类中的 SYS.Mirror提供了通过管理门户和 ^MIRROR 例程(请参阅使用 ^MIRROR 例程)以及许多查询以编程方式调用镜像操作的方法。例如,SYS.Mirror.CreateNewMirrorSet() 方法可用于创建镜像和配置第一个故障转移成员,而 SYS.Mirror.MemberStatusList() 查询返回列表镜像成员和每个成员的日志延迟状态。有关这些方法的说明,请参阅 SYS.Mirror 类文档。

如果使用外部脚本执行备份,可以使用 $SYSTEM.Mirror 类方法来验证系统是否是镜像的一部分,如果是,它的作用是什么:

$System.Mirror.IsMember()
$System.Mirror.IsPrimary()
$System.Mirror.IsBackup()
$System.Mirror.IsAsyncMember()
$System.Mirror.MirrorName()

其中 $SYSTEM.Mirror.IsMember() 如果该系统是故障转移成员则返回 1,如果这是异步镜像成员则返回 2,如果这不是镜像成员则返回 0$SYSTEM.Mirror.IsPrimary() 如果该系统是主故障转移成员则返回 1,否则返回 0$SYSTEM.Mirror.IsBackup() 如果此系统是备份故障转移成员则返回 1,否则返回 0$SYSTEM.Mirror.IsAsyncMember() 如果此系统是异步成员则返回 1,否则返回 0$SYSTEM.Mirror.MirrorName() 如果实例被配置为故障转移镜像成员则返回镜像的名称,否则返回 NULL

还可以使用 $SYSTEM.Mirror.GetMemberType()$SYSTEM.Mirror.GetMemberStatus() 获取有关当前 IRIS 实例的镜像成员资格(如果有)的信息,以及它在该角色中的地位;有关详细信息,请参阅镜像成员日志传输和取消日志状态。

主要故障转移成员的外部备份

使用 Backup.General.ExternalFreeze() 方法冻结对主要故障转移成员上的数据库的写入,以便可以执行外部备份,如数据完整性指南的“备份和还原”一章中所述,确保外部冻结暂停更新的时间不会超过 Backup.General.ExternalFreeze() 的指定 ExternalFreezeTimeOut 参数。如果发生这种情况,镜像可能会故障转移到备份故障转移成员,从而终止正在进行的备份操作。

在镜像成员上升级 IRIS

要查看在镜像成员上升级 IRIS 的选项和注意事项,请参阅安装指南“升级 IRIS”一章中的“最小停机时间升级镜像”。

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