如何从 Zimbra 崩溃中恢复?

如何从 Zimbra 崩溃中恢复?

运行 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 或更高版本),这应该会自动发生。

相关内容