在两个服务器之间配置一个或多个后缀的复制时,也会自动复制模式定义。模式定义的自动复制可确保所有副本都具有完整、相同的模式,此模式用于定义可以复制到使用方的所有对象类和属性。因此,主服务器也将包含主服务器模式。
但模式复制不是即时完成的,即使通过 LDAP 修改模式时也是如此。模式复制会在更新目录数据时触发,或者在修改模式后启动第一个复制会话时触发。
要在所有副本上执行模式,至少要在所有服务器上启用模式检查。由于在执行 LDAP 操作的主服务器上执行模式检查,因此更新使用方时不需要检查模式。为了提高性能,复制机制将避开使用方副本上的模式检查。
不要在集线器和专用使用方上关闭模式检查。模式检查不会影响使用方的性能。应始终打开模式检查,以表明副本内容符合其模式。
在使用方初始化期间,主服务器自动将模式复制到其使用方。只要通过 DSCC 或命令行工具修改模式,主服务器还会自动复制此模式。默认情况下将复制整个模式。将在使用方上创建其尚不存在的所有其他模式元素,并将这些元素存储在 99user.ldif 文件中。
例如,假定在启动主服务器时,该服务器包含 98mySchema.ldif 文件中的模式定义。此外,还假定您接下来将定义与其他服务器(主服务器、集线器或专用使用方)之间的复制协议。当您随后从此主服务器初始化副本时,复制的模式将包含 98mySchema.ldif 中的定义,但这些定义将存储在副本服务器上的 99user.ldif 中。
在使用方初始化期间复制模式之后,修改主服务器 cn=schema 中的模式还会将整个模式复制到使用方。因此,通过命令行实用程序或 DSCC 对主服务器模式所做的任何修改都将复制到使用方。这些修改存储在主服务器上的 99user.ldif 中,并且通过上述机制,这些修改还会存储在使用方上的 99user.ldif 中。
请考虑以下有关在复制环境中维护模式一致性的准则:
不要修改使用方服务器上的模式。
对使用方服务器上的模式所做的修改可能会导致复制错误。这是因为使用方上的模式差异可能会导致来自提供方的更新不符合使用方上的模式。
在多主复制环境中,请修改单个主服务器上的模式。
修改两个主服务器上的模式时,最近更新的主服务器会将其模式版本传播到使用方。这样,使用方上的模式可能与其他主服务器上的模式不一致。
配置部分复制时,还应考虑以下准则:
由于在部分复制配置中由提供方发送模式,因此部分使用方副本上的模式是主副本模式的副本。因此,模式与所应用的部分复制配置可能不相符。
通常,目录服务器会按照模式中的定义复制每个条目的所有必需属性,以免发生模式违规错误。将部分复制配置为过滤掉必需属性时,必须禁用模式检查。
如果对部分复制启用模式检查,可能无法以脱机方式初始化副本。如果过滤掉必需属性,目录服务器将不允许您从 LDIF 装入数据。
如果在部分使用方副本上禁用了模式检查,则部分使用方副本所在的整个服务器实例都不会执行模式检查。因此,应避免将同一服务器实例上的提供方副本配置为部分使用方。
默认情况下,只要复制机制复制模式,它都会将整个模式发送到其使用方。在以下两种情况下不希望将整个模式发送到使用方:
使用 DSCC 或从命令行对 cn=schema 所做的修改仅限于用户定义的模式元素,所有标准模式都不会更改。如果您经常修改模式,则每次发送大量未更改的模式元素时都会对性能造成影响。您可以只复制用户定义的模式元素,以提高复制和服务器性能。
当目录服务器上的主服务器复制到 Directory Server 5.1 上的使用方时,这些版本的配置属性模式将有所不同,因而会产生冲突。在这种情况下,您只能复制用户定义的模式元素。
目录服务器使用 11rfc2307.ldif 模式文件。此模式文件符合 RFC 2307。
DirectoryServer 5.2 以前的目录服务器版本使用 10rfc2307.ldif 模式文件。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。