监视高可用性和站点恢复

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2015-03-09

确保服务器可靠运行并且数据库副本状态良好是日常消息传送操作的主要目标。 为了帮助确保 Microsoft Exchange Server 2010 组织的可用性和可靠性,您必须主动监视硬件、Windows 操作系统和 Exchange 2010 服务。 将主动性监视与预防性维护相结合,有助于在出现影响 Exchange 组织运行的严重问题之前确定可能出现的错误。

监视 Exchange 组织的过程包括定期检查服务或数据是否有问题。 通常情况下,监视功能还包括用于在出现问题时向您发送警报的通知系统。Windows Server 2008 和 Exchange 2010 包括了几个工具和服务,可帮助您确保 Exchange 组织正常运行。 日常监视的主要优点如下:

  • 满足您的服务级别协议 (SLA) 的要求

  • 确保成功完成特定的管理任务(例如每日备份操作)

  • 检测并解决问题(例如可能会影响消息服务或数据可用性的问题)

在 Exchange 2010 组织内,应正式明确操作中涉及的步骤、角色和职责。 我们需要了解合理的操作实践和步骤与工作正常的基础结构之间的联系。 详细记录的、全面的操作过程和步骤有助于确保有效管理 Exchange 所依赖的组织环境中的所有组件。

Exchange 2010 包含几个内置工具、脚本和功能。当 Exchange 被配置为用于高可用性或站点恢复时,可将这些工具和功能可用作定期主动监视的一部分。 用于高可用性和站点恢复的主要监视 cmdlet 是 Get-MailboxDatabaseCopyStatusTest-ReplicationHealth。 除了提供可执行监视功能并报告状态的 cmdlet 外,Exchange 2010 还提供一项新的事件日志流功能,该功能可利用 Windows Server 中的 crimson 通道功能,以及可从这些事件通道收集和分析数据的内置脚本。

可以使用本主题中的详细信息监视数据库可用性组 (DAG) 的邮箱数据库副本的运行状况和状态。

目录

Get-MailboxDatabaseCopyStatus Cmdlet

Test-ReplicationHealth Cmdlet

Crimson 通道事件日志记录

CollectOverMetrics.ps1 脚本

CollectReplicationMetrics.ps1 脚本

CheckDatabaseRedundancy.ps1 脚本

Get-MailboxDatabaseCopyStatus Cmdlet

可以使用 Get-MailboxDatabaseCopyStatus cmdlet 查看关于邮箱数据库副本的状态信息。 通过此 cmdlet,您可以查看有关特定数据库的所有副本的信息、有关特定服务器上数据库的特定副本的信息,或者有关服务器上所有数据库副本的信息。 下表介绍了邮箱数据库副本的副本状态的可能值。

数据库副本状态

数据库副本状态 描述

失败

邮箱数据库副本因未挂起而处于“失败”状态,并且该副本无法复制或重播日志文件。 当邮箱数据库副本处于“失败”状态并且未挂起时,系统将定期检查导致副本状态更改为“失败”的问题是否已得到解决。 当系统检测到该问题已得到解决后,并且没有其他任何问题,则副本状态将自动更改为“正常”。

正在设定种子

正在为邮箱数据库副本设定种子或正在为邮箱数据库副本的内容索引设定种子,或两者兼有。 成功设定种子后,副本状态将改为“正在初始化”。

SeedingSource

正在将邮箱数据库副本用作数据库副本种子设定操作的源。

已挂起

由于管理员通过运行 Suspend-MailboxDatabaseCopy cmdlet 手动挂起数据库副本,所以该邮箱数据库副本处于“已挂起”状态。

正常

邮箱数据库副本正在成功复制和重播日志文件,或者已成功复制和重播所有可用日志文件。

ServiceDown

Microsoft Exchange 复制服务不可用或未在驻留有邮箱数据库副本的服务器上运行。

正在初始化

邮箱数据库副本将在下列情况下处于“正在初始化”状态:创建数据库副本后、Microsoft Exchange 复制服务正在启动或刚被启动时,以及从“已挂起”、“ServiceDown”、“失败”、“种子设定”、“SinglePageRestore”、“LostWrite”或“已断开连接”转变为另一种状态的过程中。 处于此状态时,系统将验证数据库和日志流是否处于一致状态。 在大多数情况下,副本状态在“正在初始化”状态下保持约 15 秒的时间,但在所有情况下,处于该状态的时间一般不会超过 30 秒。

