OpenDJ重启出现OID重复冲突警告的问题求助
解决OpenDJ 4.4.11启动时OID 2.5.4.41重复警告的方法
问题背景
执行bin/stop-ds --restart重启OpenDJ时,持续出现OID 2.5.4.41重复的警告:
[20/Dec/2022:15:32:30 -0500] category=CONFIG severity=WARNING msgID=761 msg=The config schema file '04-rfc2307bis.ldif' generated warning when trying to update schema with its content: [Unable to register attribute type name with the server schema because its OID 2.5.4.41 conflicts with the OID of an existing attribute type name]
经排查,该OID对应的name属性同时存在于00-core.ldif和04-rfc2307bis.ldif中,手动修改schema或删除临时文件后警告暂时消失,但几分钟后会复发。
根本原因
- OpenDJ通过
config/upgrade/schem.ldif.current记录当前schema状态,副本节点该文件未同步时,主副同步会覆盖手动修改的schema配置 - 直接使用
ldapmodify修改schema无法同步到文件系统中的schema文件,重启后会被文件覆盖
解决步骤
1. 停止所有OpenDJ节点
先停止主节点和所有副本节点,避免同步过程中覆盖修改:
# 主节点执行 bin/stop-ds # 所有副本节点执行 bin/stop-ds
2. 修复主节点的Schema文件
- 备份schema目录,防止操作失误:
cp -r /opt/opendj/config/schema /opt/opendj/config/schema.bak - 编辑
04-rfc2307bis.ldif,删除其中OID为2.5.4.41的name属性定义(保留00-core.ldif中的该属性即可) - 验证修改结果,确保只有
00-core.ldif包含该OID:egrep -R 2.5.4.41 /opt/opendj/config/schema
3. 重建主节点的schema状态文件
- 删除旧的
schema.ldif.current:rm /opt/opendj/config/upgrade/schem.ldif.current - 启动主节点后立即停止,让系统自动生成正确的当前schema状态文件:
bin/start-ds && sleep 10 && bin/stop-ds
4. 同步所有副本节点的配置
将主节点修复后的schema目录和upgrade目录同步到所有副本节点:
# 替换replica-node为实际副本节点地址 rsync -avz /opt/opendj/config/schema/ replica-node:/opt/opendj/config/schema/ rsync -avz /opt/opendj/config/upgrade/ replica-node:/opt/opendj/config/upgrade/
5. 启动所有节点并验证
- 启动主节点和所有副本节点:
# 主节点 bin/start-ds # 副本节点 bin/start-ds - 查看日志确认警告消失:
tail -f /opt/opendj/logs/server.log
注意事项
- 禁止直接用
ldapmodify修改schema,文件系统中的schema文件优先级更高,重启后会覆盖目录中的修改 - 必须同步所有副本节点的配置,否则主副同步会将旧schema推回主节点,导致问题复发
- 操作前务必备份schema目录,防止schema损坏导致服务无法启动
内容的提问来源于stack exchange,提问作者deconstruct
相关产品推荐
相关产品推荐

