运行 zimbra 的服务器严重崩溃,现在 zimbra 服务器无法启动。以下是我在日志中看到的内容:
Nov 24 21:04:14 zimbra1 slapd[21258]: @(#) $OpenLDAP: slapd 2.4.21 (Mar 24 2010 18:25:37) $ [email protected]:/home/build/p4/main/ThirdParty/openldap/openldap-2.4.21.7z/servers/slapd
Nov 24 21:04:15 zimbra1 slapd[21265]: bdb(): file id2entry.bdb has LSN 7/8194631, past end of log at 7/6485128
Nov 24 21:04:15 zimbra1 slapd[21265]: bdb(): Commonly caused by moving a database from one database environment
Nov 24 21:04:15 zimbra1 slapd[21265]: bdb(): to another without clearing the database LSNs, or by removing all of
Nov 24 21:04:15 zimbra1 slapd[21265]: bdb(): the log files from a database environment
Nov 24 21:04:15 zimbra1 slapd[21265]: bdb(): /opt/zimbra/data/ldap/hdb/db/id2entry.bdb: unexpected file type or format
Nov 24 21:04:15 zimbra1 slapd[21265]: hdb_db_open: database "": db_open(/opt/zimbra/data/ldap/hdb/db/id2entry.bdb) failed: Invalid argument (22).
Nov 24 21:04:16 zimbra1 slapd[21265]: backend_startup_one (type=hdb, suffix=""): bi_db_open failed! (22)
Nov 24 21:04:16 zimbra1 slapd[21265]: bdb_db_close: database "": alock_close failed
zmcontrol-v:
Release 6.0.6_GA_2324.RHEL5_20100406144520 CentOS5 FOSS edition.
Perl 版本 5.8.8
db_recover-V:
Berkeley DB 4.7.25: (May 15, 2008)
答案1
从您发布的错误来看,LDAP 服务器使用的数据库似乎slapd
已损坏。您可以尝试多种方法。首先,即使数据已损坏,也要备份!此处的一些建议可能会修改数据库文件并排除其他恢复建议。
注意:我对 Zimbra 一无所知,但我使用过 OpenLDAP 很多次。您可能要做一些 Zimbra 特有的事情,而我对此一无所知。
最简单的方法是简单地从备份中恢复数据库。我对 Zimbra 并不特别熟悉,但大多数与 LDAP 后端紧密集成的应用程序都包含某种形式的定期将数据库转储到 LDIF 记录中。如果您有这样的备份,您可能可以删除 /opt/zimbra/data/ldap/hdb/db/ 中的所有内容(先保存它!)并从备份中重新导入。此过程可能在文档的某个地方描述。
如果db_recover
您的系统上有此工具(这是 BerkeleyDB 维护工具),您可以查看数据库是否可恢复。更改为/opt/zimbra/data/ldap/hdb/db/
,然后运行db_recover -v -h .
。这可能会或可能不会解决任何问题。如果 Zimbra 使用比 2.2 更新的 OpenLDAP(例如 2.3.x 或更高版本),这应该会自动发生。