重新同步

正在将邮箱数据库副本及其日志文件与数据库的活动副本进行比较,以检查者两个副本之间是否存在任何差异。 副本将保持此状态,直到检测到任何差异并且加以解决。

已装入

活动副本处于联机状态并接受客户端连接。 只有邮箱数据库的活动副本才能具有“已装入”状态。

已卸除

活动副本处于脱机状态并且不接受客户端连接。 只有邮箱数据库的活动副本才能具有“已卸除”状态。

正在装入

活动副本即将联机,但尚未接受客户端连接。 只有邮箱数据库副本的活动副本的副本状态才能是“正在装入”。

正在卸除

活动副本即将脱机并将终止客户端连接。 只有邮箱数据库副本的活动副本的副本状态才能是“正在卸除”。

DisconnectedAndHealthy

邮箱数据库副本不再连接到活动数据库副本,并且在丢失连接时邮箱数据库副本处于“正常”状态。 此状态表示数据库副本与其源数据库副本的连接性。 当源副本和目标数据库副本之间出现 DAG 网络故障时可能会报告该状态。

DisconnectedAndResynchronizing

邮箱数据库副本不再连接到活动数据库副本,并且在丢失连接时邮箱数据库副本处于“重新同步”状态。 此状态表示数据库副本与其源数据库副本的连接性。 当源副本和目标数据库副本之间出现 DAG 网络故障时可能会报告该状态。

FailedAndSuspended

由于检测到故障并且该故障的解决方案明确要求管理员进行干预,因此系统会同时设置“已失败”和“已挂起”状态。 例如,系统检测到活动邮箱数据库和数据库副本之间存在不可恢复的差异。 与“已失败”状态不同,系统不会定期检查该问题是否已解决以及自动恢复。 而是必须由管理员进行干预以解决导致失败的根本原因,然后数据库副本才能过渡到正常状态。

SinglePageRestore

此状态表示正在对邮箱数据库副本执行单页面还原操作。

Get-MailboxDatabaseCopyStatus cmdlet 还包含一个称为 ConnectionStatus 的参数,会返回有关正在使用的复制网络的详细信息。 如果使用此参数,则会在该任务的输出中填充 IncomingLogCopyingNetworkSeedingNetwork 两个附加输出字段。

Get-MailboxDatabaseCopyStatus 示例

以下示例使用 Get-MailboxDatabaseCopyStatus cmdlet。 每个示例都将结果传输到 Format-List cmdlet 以便按列表格式显示输出内容。

本示例将返回 DB2 数据库的所有副本的状态信息。

Get-MailboxDatabaseCopyStatus -Identity DB2 | Format-List

本示例将返回邮箱服务器 MBX2 上的所有数据库副本的状态。

Get-MailboxDatabaseCopyStatus -Server MBX2 | Format-List

本示例将返回本地邮箱服务器上的所有数据库副本的状态。

Get-MailboxDatabaseCopyStatus -Local | Format-List

本示例将返回邮箱服务器 MBX1 上的数据库 DB3 的状态、日志传送和种子设定网络信息。

Get-MailboxDatabaseCopyStatus -Identity DB3\MBX1 -ConnectionStatus | Format-List

有关使用 Get-MailboxDatabaseCopyStatus cmdlet 的详细信息,请参阅 Get-MailboxDatabaseCopyStatus

Get-MailboxDatabaseCopyStatus Cmdlet

Test-ReplicationHealth Cmdlet

可以使用 Test-ReplicationHealth cmdlet 查看关于邮箱数据库副本的连续复制状态信息。 此 cmdlet 可用于检查复制和重播状态的各个方面,以提供有关 DAG 中的特定邮件服务器的完整概述。

设计 Test-ReplicationHealth cmdlet 是为了主动监视连续复制和连续复制管道、Active Manager 的可用性,以及基础群集服务、仲裁和网络组件的运行状况和状态。 可以在 DAG 中的任何邮箱服务器上本地或远程运行该 cmdlet。 Test-ReplicationHealth cmdlet 将执行在下表中列出的测试。

