Обновление openldap.

Два сервера CDS, между ними настроена репликация Samba. Обновляются одновременно. Сегодня обновляется openldap. Первый сервер (контроллер домена) обновился нормально. Второй сервер (сервер одного из отделов организации) выдал следующее:

 *  1. /etc/init.d/slurpd stop ; /etc/init.d/slapd stop
 *  2. slapcat -l /root/ldapdump.1487760344.raw
 *  3. egrep -v '^(entry|context)CSN:' </root/ldapdump.1487760344.raw >/root/ldapdump.1487760344
 *  4. mv /var/lib/openldap-data/ /var/lib/openldap-data-backup/
 *  5. emerge --update \=net-nds/openldap-2.4.44
 *  6. etc-update, and ensure that you apply the changes
 *  7. slapadd -l /root/ldapdump.1487760344
 *  8. chown ldap:ldap /var/lib/openldap-data/*
 *  9. /etc/init.d/slapd start
 * 10. check that your data is intact.
 * 11. set up the new replication system.
 * 
 * ERROR: net-nds/openldap-2.4.44::gentoo failed (setup phase):
 *   You need to upgrade your database first
 * 
 * Call stack:
 *                ebuild.sh, line 115:  Called pkg_setup
 *   openldap-2.4.44.ebuild, line 302:  Called openldap_find_versiontags
 *   openldap-2.4.44.ebuild, line 204:  Called openldap_upgrade_howto
 *   openldap-2.4.44.ebuild, line 285:  Called die
 * The specific snippet of code:
 *          die "You need to upgrade your database first"
 * 
 * If you need support, post the output of `emerge --info '=net-nds/openldap-2.4.44::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=net-nds/openldap-2.4.44::gentoo'`.
 * The complete build log is located at '/var/calculate/tmp/portage/net-nds/openldap-2.4.44/temp/build.log'.
 * The ebuild environment file is located at '/var/calculate/tmp/portage/net-nds/openldap-2.4.44/temp/die.env'.
 * Working directory: '/var/calculate/tmp/portage/net-nds/openldap-2.4.44/homedir'
 * S: '/var/calculate/tmp/portage/net-nds/openldap-2.4.44/work/openldap-2.4.44'

 * Не удалось собрать net-nds/openldap-2.4.44::gentoo
 * Не удалось обновить

Как это обойти, я знаю, сам в форуме писал когда-то. Больше меня интересует, почему это происходит. По идее, репликация должна давать идентичные копии БД на обоих серверах. Получается, это не так.

LDAP хранит свои данные в db. От версии базы данных может поменяться формат хранения, т.е. бинарно она может быть не совместима. В ebuild openldap стоит проверка на существование путей базы, причём пусть к базе считывается из конфига. В CDS проще выполнить cl-backup, удалить или переименовать директорию, установить обновление и затем восстановить работу сервера cl-rebuild. Так как у вас настроена репликация, выполните cl-backup и на втором сервере.

Мы занялись этой проблемой и планируем решить её в ближайшее время.

Так и делаю, все ясно.