Восстановление поврежденной базы данных Zimbra

3377
prd

У меня огромная проблема с Zimbra. ibdataФайл поврежден, и я не могу открыть почтовые ящики. У меня есть все msgфайлы внутри store/0/*, но у меня есть резервная копия базы данных только неделю назад. Я пытался восстановить файлы с прошлой недели, но он не показывает электронные письма, которые мы получили на этой неделе. Добавить их по одному невозможно, так как у нас есть сотни писем в неделю и множество папок mboxgroup.

Можно ли сканировать все почтовые ящики и позволить Zimbra восстановить базу данных? Если мне нужно сделать сценарий, как мы можем различить почту между резервным копированием и сбой сервера?

Мы используем общественное издание Zimbra.

1

1 ответ на вопрос

0
prd

Хорошо .. так как никто не ответил, у меня это получилось ..

Поскольку у нас много электронных писем и они распределены по нескольким папкам, нам нужно разделить те, что в базе данных, и те, которых нет ..

Убедитесь, что вы скопировали эти ... э ... поврежденные папки с данными в другую папку. Так что, если что-то пойдет не так, вы всегда можете собрать их вместе.

  1. Итак, первый шаг, это, конечно, отключение Zimbra

    service zimbra stop 
  2. затем скопируйте старую рабочую базу данных mysql в нерабочую зимбру.

    cp /mnt/mail/db/* /opt/zimbra/db -R 
  3. Теперь нам нужно сравнить эти письма в ~ / store при резервном копировании в июле с письмами в ~ / store при работающем zimbra. Затем я переместил каждое письмо не в июле в другую соответствующую папку в / opt / backup. Приведенный ниже сценарий предназначен для сканирования всех доступных .msg во всех магазинах и томах и перемещения в другую папку. Сохраните этот скрипт ниже, т.е.compare.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; 

    Убедитесь, что вы изменили переменные SOURCE, COMPARE dan DESTINATION для зеркалирования ваших собственных папок.

    ИСТОЧНИК: Текущая текущая папка в магазине Zimbra DESTINATION: куда вы хотите переместить отсутствующие файлы СРАВНИТЕ: Где находится ваша старая рабочая резервная копия zimbra, та, которую вы используете в своей базе данных.

    Затем chmod a+x compare.shсделать его исполняемым, затем ./compare.shвыполнить его.

    Результатом будет / opt / backup / 1 в / opt / backup / xx, где xx - хранилища почтовых ящиков. Все сообщения, которые были перемещены в / opt / backup / x, не находятся в исходном почтовом ящике и будут добавлены.

    Итак, теперь у нас есть 2 папки. /opt/backup/xxкоторый содержит файлы не в базе данных, и /opt/zimbra/который должен быть в значительной степени идентичен/mnt/mail/

  4. Запустить Zimbra назад

    service zimbra start 
  5. Теперь нам нужно получить все почтовые ящики

     mysql "zimbra" -e"select id,comment from mailbox" 
  6. Остальное просто, нам нужно только вызвать CreateFolder и addMessage, как эти, чтобы повторно прикрепить эти пропущенные письма:

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

например:

Допустим, у нас есть от шага 2 выше

+ ---- + -------------------------------------------- -------- + | id | комментарий | + ---- + -------------------------------------------- -------- + | 1 | mymailbox@bogusmail.xcom | | 2 | awesome@bogusmail.xcom | + ---- + -------------------------------------------- -------- + 

Мы должны добавить эти сообщения как:

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" 

Не стесняйтесь изменить это / Входящие / Восстановлено на что угодно.

Похожие вопросы