菜鸟科技网

域控同步命令如何正确执行?

“域控同步”通常指的是“Active Directory 域服务复制”(AD Replication),域内的所有域控制器(DC)需要保持数据的一致性,这个过程就是通过复制来实现的,它不是简单地从一个服务器拉取数据,而是所有DC之间相互同步数据。

域控同步命令如何正确执行?-图1
(图片来源网络,侵删)

域控复制的核心协议是 KCC(Knowledge Consistency Checker,知识一致性检查器),KCC 是一个运行在每个域控制器上的内置服务,它会根据 Active Directory 的拓扑结构自动生成复制连接,并决定复制的路径和频率。


手动触发复制的核心命令

当您需要立即从其他域控制器同步特定数据(用户账户更新、组策略更改等)时,可以使用以下命令。

repadmin

这是最强大、最核心的用于管理和诊断 Active Directory 复制的命令行工具,管理员最常用它来手动触发复制。

基本语法

repadmin /syncall [源DC名称] [目标DC名称] /d /e /P

常用参数详解

  • /syncall: 执行同步操作,通常是所有可用的复制伙伴。
  • [源DC名称] (可选): 指定从哪个域控制器开始同步,如果省略,则与所有复制伙伴同步。
  • [目标DC名称] (可选): 指定同步到哪个域控制器,如果省略,则同步到所有相关的域控制器。
  • /d: Defer (延迟),告诉 KCC 不要立即更新复制拓扑,而是等待下一次计划的拓扑更新(默认是15分钟),这在计划大量复制操作时非常有用,可以避免网络拥塞。
  • /e: Enterprise (企业范围),将同步范围扩展到整个林中的所有域,如果只同步当前域,可以省略此参数。
  • /P: Propagate (传播),强制所有子域也执行相同的同步操作,通常与 /e 一起使用。
  • /A: All (所有),强制对所有连接对象执行同步,而不仅仅是那些由KCC生成的连接。
  • /force: 强制立即执行同步,忽略计划的复制时间。
  • /v: Verbose (详细),显示更详细的输出信息。
  • 显示帮助信息。

实战示例

示例1:同步当前域控制器与林中所有其他域控制器

域控同步命令如何正确执行?-图2
(图片来源网络,侵删)

在任意一台域控制器上打开 PowerShell 或 CMD,执行:

repadmin /syncall /e /d

这个命令会告诉当前DC,让它与整个林中所有可用的复制伙伴进行同步,并且不立即更新复制拓扑(/d),这是最常用和最安全的手动同步方式。

示例2:强制从特定的源DC同步到当前DC

假设你想从 DC01 同步数据到当前的 DC02

域控同步命令如何正确执行?-图3
(图片来源网络,侵删)
repadmin /syncall DC01 DC02 /force /v

这个命令会强制 DC02DC01 拉取所有更新的目录分区数据,并显示详细过程。

示例3:检查复制状态

在同步后,检查复制是否成功至关重要。

repadmin /showrepl

这个命令会显示当前域控制器与所有其复制伙伴的复制状态和最后一次成功同步的时间,如果看到“Last Successful Sync: (never)”或错误信息,说明复制存在问题。


dsmgmt

这是一个功能更广泛的域控制器管理工具,其中也包含了手动触发复制的功能。

基本语法

  1. 打开命令提示符,输入 dsmgmt
  2. 在出现的 dsmgmt: 提示符下,输入 ldapport(回车)。
  3. 然后输入 sync now(回车)。
  4. 输入 q 退出 ldapport
  5. 再次输入 q 退出 dsmgmt
C:\> dsmgmt
dsmgmt: ldapport
dsmgmt:ldapport: sync now
Synchronizing this server with all known directory servers.
dsmgmt:ldapport: q
dsmgmt: q
C:\>

注意dsmgmt 的同步功能相对简单,通常不如 repadmin /syncall 灵活和强大,一般较少使用。


查询和诊断复制的命令

手动同步后,你需要知道结果如何,以下是几个关键的诊断命令。

repadmin /showrepl

这是最重要的诊断命令,用于查看复制状态。

# 显示当前DC的所有复制伙伴的状态
repadmin /showrepl
# 显示特定DC的复制状态
repadmin /showrepl DC01
# 以更易读的表格形式显示
repadmin /showrepl * /csv | Format-Table

关注点

  • Last Successful Sync: 最后一次成功同步的时间,如果时间很旧或显示 (never),则存在问题。
  • Result: 同步操作的结果,应该是 0 (Success),如果非0,则表示有错误,需要根据错误代码排查。

repadmin /showreplsummary

提供一个更高层次的摘要视图,快速了解整个域或林的复制健康状况。

# 显示当前域的复制摘要
repadmin /showreplsummary
# 显示整个林的复制摘要
repadmin /showreplsummary /forest

repadmin /queue

显示当前域控制器的复制队列,即等待发送到其他DC的更新。

repadmin /queue

如果队列中有很多条目长时间未被处理,可能意味着复制存在问题或网络延迟。

eventvwr

事件查看器是排查复制问题的利器,需要关注两个关键日志:

  1. “应用程序和服务日志” -> “Microsoft” -> “Windows” -> “Directory Service”

    • 查找事件 ID 2087(来自源DC的复制尝试失败)和 2088(目标DC的复制请求失败),这些是复制失败的核心证据。
  2. “应用程序和服务日志” -> “Microsoft” -> “Windows” -> “DFS Replication”

    如果您的环境使用了 SYSVOL 复制(从 DFS-R 模式),这里会记录 SYSVOL 复制的详细事件。


自动化同步

通常情况下,域控制器会自动进行复制,无需手动干预,KCC 会根据以下条件自动安排复制:

  • 更改通知: 当一个DC上的目录数据发生更改时,它会主动通知其 replication partner,触发一次同步,这是最快的方式。
  • 计划同步: 默认情况下,每个DC会定期(通常是3小时)检查其 replication partner 是否有需要拉取的更改。

什么时候需要手动同步?

  1. 应用了修复后:修复了DNS问题、网络连通性问题或DC上的服务后,需要手动触发一次同步来恢复数据一致性。
  2. 紧急更新:刚刚修改了一个非常重要的组策略或用户属性,需要立即让所有DC生效。
  3. 验证修复:在排除了复制故障后,手动同步一次并检查结果,以确认问题已解决。
命令 主要用途 关键参数/示例
repadmin /syncall 手动触发域控复制(最常用) /e /d (同步整个林,延迟拓扑更新)
/force /v (强制同步,显示详情)
repadmin /showrepl 查看复制状态和伙伴关系 repadmin /showrepl (查看当前DC状态)
repadmin /showrepl DC01 (查看特定DC)
repadmin /showreplsummary 快速了解复制健康状况的摘要 /forest (查看整个林的摘要)
dsmgmt 一个旧版的域控管理工具,包含同步功能 交互式命令,不如 repadmin 灵活
eventvwr 查看复制相关的系统日志,定位错误 查看 "Directory Service" 日志中的事件 ID 20872088

最佳实践

  1. 首选 repadmin /syncall /e /d:这是最安全、最有效的手动同步命令。
  2. 同步后必查 repadmin /showrepl:验证同步是否成功。
  3. 善用事件查看器:当复制失败时,eventvwr 是你最好的朋友。
  4. 不要频繁手动同步:除非必要,否则应依赖AD的自动复制机制,避免不必要的网络负载。
分享:
扫描分享到社交APP
上一篇
下一篇