Test-ReplicationHealth cmdlet 测试

测试名称 描述

ClusterService

验证群集服务是否正在指定的 DAG 成员或本地服务器(如果未指定 DAG 成员)上运行并且可访问。

ReplayService

验证 Microsoft Exchange 复制服务是否正在指定的 DAG 成员或本地服务器(如果未指定 DAG 成员)上运行并且可访问。

ActiveManager

验证在指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上运行的活动管理器实例是否是有效的角色(主要、辅助或单独)。

TasksRpcListener

验证任务远程过程调用 (PRC) 服务器是否正在指定的 DAG 成员或本地服务器(如果未指定 DAG 成员)上运行并且可访问。

TcpListener

验证 TCP 日志副本侦听程序是否正在指定的 DAG 成员或本地服务器(如果未指定 DAG 成员)上运行并且可访问。

DagMembersUp

验证所有 DAG 成员是否均可用、正在运行并且可访问。

ClusterNetwork

验证指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的所有群集管理的网络是否均可用。

QuorumGroup

验证默认的群集组(仲裁组)是否处于正常和联机状态。

FileShareQuorum

验证为 DAG 配置的见证服务器、见证目录和共享是否可访问。

DBCopySuspended

检查指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的任何邮箱数据库副本是否处于“已挂起”状态。

DBCopyFailed

检查指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的任何邮箱数据库副本是否处于“失败”状态。

DBInitializing

检查指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的任何邮箱数据库副本是否处于“正在初始化”状态。

DBDisconnected

检查指定 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的任何邮箱数据库副本是否处于“已断开连接”状态。

DBLogCopyKeepingUp

验证指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的数据库被动副本的日志复制和检查活动是否可以跟上活动副本上的日志生成活动。

DBLogReplayKeepingUp

验证指定的 DAG 成员(如果未指定 DAG 成员,则为本地服务器)上的数据库被动副本重播活动是否可以跟上日志复制和检查活动。

Test-ReplicationHealth 示例

本示例使用 Test-ReplicationHealth cmdlet 测试邮箱服务器 MBX1 的复制的运行状况。

Test-ReplicationHealth -Identity MBX1

Get-MailboxDatabaseCopyStatus Cmdlet

Crimson 通道事件日志记录

Windows Server 2008 包括两个类别的事件日志: Windows 日志、应用程序和服务日志。 Windows 日志类别包括之前版本的 Windows 提供的事件日志: 应用程序、安全和系统事件日志。 它还包括两种新日志: Setup 日志和 ForwardedEvents 日志。 Windows 日志用于存储来自旧版应用程序的事件以及适用于整个系统的事件。

应用程序和服务日志是一类新的事件日志。 这些日志存储来自单个应用程序或组件的事件,而不存储可能影响整个系统的事件。 此新事件日志类别被称为应用程序的 crimson 通道。

应用程序和服务日志类别包括四个子类型: 管理日志、操作日志、分析日志和调试日志。 如果您使用事件日志记录对问题进行故障排除,则可能会对管理日志中的事件特别感兴趣。 管理日志中的事件将提供有关如何对事件做出响应的指导。 操作日志中的事件也很有用,但可能需要更多的解释。 管理日志和调试日志并不那么用户友好。 分析日志(默认情况下被隐藏和禁用)将存储跟踪问题的事件,并且通常会记录大量事件。 调试日志由开发人员在调试应用程序时使用。

Exchange 2010 会将事件记录到应用程序和服务日志区域内的 crimson 通道。 可以通过执行下列步骤来查看这些通道:

  1. 打开事件查看器。

  2. 在控制台树中,导航到“应用程序和服务日志”>“Microsoft”>“Exchange”。

  3. 在 Exchange 下,选择一个 crimson 通道: HighAvailability 或 MailboxDatabaseFailureItems。

HighAvailability 通道包含有关 Microsoft Exchange 复制服务的启动和关闭的事件,以及有关在 Microsoft Exchange 复制服务中运行的各种组件(例如 Active Manager、第三方同步复制 API、任务 PRC 服务器、TCP 侦听程序和卷影复制服务 (VSS) 编写器)的事件。 HighAvailability 通道还可由 Active Manager 用于记录与 Active Manager 角色监视相关的事件和数据库操作事件(例如数据库装入操作和日志截断),以及记录与 DAG 基础群集相关的事件。

