从Debian迁移LDAP服务器至Ubuntu时遇多种报错,寻求可靠迁移方案
从Debian迁移LDAP服务器至Ubuntu时遇多种报错,寻求可靠迁移方案
看起来你踩了OpenLDAP迁移里的几个典型坑——旧BDB存储引擎和新服务器默认MDB引擎的配置冲突,还有默认安装预创建条目导致的"KEYEXIST"错误。我之前帮团队处理过几乎一模一样的迁移场景,给你一套经过验证的可靠步骤:
先理清当前报错的核心原因
你现在的问题本质是:新服务器通过dpkg-reconfigure slapd配置后,已经自动生成了cn=config配置集和dc=cs基础条目,这时候用slapadd导入旧备份自然会提示"条目已存在";再加上旧BDB的专属配置项在MDB环境下完全不兼容,直接导入肯定会出问题。
可靠迁移步骤(从清空环境开始)
1. 彻底清理新服务器的LDAP残留环境
先把默认安装的slapd所有残留清干净,避免后续冲突:
sudo systemctl stop slapd sudo apt purge slapd ldap-utils sudo rm -rf /etc/ldap/ /var/lib/ldap/
2. 重新安装slapd,但务必跳过自动配置
这是关键中的关键!安装时不要让系统生成默认配置:
sudo apt install slapd ldap-utils
当弹出LDAP配置向导窗口时,直接选择取消或者跳过所有配置步骤——这样新服务器会保留一个完全空白的LDAP环境,没有任何预创建的条目和配置。
3. 预处理旧服务器的备份文件
旧备份里的BDB相关配置在MDB环境下无效,必须做修改:
- 打开你备份的
config.conf,找到所有olcDatabase={1}bdb的行,替换成olcDatabase={1}mdb - 找到
olcDbDirectory配置项,确保它指向新服务器的LDAP数据目录(默认是/var/lib/ldap/,如果不存在就手动创建:sudo mkdir -p /var/lib/ldap/) - 删除所有BDB特有的配置项,比如
olcDbCacheSize、olcDbCheckpoint、olcDbNoSync这些——MDB有自己的专属参数(比如olcDbMaxSize),后续可以按需配置,现在先去掉不兼容内容
4. 导入配置和数据库
现在环境是空的,导入就不会有冲突了:
- 先导入配置文件:
sudo slapadd -F /etc/ldap/slapd.d -n 0 -l config.conf - 修复文件权限(LDAP进程需要读写这些文件):
sudo chown -R openldap:openldap /etc/ldap/slapd.d/ /var/lib/ldap/ - 再导入数据库条目:
sudo slapadd -F /etc/ldap/slapd.d -n 1 -l database.ldif
5. 启动服务并验证
sudo systemctl start slapd # 验证是否能正常查询到数据 ldapsearch -x -b dc=cs # 如果启动失败,查看日志排查问题 sudo journalctl -u slapd
备选方案(手动配置config,只迁移业务数据)
如果你觉得修改旧配置太麻烦,可以选择手动配置新服务器的cn=config:
- 安装slapd后,用
dpkg-reconfigure slapd创建和旧服务器完全一致的基础DN(dc=cs) - 从旧服务器导出数据时,可选择只导出除基础DN之外的条目(或者用
slapadd -c参数忽略已存在条目的错误) - 用
ldapadd增量导入业务数据:ldapadd -x -D cn=admin,dc=cs -W -f database.ldif
额外注意事项
- 尽量让新旧服务器的OpenLDAP版本接近,版本差异过大可能导致配置语法不兼容
- 旧服务器执行
slapcat前最好先停止slapd服务,避免备份的数据出现不一致 - 如果旧服务器有自定义schema,要把对应的
.schema文件复制到新服务器的/etc/ldap/schema/目录,然后在cn=config中加载
备注:内容来源于stack exchange,提问作者guest123
相关产品推荐
相关产品推荐

