Wiederherstellung der beschädigten Datenbank von Zimbra

3249
prd

Ich habe ein großes Problem mit Zimbra. Die ibdataDatei ist beschädigt und ich kann die Postfächer nicht öffnen. Ich habe alle msgDateien darin store/0/*, aber ich habe nur eine Datenbanksicherung von vor einer Woche. Ich habe versucht, die Dateien von letzter Woche wiederherzustellen, aber es werden keine E-Mails angezeigt, die wir in dieser Woche erhalten haben. Es ist unmöglich, sie einzeln hinzuzufügen, da wir in einer Woche hunderte von E-Mails und viele mboxgroup-Ordner haben.

Gibt es eine Möglichkeit, alle Postfächer zu scannen und Zimbra die Datenbank neu erstellen zu lassen? Wenn ich ein Skript erstellen muss, wie können wir E-Mails zwischen Backup und Server abstürzen?

Wir verwenden die Community Edition von Zimbra.

1

1 Antwort auf die Frage

0
prd

Ok .. da niemand geantwortet hat, habe ich es geklappt ..

Da wir viele E-Mails haben und auf mehrere Ordner verteilen, müssen wir die in der Datenbank von denen trennen, die nicht ..

Stellen Sie sicher, dass Sie diese ... äh ... Datenordner in einen anderen Ordner kopieren. Wenn also etwas schief geht, können Sie sie immer wieder zusammenfügen.

  1. Also der erste Schritt ist natürlich das Herunterfahren von Zimbra

    service zimbra stop 
  2. Kopieren Sie dann die ältere funktionierende MySQL-Datenbank in ein nicht funktionierendes Zimbra.

    cp /mnt/mail/db/* /opt/zimbra/db -R 
  3. Nun müssen wir diese Mails in ~ / store im Juli-Backup mit denen in ~ / store in zimbra vergleichen. Dann habe ich jede Mail nicht im Juli in einen anderen Ordner unter / opt / backup verschoben. Das folgende Skript dient zum Scannen aller verfügbaren .msg-Dateien in allen Speichern und Volumes und zum Verschieben in einen anderen Ordner. Speichern Sie dieses Skript unter zBcompare.sh

    SOURCE=/opt/zimbra/store/0 DESTINATION=/opt/backup COMPARE=/mnt/mail/store/0 for f in $SOURCE/*; do echo "scanning folder $"; for v in $f/msg/*; do comp=$COMPARE/$/msg/$ dst=$DESTINATION/$ if [ ! -d $dst ]; then echo "create $dst" mkdir $dst; fi  echo "comparing volume $v to $comp" if [ -d $comp ] ; then for m in $v/*; do if [ ! -f $comp/$ ]; then echo "move $m to $dst" mv -b $m $dst fi done else echo "move $v/* to $dst" mv -b $v/* $dst fi done; done; 

    Stellen Sie sicher, dass Sie die Variablen SOURCE, COMPARE und DESTINATION ändern, um Ihre eigenen Ordner zu spiegeln.

    SOURCE: Aktueller laufender Zimbra Store-Ordner ZIEL: Wohin möchten Sie, dass Ihre fehlenden Dateien verschoben werden COMPARE: Wo sich Ihre alte Zimbra-Sicherung befindet, verwenden Sie die Datenbank.

    Dann chmod a+x compare.shum es ausführbar zu machen, dann ./compare.shum es auszuführen.

    Das Ergebnis ist / opt / backup / 1 nach / opt / backup / xx, wobei xx Mailbox-Stores sind. Alle Nachrichten, die nach / opt / backup / x verschoben wurden, befinden sich nicht in der ursprünglichen Mailbox und werden hinzugefügt.

    Jetzt haben wir 2 Ordner. /opt/backup/xxwelche Dateien enthält, die sich nicht in der Datenbank befinden und /opt/zimbra/die weitgehend identisch sein sollten/mnt/mail/

  4. Starte Zimbra zurück

    service zimbra start 
  5. Jetzt müssen wir alle Postfächer erhalten

     mysql "zimbra" -e"select id,comment from mailbox" 
  6. Der Rest ist einfach, wir müssen nur CreateFolder und addMessage wie folgt aufrufen, um die fehlenden Mails wieder anzufügen:

    zmmailbox -z -m <user@domain.net> cf "/Inbox/Recovered" zmmailbox -z -m <user@domain.net> am "/Inbox/Recovered" "/opt/backup/<xx>" 

zum Beispiel:

Nehmen wir an, wir haben von Schritt 2 oben

+ ---- + ------------------------------------------ -------- + | id | Kommentar | + ---- + ------------------------------------------ -------- + | 1 | mymailbox@bogusmail.xcom | | 2 | awesome@bogusmail.xcom | + ---- + ------------------------------------------ -------- + 

Wir sollten diese Nachrichten hinzufügen als:

zmmailbox -z -m mymailbox@bogusmail.xcom cf "/Inbox/Recovered" zmmailbox -z -m mymailbox@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/1"  zmmailbox -z -m awesome@bogusmail.xcom cf "/Inbox/Recovered" zmmailbox -z -m awesome@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/2" 

Fühlen Sie sich frei, das / Posteingang / Wiederhergestellt zu ändern, was Sie möchten.