MailboxDatabaseFailureItems 通道可用于记录与会影响复制的邮箱数据库的故障相关的事件。

Get-MailboxDatabaseCopyStatus Cmdlet

CollectOverMetrics.ps1 脚本

Exchange 2010 包含一个称为 CollectOverMetrics.ps1 的脚本,可在 Scripts 文件夹中找到该脚本。 CollectOverMetrics.ps1 读取 DAG 成员事件日志来收集特定时段内有关数据库操作(如数据库装入、移动和故障转移)的信息。 对于每个操作,该脚本记录以下信息:

  • 数据库的标识

  • 操作的起止时间

  • 操作开始和结束时装入数据库的服务器

  • 操作的原因

  • 操作是否成功,如果操作失败,将包含错误详细信息

该脚本将此信息写入 .csv 文件,每行对应一个操作。 每个 DAG 对应一个单独的 .csv 文件。

该脚本支持允许您自定义脚本行为和输出内容的参数。 例如,通过使用 DatabaseReportFilter 参数,可以将结果限制为一个指定的子集。 只有与这些筛选器相匹配的操作才会包含在 HTML 摘要报告中。 下表列出了可用的参数。

CollectOverMetrics.ps1 脚本参数

参数 描述

DatabaseAvailabilityGroup

指定要从中收集指标的 DAG 的名称。 如果省略此参数,则会使用本地服务器所属的 DAG。 可以使用通配符从多个 DAG 收集信息以及生成多个 DAG 的报告。

Database

提供需要为其生成报告的数据库的列表。 支持通配符字符,例如 -Database:"DB1","DB2"-Database:"DB*"

StartTime

指定要报告的时段的持续时间。 该脚本仅收集这一期限内记录的事件。 因此,该脚本可能只捕获部分操作记录(例如,只有该时段开始时某个操作的结束信息,或反过来)。 如果 StartTimeEndTime 均未指定,脚本会默认将该时段指定为过去 24 小时。 如果仅指定其中一个参数,则该时段将为指定时间之前或之后的 24 小时。

EndTime

指定要报告的时段的持续时间。 该脚本仅收集这一期限内记录的事件。 因此,该脚本可能只捕获部分操作记录(例如,只有该时段开始时某个操作的结束信息,或反过来)。 如果 StartTimeEndTime 均未指定,脚本会默认将该时段指定为过去 24 小时。如果仅指定其中一个参数,则该时段将为指定时间之前或之后的 24 小时。

ReportPath

指定用于存储事件处理结果的文件夹。 如果省略此参数,将使用 Scripts 文件夹。 指定此参数后,脚本将获取由该脚本生成的 .csv 文件的列表,并使用这些文件作为源数据来生成 HTML 摘要报告。 该报告与使用 -GenerateHtmlReport 选项生成的报告相同。 可以在许多不同时间,甚至是在重叠的时间跨多个数据库可用性组生成文件,并且脚本会将所有文件的数据合并在一起。

GenerateHtmlReport

指定脚本收集其记录的所有信息,按操作类型对数据进行分组,然后生成包含每个组的统计信息的 HTML 文件。 报告中包含每个组的操作总数、失败的操作数以及每个组中的操作所用时间的统计信息。 报告中还包含导致操作失败的错误类型的细目。

ShowHtmlReport

指定对于以 HTML 生成的报告,生成后应在 Web 浏览器中显示。

SummariseCSVFiles

指定脚本从其之前生成的现有 .csv 文件中读取数据。 然后使用此数据生成摘要报告,该报告与 GenerateHtmlReport 参数生成的报告类似。

ActionType

指定脚本应该收集的操作类型。 此参数的值包括 MoveMountDismountRemountMove 值是指数据库更改其活动服务器(无论是通过控制移动还是故障转移)的任何一次操作。 MountDismountRemount 值是指数据库更改其装入状态而未移到另一台计算机的操作。

ActionTrigger

指定脚本应该收集的管理操作。 此参数的值为 AdminAutomatic。 自动操作是指系统自动执行的操作(例如,服务器脱机时的故障转移)。 管理操作是指管理员使用 Exchange 命令行管理程序或 Exchange 管理控制台执行的所有操作。

