15.8. 关于初始化消费者

创建复制协议后,初始化消费者。在此操作过程中,供应商将现有数据复制到消费者中。
重要
在初始化消费者之前,复制才会开始。

15.8.1. 何时初始化消费者

消费者初始化涉及将数据从供应商服务器复制到消费者服务器。一旦子树被物理放在消费者上,供应商服务器就可以开始向消费者服务器重新执行更新操作。
在正常操作下,不应重新初始化消费者。但是,任何时候,供应商数据和消费者的数据之间有很大的差异,重新初始化消费者。例如,如果供应商服务器上的数据从备份中恢复,则该服务器提供的所有消费者都应重新初始化。另一个例子,如果供应商无法与消费者联系很长时间,如一周,供应商可能会确定消费者已超出更新的日期,必须重新初始化。
可以使用 Web 控制台在线初始化消费者,也可以使用命令行手动初始化。使用 Web 控制台在线消费者初始化是初始化少量消费者的有效方法。但是,由于每个副本按顺序初始化,所以此方法不适用于初始化大量副本。在线消费者初始化是作为在供应商服务器上配置复制协议的一部分初始化时使用的方法。
使用命令行手动进行使用者初始化是从单个 LDIF 文件中初始化大量消费者的有效方法。

15.8.2. 设置初始化超时

如果因为超时而初始化大型数据库失败,请将以下之一设置为足够大的时间或无限期限,以便目录服务器在操作超时前初始化整个数据库:
  • cn=config 条目中的 nsslapd-idletimeout 配置参数为服务器上所有复制协议设置超时。例如,要全局禁用超时:
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-idletimeout=0
  • 复制管理器 DN 中的 nsIdleTimeout 参数为使用此复制管理器条目的所有协议设置超时。例如,禁用 cn=replication manager,cn=config 条目的超时:
    # ldapmodify -D "cn=Directory Manager" -w -h server.example.com -p 389 -x
    dn: cn=replication manager,cn=config
    changetype: modify
    add: nsIdleTimeout
    nsIdleTimeout: 0

15.8.3. 初始化消费者

本节论述了使用命令行和 Web 控制台中初始化消费者。

15.8.3.1. 使用命令行初始化消费者

您可以使用命令行在线和离线对消费者进行初始化。本节解释了这两个流程。
15.8.3.1.1. 初始化消费者在线
创建复制协议后,使用 dsconf repl-agmt init 命令来在线初始化消费者:
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt \
     init --suffix="suffix" agreement_name
15.8.3.1.2. 初始化 Consumer Offline
离线初始化消费者:
  1. 在供应商中:
    1. 关闭供应商中的实例:
      # dsctl instance_name stop
    2. 使用复制信息将包含要复制到 /tmp/example.ldif 文件中的后缀 的用户Root 数据库导出:
      # dsctl instance_name db2ldif --replication userRoot /tmp/example.ldif
    3. 在供应商上启动实例:
      # dsctl instance_name start
  2. 将导出的文件复制到消费者。
  3. 导入消费者上的数据。详情请查看 第 6.1.2.2 节 “导入服务器为 Offline 的数据”

15.8.4. 使用 Web 控制台初始化消费者

使用 Web 控制台在线初始化消费者:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  2. 选择实例。
  3. 打开 Replication 菜单,然后选择后缀。
  4. 复制协议 选项卡上,打开后缀复制协议旁边的 Choose Action 菜单,然后选择 Initialize Agreement
    如果初始化成功完成,Web 控制台会在 Last Update Status 列中显示 Error (0) Replica obtained: Incremental update successful 信息。
    根据要复制的数据量,初始化可能会非常耗时。