LDAP 服务器从 Debian 迁移到 Ubuntu 时出错

LDAP 服务器从 Debian 迁移到 Ubuntu 时出错

我们正在尝试将 ldap 从过时的 Debian 服务器迁移到 Ubuntu 服务器。使用 slapcat、手动修改配置和其他技巧的所有尝试都失败了。我相信旧数据库使用 bdb 结构,通过研究我发现它不再受支持。

我们在迁移过程中采取的步骤如下:

使用 slapcat 备份并复制旧的 ldap 数据库。

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

然后,我们在新服务器上安装并使用 dpkg 重新配置了 slapd,以匹配旧服务器的安装规范。

接下来,我们将使用 slapadd 来恢复旧数据库。

sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

产生了以下错误

slapadd: could not add entry dn="cn=config" (line=1):
Closing DB...

下一个命令我们尝试恢复数据库。

sudo slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

但再次收到多个错误:

mdb_id2entry_put: mdb_put failed: MDB_KEYEXIST: Key/data pair already exists (-30799) "dc=cs"
=> mdb_tool_entry_put: id2entry_add failed: err=-30799
=> mdb_tool_entry_put: txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
slapadd: could not add entry dn="dc=cs" (line=1): txn_aborted! MDB_KEYEXIST: Key/data pair already exists (-30799)
Closing DB...

此时我们在加载配置文件时遇到错误。我们尝试将其从 bdb 转换为 mdb 架构,但在加载 database.ldif 文件时仍然会出错。

有人有将 ldap 数据库迁移到新服务器的可靠方法吗?因为大多数指南都非常过时。

答案1

该错误是由于大多数旧 slapd 系统 (<2.4.x) 上的数据库后端已过时而导致的。手动转换为 hdb/bdb => mdb 可修复新 slapd 版本上的这些问题。

sudo slapcat -n 0 -l config.conf
sudo slapcat -n 1 -l database.ldif

确保关闭 slapd 服务。

service slapd stop

在 config.conf 和 database.ldif 文件中的所有 hdb/bdb 引用都用 mdb 替换。

在使用 slapadd 加载配置之前,请清空 slapd.d 目录。

rm -rf /etc/ldap/slapd.d/*

然后加载更新的 mdb 配置。

slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf

接下来确保清空 ldap 目录。

rm -rf /var/lib/ldap/*

现在加载转换后的 mdb 数据库。

slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif

授予 openldap 对 slapd.d 目录的权限。

chown -R openldap:openldap /etc/ldap/slapd.d

启动 slapd 服务,您现在应该有一个迁移的 ldap 数据库。

service slapd start

使用 slapcat 确认

slapcat -n 0
slapcat -n 1

相关内容