创建复制协议并已配置两个副本之后,必须先初始化使用方复制后缀,然后才能开始复制。在初始化期间,您实际将提供方复制后缀中的数据复制到使用方复制后缀。
此外,某些错误条件或配置更改也需要重新初始化副本。例如,如果由于任何原因从备份恢复了单个主服务器复制后缀中的数据,则需要对它所更新的所有副本进行重新初始化。
进行重新初始化时,将在使用方上删除复制后缀的内容,并将其替换为主服务器上的后缀内容。这可确保副本保持同步,并且可以恢复复制更新。本部分介绍的所有初始化方法都会自动重新生成使用方副本的索引,以便使用方能以最佳方式响应客户端读取请求。
使用多主复制时,如果使用方已经由拓扑中的其他主服务器进行了更新,则可能不需要进行重新初始化。
可以使用现有的复制协议从远程服务器初始化后缀。请尽可能使用此方法进行初始化,因为它要比其他方法简单。仅当存在大量数据使得导入操作耗时过长时,才应使用其他方法。
可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
使用 DSCC 以联机方式对复制后缀进行初始化是初始化或重新初始化使用方的简便方法。但是,如果要初始化大量条目,则此过程可能会非常耗时。在这种情况下,使用命令行以脱机方式初始化使用方可能会更加有效。
初始化副本。
$ dsconf init-repl-dest -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port] |
其中 destination-host:destination-port 是要从远程服务器进行初始化的目标服务器的主机和端口。
(可选的)针对每个协议检查后缀是否已初始化。
$ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port |
此过程介绍从 LDIF 文件初始化复制后缀时所使用的一般步骤。
可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
使用 DSCC 以联机方式对复制后缀进行初始化是初始化或重新初始化使用方的简便方法。但是,如果要初始化大量条目,则此过程可能会非常耗时。在这种情况下,使用命令行以脱机方式初始化使用方可能会更加有效。
确保已设置了复制协议。
必须在初始化副本之前执行此操作。
将主服务器复制后缀中的后缀数据的原始副本导出到 LDIF 文件。
请参见将复制后缀导出到 LDIF。
在多主复制环境中,可以使用从原始主服务器导出的 LDIF 文件来初始化其他主服务器和所有使用方。在级联复制环境中,可以使用相同的文件来初始化集线器副本及其使用方。
在任何情况下,都必须以 LDIF 文件(从已配置的主副本中导出)开始。无法使用任意的 LDIF 文件初始化所有副本,因为它不包含复制元数据。
如果要初始化部分副本,请过滤此文件以便只保留复制的属性,然后将该文件传送到所有使用方服务器。
请参见为部分复制过滤 LDIF 文件。
初始化副本。
执行以下任一操作:
要在已脱机(停止)的服务器上进行快速初始化,请使用 dsadm import 命令。
$ dsadm import instance-path LDIF_file suffix-DN |
要从 LDIF 文件以联机方式初始化副本,请使用 dsconf import 命令。
$ dsconf import -h host -p port LDIF_file suffix-DN |
使用 dsconf import 比使用 dsadm import 要慢,但不必在执行导入操作时停止服务器。
有关初始化后缀的更多详细信息以及示例,请参见初始化后缀。有关命令用法的详细信息,请参见 dsadm(1M) 和 dsconf(1M)。
(可选的)针对每个协议检查后缀是否已初始化。
$ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port |
可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
要以脱机方式导出,请键入:
$ dsadm export instance-path suffix-DN LDIF_file |
要以联机方式导出,请键入:
$ dsconf export -h host -p port suffix-DN LDIF_file |
以下示例将整个 dc=example,dc=com 复制后缀及复制信息导出到 example_replica_export.ldif 文件中:
$ dsconf export -h host2 -p 1389 dc=example,dc=com \ /local/ds/ldif/example_export_replica.ldif |
有关详细信息,请参见备份到 LDIF 以及 dsadm(1M) 和 dsconf(1M) 手册页。
使用 DSCC 时,对配置了部分复制的副本进行初始化的过程是不可视的。在初始化期间只会将选定属性发送给使用方。
如果已经配置了部分复制,应该在将导出的 LDIF 文件复制到使用方服务器之前过滤出所有未使用的属性。为此,目录服务器提供了 fildif 工具。此工具将过滤给定的 LDIF 文件,以便只保留复制协议中定义的属性集所允许的属性。
此工具将读取服务器配置以确定属性集定义。要读取配置文件,必须以超级用户身份或拥有此过程和文件(由 nsslapd-localuser 属性指定)的用户身份运行 fildif 工具。例如,以下命令将过滤前面示例中从 dc=example,dc=com 后缀导出的文件:
$ fildif -i /local/ds1/ldif/example_master.ldif \ -o /local/ds1/ldif/filtered.ldif -b "cn=host2.example.com:1389, \ cn=replica,cn=\\"dc=example,dc=com\\",cn=mapping tree,cn=config" -p /local/ds1 |
有关 fildif 命令的位置,请参见命令位置。
-i 和 -o 选项分别是输入和输出文件。-b 选项是定义部分复制的复制协议的 DN。可使用以下命令查找此 DN:
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=config" "(&(objectclass=nsds5replicationagreement) (nsDS5ReplicaPort=replica-port) \ (nsDS5ReplicaHost=replica-host))" dn |
例如:
$ ldapsearch -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=config" "(&(objectclass=nsds5replicationagreement) \ (nsDS5ReplicaPort=2090)(nsDS5ReplicaHost=host2))" dn Enter bind password: version: 1 dn: cn=host2:1389,cn=replica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config |
有关 fildif 工具的完整命令行语法,请参见 fildif(1) 手册页。
接下来,可以使用由 fildif 生成的 filtered.ldif 文件初始化此复制协议中的使用方。将此文件传送到使用方服务器并进行导入,如从 LDIF 文件导入数据中所述。
二进制副本允许您使用一个服务器中的二进制备份文件克隆整个服务器,以便将相同的目录内容恢复到另一个服务器上。使用二进制副本,您可以通过主服务器或集线器服务器的二进制副本初始化或重新初始化任何服务器,或者通过其他使用方服务器的二进制副本初始化或重新初始化使用方。
此高级过程将与目录服务器的数据库文件进行交互,因此只有经验丰富的管理员才应该使用。
由于对此功能进行了某些限制,因此对于包含很大数据库文件的副本(例如,包含数百万条目的副本),此功能非常实用和省时。
由于二进制副本将一台计算机上的数据库文件移动到另一台计算机上,因此该机制应遵循以下严格限制:
两台计算机必须运行相同的操作系统,包括所有服务包 (service pack) 或修补程序。
两台计算机必须共享相同的处理器体系结构。例如,可以在两台 UltraSPARC® T1 处理器之间执行二进制副本,但无法在一台 UltraSPARC T1 处理器和一台 AMD Opteron 处理器之间执行二进制副本。
两台计算机必须都是大端字节序或都是小端字节序。
两台计算机必须以相同方式映射内存。例如,可以在两个 64 位系统上的服务器实例之间执行二进制副本,但无法在 32 位系统上的一个服务器实例和 64 位系统上的另一个服务器实例之间执行二进制副本。
两台计算机必须安装相同版本的目录服务器,包括二进制格式(32 位或 64 位)、服务包 (service pack) 和修补程序级别。
两个服务器必须具有划分为相同后缀的相同目录树。所有后缀的数据库文件都必须一起复制。无法复制单个后缀。
每个后缀必须在两个服务器上配置相同的索引,包括 VLV(Virtual List View,虚拟列表视图)索引。这些后缀的数据库必须具有相同的名称。
每个服务器都必须将相同的后缀配置为副本。
如果配置部分复制,则必须在所有服务器上进行完全相同的配置。
不得在任一服务器上使用属性加密。
如果启用属性值唯一性插件,则它在两个服务器上必须具有相同的配置,而且必须在新副本上重新配置该插件,如以下过程所述。
以下过程介绍执行二进制副本的其他方法:不需要停止服务器的二进制副本,以及使用最少磁盘空间的二进制副本。
本部分介绍如何创建用于初始化服务器的二进制副本,以及如何创建使用最少磁盘空间的二进制副本。
可以使用此过程执行用于初始化复制服务器的二进制副本 ,因为它使用标准备份功能创建服务器数据库文件的副本。执行标准备份可确保所有数据库文件处于一致状态,而无需停止服务器。
此过程具有某些限制。由于备份和恢复操作将在同一台计算机上创建数据库文件的副本,因此在每台计算机上,这些文件所需的磁盘空间量都会加倍。此外,如果目录中包含数千兆字节的数据,则对这些文件执行实际的复制操作可能会耗费大量时间。
对于此过程的某些部分,可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。此过程的其他部分只能使用命令行完成。
在新复制后缀的目标计算机上安装目录服务器,创建新的服务器实例(如有必要),然后按照将二进制副本用于复制的限制中所述配置此服务器。
在包含此复制后缀的复制拓扑中创建所有复制协议。
请在此副本中包含来自提供方的协议。如果此副本不是专用使用方,请在其使用方中包含来自此副本的协议。请参见创建复制协议。
选择经过完整配置和初始化的副本,此副本的类型与您要初始化的类型相同(主服务器、集线器或使用方),然后按照二进制备份中所述在此副本上执行标准备份。
将备份目录中的文件复制或传送到目标计算机上的目录中,例如,可以使用 ftp 命令完成此操作。
如果您在多主复制方案中对新的主服务器进行了初始化,请执行在多主方案中恢复主服务器中的过程。
此过程将使用较少的磁盘空间和时间,因为它不创建数据库文件的备份副本。但是,它需要停止要克隆的服务器,以确保数据库文件处于一致状态。
不得使用此过程对已经加入多主复制方案的主服务器进行重新初始化。它只能用于重新初始化使用方服务器或初始化新的主服务器。要重新初始化现有的主副本,请使用联机初始化、导入 LDIF 文件或执行创建用于初始化服务器的二进制副本中的过程。
对于此过程的某些部分,可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。此过程的其他部分只能使用命令行完成。
在新复制后缀的目标计算机上安装目录服务器,创建新的服务器实例(如有必要),然后按照将二进制副本用于复制的限制中所述配置此服务器。
在包含此副本的复制拓扑中创建所有复制协议。
请在此副本中包含来自提供方的协议。如果此副本不是专用使用方,请在其使用方中包含来自此副本的协议。请参见创建复制协议。
停止将要初始化或重新初始化的目标服务器,如启动、停止和重新启动目录服务器实例中所述。
选择经过完整配置和初始化的副本,此副本的类型与您要初始化的类型相同(主服务器、集线器或使用方),同时停止此服务器。
如果要克隆多主配置中的主副本,请确保此主副本在停止之前处于最新状态,即包含来自其他主服务器的所有最新更改。
从目标服务器中删除所有数据库文件,包括事务日志、更改日志和区域文件 (__db.xxx files )。
除非这些文件已被重新定位,否则数据库文件和事务日志位于 instance-path/db 目录中。
将源副本计算机中的所有数据库文件(包括事务日志和更改日志)复制或传送到目标计算机,例如,可以使用 ftp 命令完成此操作。
除非这些文件已被重新定位,否则数据库文件和事务日志位于 instance-path/db 目录中。
如果要初始化主服务器或集线器副本,还必须复制更改日志中的所有文件,默认情况下,更改日志位于 instance-path /changelog 中。
重新启动源服务器和目标服务器。
可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。