RawOutput

指定脚本将原本要写入到 .csv 文件的结果直接写入输出流,就像使用 Write-Output 参数执行的操作一样。 然后可以将此信息通过管道传递到其他命令。

IncludedExtendedEvents

指定脚本收集提供装入数据库所用时间的诊断详细信息的事件。 如果服务器上的应用程序事件日志很大,此过程可能非常耗时。

MergeCSVFiles

指定脚本收集包含有关每个操作的数据的 .csv 文件,并将这些文件合并为单个 .csv 文件。

ReportFilter

指定对 .csv 文件中包含相应字段的操作应用筛选器。 该参数使用与 Where 操作相同的格式,其中每个元素设为 $_ 并且返回布尔值。 例如: {$_DatabaseName -notlike "Mailbox Database*"} 可用于从报告中排除默认数据库。

CollectOverMetrics.ps1 示例

以下示例收集名为 DAG1 的 DAG 中与 DB*(包括通配符)匹配的所有数据库的指标。 收集这些指标后,将生成并显示一个 HTML 报告。

CollectOverMetrics.ps1 -DatabaseAvailabilityGroup DAG1 -Database:"DB*" -GenerateHTMLReport -ShowHTMLReport

以下示例说明可用于筛选 HTML 摘要报告的方法。 第一个示例使用 Database 参数获取数据库名称的列表。 从而使摘要报告仅包含有关这些数据库的数据。 接下来的两个示例使用 ReportFilter 选项。 最后一个示例筛选出所有默认数据库。

CollectOverMetrics -SummariseCsvFiles (dir *.csv) -Database MailboxDatabase123,MailboxDatabase456
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { $_.DatabaseName -notlike "Mailbox Database*" }
CollectOverMetrics -SummariseCsvFiles (dir *.csv) -ReportFilter { ($_.ActiveOnStart -like "ServerXYZ*") -and ($_.ActiveOnEnd -notlike "ServerXYZ*") }

Get-MailboxDatabaseCopyStatus Cmdlet

CollectReplicationMetrics.ps1 脚本

Exchange 2010 中包含的另一个运行状况指标脚本是 CollectReplicationMetrics.ps1。 此脚本提供监视的活动表单,会在运行时实时收集指标。 CollectReplicationMetrics.ps1 从与数据库复制相关的性能计数器中收集数据。 该脚本从多个邮箱服务器中收集计数器数据,将每台服务器的数据写入 .csv 文件,然后可以综合使用所有这些数据报告各种统计信息(例如,每个副本出现故障或挂起的时长,复制队列或重播队列的平均长度,或副本不符合故障转移条件的时长)。

可以逐个指定服务器,也可以指定整个 DAG。 可以运行脚本先收集数据,再生成报告,也可以仅收集数据或仅报告已收集的数据。 可以指定数据取样的频率和收集数据的总持续时间。

从每台服务器收集的数据将写入名为 CounterData.<ServerName>.<TimeStamp>.csv 的文件。 如果运行脚本时未使用 DagName 参数,则摘要报告将写入名为“HaReplPerfReport.<DAGName>.<TimeStamp>.csv”或“HaReplPerfReport.<TimeStamp>.csv”的文件。

脚本启动 PowerShell 作业以从每台服务器收集数据。 这些作业将在数据收集的整个时段内运行。 如果指定大量服务器,此过程将占用相当大的内存。 此过程的最后一个阶段是将数据整理成摘要报告,如果包含大量数据,该阶段也将花费大量时间。 可以在某一台计算机上运行收集步骤,然后将数据复制到其他地方进行处理。

ollectReplicationMetrics.ps1 脚本支持允许您自定义脚本行为和输出内容的参数。 下表列出了可用的参数。

CollectReplicationMetrics.ps1 脚本参数

参数 描述

DagName

指定要从中收集指标的 DAG 的名称。 如果省略此参数,则会使用本地服务器所属的 DAG。

DatabaseNames

提供需要为其生成报告的数据库的列表。 支持使用通配符,例如 -DatabaseNames:"DB1","DB2"-DatabaseNames:"DB*"

