Startseite
» NETZWERK-ADMIN
»
Behebung des Zimbra-Fehlers „DB-Fehler: Datenbankausfall/Beschädigung“ in den Postfachprotokollen: Sichere Diagnose und Wiederherstellung
Behebung des Zimbra-Fehlers „DB-Fehler: Datenbankausfall/Beschädigung“ in den Postfachprotokollen: Sichere Diagnose und Wiederherstellung
Die Meldung „DB Error: DB Failure“ in einem Zimbra-Mailbox-Protokoll ist ein Symptom, keine Diagnose. Sie kann auf eine gestoppte Datenbank, eine fehlgeschlagene Verbindung, erschöpften Speicherplatz, zu viele Verbindungen oder eine tatsächliche Beschädigung von Tabellen oder InnoDB hinweisen. Die sichere Lösung hängt von den umgebenden Protokollzeilen und dem betroffenen Server ab. Beginnen Sie mit Prüfungen im Nur-Lese-Modus, schützen Sie die Daten und führen Sie keinen allgemeinen Reparaturbefehl aus, nur weil das Wort „Beschädigung“ erscheint.
Diese Anleitung verwendet gängige Zimbra-Pfade und -Befehle, die im Zimbra Tech Center dokumentiert sind. Einige zugehörige Wiki-Seiten sind als archiviert oder unvollständig gekennzeichnet. Überprüfen Sie daher jeden Befehl und jede Wiederherstellungsprozedur anhand Ihrer genauen Zimbra-Edition und -Version mithilfe des offiziellen Zimbra-Dokumentationsindex . Die folgenden Beispiele setzen keine bestimmte Version voraus.
Was bedeutet ein Datenbankfehler in der Datei mailbox.log genau?
Die Mailbox-Datenbank von Zimbra speichert Metadaten wie Ordner, Tags, Nachrichtenstatus und Verweise auf Nachrichtendateien. Suchindizes werden separat gespeichert, und der Nachrichteninhalt selbst befindet sich im Nachrichtenspeicher. Ein Datenbankfehler bedeutet daher nicht automatisch, dass alle E-Mail-Dateien beschädigt sind. Auch ein Indexfehler allein beweist noch keinen Datenbankschaden. Zimbra beschreibt diese separaten Speicher in seiner Serverarchitektur-Referenz .
Der entscheidende Hinweis ist in der Regel der zugrundeliegende Datenbankfehler, der in der Nähe der Mailbox-Ausnahme auftritt, insbesondere in /opt/zimbra/log/mysql_error.log. Die Fehlerbehebungshinweise von Zimbra nennen mailbox.logund mysql_error.logals nützliche Ausgangspunkte, wobei zmmailboxd.outDetails zum Start des Mailbox-Dienstes liefert. Siehe die Zimbra-Referenz zur Fehlerbehebung bei Protokollen .
Was sollten Sie tun, bevor Sie eine Reparatur versuchen?
Notieren Sie den Zeitpunkt des ersten Auftretens, die Zeitzone, den Servernamen, das/die betroffene(n) Konto(en) sowie die vollständige Ausnahmemeldung und die angrenzenden Zeilen. Schwärzen Sie Passwörter, Nachrichteninhalte und personenbezogene Daten, bevor Sie die Protokolle weitergeben.
Ermitteln Sie den Umfang: ein einzelnes Postfach, mehrere Postfächer in einem Store oder Benutzer in mehreren Stores. Ein Problem bei einem einzelnen Konto rechtfertigt keinen Neustart der gesamten Datenbank im Cluster.
Prüfen Sie, ob ein aktuelles, verwendbares Backup vorhanden ist und ermitteln Sie die versionsspezifische Wiederherstellungsprozedur. Falls Fehler wiederholt auftreten oder Benutzer betroffen sind, vermeiden Sie wiederholte Neustarts und Schreibvorgänge, bis der Zustand der Datenbank geklärt ist.
Nutzen Sie ein Wartungsfenster für Prüfungen, die Datenbanktabellen scannen. Selbst eine Integritätsprüfung kann die E/A-Last erhöhen und den Postfachdienst verlangsamen.
Wie kann man es sicher diagnostizieren?
1. Überprüfen Sie den Servicestatus
Wechseln Sie auf dem Mailbox-Server zum Zimbra-Konto und überprüfen Sie den Dienststatus. Führen Sie die Befehle mit dem in der jeweiligen Eingabeaufforderung angezeigten Konto aus; fügen Sie kein Eingabeaufforderungssymbol (z. B. ) als $Teil des Befehls ein.
Ein Terminal zeigt den Kontowechsel und zmcontrol statusden Befehl an, mit dem der Status des Zimbra-Dienstes überprüft wurde; es werden keine Serverergebnisse angezeigt.
su - zimbra
zmcontrol status
Prüfen Sie, ob das Postfach ausgeführt wird und ob das gemeldete Problem nur auf einem Postfachserver auftritt. Ein gestoppter Postfachprozess reicht nicht aus, um auf eine beschädigte Datenbank zu schließen. Die Zimbra-Seite zur Fehlerbehebung für Postfächer listet den Dienststatus und die Datenbankanmeldung/-konfiguration als separate Prüfpunkte auf. Diese Seite ist als Archiv gekennzeichnet; verwenden Sie sie daher nur als Hintergrundinformation und beachten Sie die Dokumentation Ihrer Version.
2. Mailbox- und Datenbankprotokolle gleichzeitig vergleichen
Lesen Sie in beiden Protokollen denselben Zeitraum. Der erste Fehler in der Sequenz ist oft aussagekräftiger als die letzte Zeile mit der Meldung „Systemausfall“.
Das Terminal zeigt Befehle zum Lesen der neuesten Zeilen aus mailbox.logund an mysql_error.log, wobei verwandte Ereignisse anhand des Zeitstempels verglichen werden können.
Suchen Sie nach der zugrundeliegenden Datenbankmeldung, dem Datenbank- oder Mailboxgruppennamen, wiederholten Zeitstempeln, Startfehlern oder einem passenden Betriebssystemfehler. Behandeln Sie diese Ausdrücke als Hinweise, nicht als automatische Lösungen:
Log-Hinweis
Was es bedeuten könnte
Nächste sichere Maßnahme
Too many connectionsoder MySQL-Fehler 1040
Die Verbindungskapazität ist erschöpft; das ist kein Beweis für Korruption.
Prüfen Sie die gleichzeitige Last und die versionsspezifischen Verbindungseinstellungen von Zimbra, bevor Sie die Grenzwerte ändern. Der Fehlerhinweis 1040 von Zimbra dokumentiert dies als eigenständigen Fall.
Access deniedSocket nicht verfügbar oder Verbindung nicht möglich
Die Anmeldeinformationen, der Dienststatus, der Socket-Pfad oder die Konfiguration könnten fehlerhaft sein.
Überprüfen Sie den Datenbankdienst und die Konfiguration mit den für diese Version unterstützten Tools; setzen Sie Passwörter nicht zurück, indem Sie Dateien aus einer Anleitung einer nicht zugehörigen Version bearbeiten.
No space left, schreibgeschütztes Dateisystem oder E/A-Fehler
Speicher- oder Dateisystemprobleme können Datenbankschreibvorgänge und den Startvorgang verhindern.
Vor jedem Neustart oder jeder Reparatur sollten Sie den freien Speicherplatz, die Inodes, den Mount-Status und die Systemprotokolle überprüfen.
Wiederholte InnoDB-Assertions-, Seiten-, Tabellenbereichs- oder Prüfsummenfehler
Möglicherweise liegt eine Beschädigung der zugrundeliegenden Datenbank oder des Speichers vor.
Bewahren Sie die aktuellen Daten und den Sicherungsstatus auf und verwenden Sie anschließend einen unterstützten Wiederherstellungsplan oder einen vom Hersteller unterstützten Wiederherstellungsplan.
Fehlende Tabelle oder Schema-/Versionskonflikt
Möglicherweise liegt ein fehlgeschlagenes Upgrade, ein falsches Datenbankziel oder ein Schemaproblem vor.
Vergleichen Sie die Serverversions- und Upgradehistorie; Tabellen dürfen nicht manuell erstellt, gelöscht oder umbenannt werden.
3. Überprüfen Sie die Festplattenkapazität und Betriebssystemfehler.
Volle Daten- oder Protokollvolumes, erschöpfte Inodes oder Speicherausfälle können wie ein Datenbankausfall aussehen. Führen Sie nicht-destruktive Prüfungen auf dem Speicherhost durch:
Im Terminal werden dfPrüfungen des verfügbaren Dateisystemspeichers und der Inodes auf dem Zimbra-Pfad angezeigt; es werden keine Kapazitätsergebnisse angezeigt.
df -h /opt/zimbra
df -i /opt/zimbra
Prüfen Sie das Betriebssystemjournal oder Systemprotokoll auf Festplatten-E/A-, Dateisystem- oder Speichermangelfehler im selben Zeitraum. Wenn ein Volume voll ist, geben Sie Speicherplatz frei oder fügen Sie ihn gemäß Ihrer üblichen Speicherprozedur hinzu. Löschen Sie keine Datenbankdateien, InnoDB-Protokolle oder aktive Zimbra-Protokolle, um Speicherplatz zu schaffen; dies kann die Wiederherstellung erschweren oder Beweise vernichten.
4. Führen Sie eine Integritätsprüfung erst nach Überprüfung der Auswirkungen durch.
Wenn der Datenbankdienst von Zimbra erreichbar ist und die Protokolle noch kein eindeutiges Verbindungs- oder Speicherproblem anzeigen, kann ein Administrator den Standard-Integritätsbericht während eines Wartungsfensters mit geringem Datenverkehr in Betracht ziehen:
Das Terminal zeigt den Standardbefehl für den Integritätsbericht an, ohne die Option für die automatische Reparatur; es wird kein Berichtsergebnis angezeigt.
su - zimbra
/opt/zimbra/libexec/zmdbintegrityreport
Zimbras Integritätsbericht beschreibt dies als Datenbankprüfung und warnt davor, dass dadurch zusätzliche E/A-Lasten und eine erhöhte Postfachlatenz entstehen können. Er beschreibt auch die -rOption, eine automatische Tabellenreparatur zu versuchen. Fügen Sie dies nicht -rroutinemäßig als nächsten Schritt hinzu: Die Seite ist als „in Bearbeitung“ gekennzeichnet, und die richtige Vorgehensweise hängt von der Datenbank-Engine, dem Tabellentyp, der Produktversion und dem Sicherungsstatus ab. Ein Bericht, der lediglich eine bekannte, harmlose Meldung über eine Sperrung der Protokolltabelle erwähnt, sollte gemäß dem Hinweis auf dieser Seite interpretiert werden; behandeln Sie nicht jede Meldung „Datenbankfehler gefunden“ gleich.
Welche Lösung passt zu den Beweisen?
Der Datenbankdienst ist beendet, es liegen jedoch keine Anzeichen für eine Beschädigung vor: Beheben Sie zunächst den spezifischen Start-, Konfigurations-, Anmeldeinformations- oder Ressourcenfehler. Führen Sie nach der Behebung die Wiederherstellungsprozedur für Ihre Release- und Bereitstellungstopologie durch. Vermeiden Sie wiederholte Neustarts ohne vorherige Prüfung.
Zu viele Verbindungen: Untersuchen Sie die Auslastung, blockierte Clients und die Servicekapazität. Bezeichnen Sie dies nicht vorschnell als Datenbankbeschädigung oder übernehmen Sie keine veraltete Empfehlung zur Erhöhung der Grenzwerte, ohne die aktuellen Dimensionierungs- und Freigaberichtlinien zu prüfen.
Problem mit Festplatte oder Dateisystem: Sichern Sie den Speicher und überprüfen Sie die Integrität des Dateisystems. Falls die Datenbank fehlgeschlagene Schreibvorgänge oder InnoDB-Fehler protokolliert hat, behandeln Sie dies als möglichen Integritätsvorfall, auch nachdem der Speicherplatz wiederhergestellt wurde.
Integritätsbericht-Kennzeichnungen: Speichern Sie die genaue Ausgabe, Tabellen-/Datenbanknamen, Zeitstempel und relevante Protokolle. Sichern oder erstellen Sie einen Snapshot des Datenbank-Volumes mit einer unterstützten Methode, bevor Sie Schreibvorgänge durchführen. Lassen Sie einen Administrator die vom Hersteller unterstützte Reparatur- oder Wiederherstellungsprozedur für die installierte Zimbra-Version durchführen.
Ein Konto ist weiterhin betroffen, obwohl die Datenbank-Engine intakt ist: Untersuchen Sie dessen Postfach-Metadaten, Nachrichtenspeicher oder Index separat. Vermeiden Sie es, SQL-Zeilen manuell zu bearbeiten oder Dateien zu löschen, um das Konto wiederherzustellen.
Bei Verdacht auf eine Beschädigung von InnoDB ist die sicherste Reparatur in der Regel eine versionsspezifische Wiederherstellung aus einem verifizierten Backup oder eine vom Support begleitete Wiederherstellung. Eine generische Wiederherstellung REPAIR TABLE, eine Datenbankreinitialisierung oder das Kopieren einer Befehlsfolge sind nicht ratsam. Einige ältere Wiederherstellungsartikel im Zimbra-Wiki enthalten destruktive Schritte und sind daher archiviert. Wenden Sie diese nicht ohne direkte Bestätigung durch den Zimbra-Support und ein getestetes Backup auf Ihr aktuelles System an.
Wie können Sie bestätigen, dass das Problem behoben ist?
Nach der genehmigten Korrekturmaßnahme prüfen Sie, ob die Datenbank- und Postfachdienste weiterhin verfügbar sind, neue Einträge nicht mehr denselben Datenbankfehler aufweisen und das betroffene Konto wieder normale E-Mail-Operationen durchführen kann. Führen Sie den Standard-Integritätsbericht nur dann erneut aus, wenn dies für Ihr Ladefenster und Ihre Version erforderlich ist. Stellen Sie sicher, dass der Sicherungsauftrag abgeschlossen ist und bewahren Sie die Protokolle und den Reparaturdatensatz auf. Sollte das Problem erneut auftreten, melden Sie Ihrem Administrator oder dem Zimbra-Support die genaue Zimbra-Version/Build, das Serverlayout (Einzel- oder Mehrserverumgebung), den Postfachbereich, den Zeitpunkt des ersten Fehlers, relevante Protokollauszüge, den Festplattenstatus, die Ausgabe des Integritätsberichts und den Sicherungszeitstempel.
Wichtig: Ermitteln Sie den Datenbankfehler, der der Postfachausnahme zugrunde liegt, bevor Sie Daten ändern. Die Meldung „Datenbankfehler“ allein gibt keine Auskunft darüber, ob die Lösung eine Korrektur der Anmeldeinformationen, eine Kapazitätsänderung, eine Speicherreparatur oder eine Datenbankwiederherstellung ist.