ReportPath

指定用于存储事件处理结果的文件夹。 如果省略此参数,将使用 Scripts 文件夹。

Duration

指定运行收集过程的时间段。 典型值为 1 到 3 个小时。 仅当每次取样之间时间间隔较长,或通过计划任务运行一系列较短作业时,才应使用更长的持续时间。

Frequency

指定收集数据指标的频率。 典型值为 30 秒、1 分钟或 5 分钟。 在正常情况下,如果使用小于这些值的时间间隔,每次取样之间的差别将不明显。

Servers

指定从中收集统计信息的服务器的标识。 可以指定包括通配符或 GUID 在内的任何值。

SummariseFiles

指定用于生成摘要报告的 .csv 文件列表。 这些文件名为 CounterData.<CounterData>*,由 CollectReplicationMetrics.ps1 脚本生成。

Mode

指定脚本执行的处理过程。 可以使用下列值:

  • CollectAndReport 此值为默认值。 该值指示脚本应该从服务器收集数据,并处理这些数据以生成摘要报告。

  • CollectOnly 该值指示脚本应仅收集数据,而不生成报告。

  • ProcessOnly 该值指示脚本应该从一组 .csv 文件中导入数据,并处理这些数据以生成摘要报告。 SummariseFiles 参数用于为脚本提供要处理的文件列表。

MoveFilestoArchive

指定脚本应该在处理完成后将文件移动到压缩文件夹。

LoadExchangeSnapin

指定脚本应该加载 Exchange 命令行管理程序命令。 当脚本需要在 Exchange 命令行管理程序之外(如,在计划任务中)运行时,该参数很有用。

CollectReplicationMetrics.ps1 示例

以下示例从 DAG“DAG1”中的所有服务器收集一个小时的数据(取样时间间隔为 1 分钟),然后生成摘要报告。 此外,由于使用了 ReportPath 参数,脚本会将所有文件置于当前目录中。

CollectReplicationMetrics.ps1 -DagName DAG1 -Duration "01:00:00" -Frequency "00:01:00" -ReportPath

以下示例从与“CounterData*”相匹配的所有文件读取数据,然后生成摘要报告。

CollectReplicationMetrics.ps1 -SummariseFiles (dir CounterData*) -Mode ProcessOnly -ReportPath

Get-MailboxDatabaseCopyStatus Cmdlet

CheckDatabaseRedundancy.ps1 脚本

顾名思义,CheckDatabaseRedundancy.ps1 脚本的用途是,通过验证至少存在两个已配置的正常的当前副本来监视复制邮箱数据库的冗余,并且当仅存在复制数据库的一个正常副本时提醒您。 在这种情况下,当确定冗余时,会将主动副本和被动副本都计算在内。

安装了邮箱服务器角色后,Exchange 会自动配置 CheckDatabaseRedundancy.ps1 脚本,以名为 Database One Copy Alert 的计划任务形式运行。 默认情况下,Database One Copy Alert 计划任务配置为每 60 分钟运行一次。 可以使用 Windows 任务计划程序修改此行为和计划任务设置。 该脚本用于对 DAG 成员资格进行首次检查,因此,如果邮箱服务器不是 DAG 成员,该脚本会立即退出。

还可以从脚本文本夹以交互方式运行该脚本。 以交互方式运行该脚本时,必须指定数据库名称或 DAG 成员名称。 若要指定数据库,请使用 MailboxDatabaseName 参数;若要指定 DAG 成员,请使用 MailboxServerName 参数。 在控制台中以交互方式运行时,该脚本仅执行一次冗余检查,并在屏幕上输出 CurrentState(红色或绿色)。

与其他脚本和 cmdlet 相同,CheckDatabaseRedundancy.ps1 也可以在监视模式下运行,并可以通过添加 MonitoringContext 参数生成事件。 Exchange 创建的计划任务以监视模式运行脚本。 在此模式下,该脚本可以通过监视解决方案进行调用,如 Microsoft System Center Operations Manager (SCOM)。 在监视模式下,该脚本会在本地服务器的应用程序事件日志中生成红色警报和绿色警报事件。 在运行脚本的一个小时内,仅当数据库处于“红色”状态已超过 20 分钟(总时长,可以不连续),才会生成红色警报事件(事件 ID 4113),而当数据库已连续 10 分钟处于“绿色”状态时,生成绿色警报事件(事件 ID 4114)。 默认情况下,红色警报事件一旦生成,将继续每隔 15 分钟报告一次。

此外,该脚本还有一些其他有用选项。 例如,可以添加 ShowDetailedErrors 参数以获取有关出现的任何错误的更为详细的信息,还可以通过添加 Verbose 参数获取其他故障排除信息。 该脚本还包含 SendSummaryMailTos 参数,此参数可用于在脚本运行完成后,通过电子邮件向指定的电子邮件地址列表发送摘要报告。 这使管理员可以快速查看小时报告,以确认是否出现了冗余问题。 如果使用电子邮件功能,则在使用 SendSummaryMailTos 参数时,必须同时包含 SummaryMailFrom 参数。

Microsoft 建议作为正常监视操作的一部分,使用自动计划任务或监视系统(如 SCOM)定期运行此脚本。 为确保不会发生长时间存在数据库冗余问题的情况,请每隔 60 分钟运行一次该脚本。 该脚本包含名为 TerminateAfterDurationSecs 的参数,如果在执行脚本时将其设为 -1 或 0,则该参数可使脚本无限期运行。

如果没有运行监视解决方案(如 SCOM),则建议允许由自动创建的计划任务来自动执行脚本和制定脚本执行计划。

Windows Server 2008 SP2 任务计划程序中存在一些已知问题,在计划运行时间较长的任务时,这些问题可能会导致任务计划程序崩溃。 这些问题在 Windows Server 2008 R2 中不存在;因此,如果有可能,请从 Windows Server 2008 R2 运行该脚本。 如果无法从 Windows Server 2008 R2 运行该脚本,并且要从 Windows Server 2008 SP2 运行它,则建议进行两项修改。 第一种,不要使用该脚本内置的 60 分钟暂时抑制功能运行脚本,请使用以下参数每隔 5 分钟运行一次脚本:

CheckDatabaseRedundancy.ps1 -MonitoringContext -SleepDurationBetweenIterationsSecs:0 -TerminateAfterDurationSecs:1 -SuppressGreenEventForSecs:0 -ReportRedEventAfterDurationSecs:0 -ReportRedEventIntervalSecs:0 -ShowDetailedErrors

第二种,如果可能,请使用 SCOM 定义暂时抑制行为(例如,如果 20 分钟的时段内记录了 3 个红色警报事件,则生成一个警报;如果记录了一个绿色警报事件,则将 CurrentState 更改为绿色)。

如果更改或删除了 Database One Copy Alert 计划任务,则可通过运行以下命令删除并重新计划:

schtasks /create /TN "Check Database Redundancy" /TR "Powershell.exe -NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; 'C:\Program Files\Microsoft\Exchange Server\V14\Scripts\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue" /RU SYSTEM /SC HOURLY

将以上脚本中的参数替换为希望使用的脚本参数。 该脚本中还介绍了适用于它的其他参数。

使用 schtasks 命令行工具创建计划任务时,/TR 选项限制为 261 个字符。 上述示例超出了该限制。 如果您使用的参数和路径导致 /TR 选项超过 261 个字符,则必须使用“管理工具”菜单上的任务计划程序小程序手动创建计划任务。 或者,您可以复制以下 XML 并将其粘贴到记事本,对其进行相应的编辑,然后另存为 XML 文件,并使用任务计划程序小程序将其导入。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="https://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2010-05-11T15:55:47</Date>
    <Author>administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <Repetition>
        <Interval>PT1H</Interval>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2010-05-11T15:55:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>SYSTEM</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Powershell.exe</Command>
      <Arguments>-NonInteractive -WindowStyle Hidden -command 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Operations\CheckDatabaseRedundancy.ps1 -MonitoringContext -ShowDetailedErrors -SummaryMailFrom:'SMTPFromAddress@contoso.com' -SendSummaryMailTos:@('SMTPToAddress@contoso.com') -ErrorAction:Continue</Arguments>
    </Exec>
  </Actions>
</Task>

Get-MailboxDatabaseCopyStatus Cmdlet

 © 2010 Microsoft Corporation。保留所有权利。