Главная
» СЕТЕВОЙ АДМИНИСТРАТОР
»
Устранение ошибки Zimbra «DB Error: DB Failure / Corruption» в журналах почтовых ящиков: безопасная диагностика и восстановление.
Устранение ошибки Zimbra «DB Error: DB Failure / Corruption» в журналах почтовых ящиков: безопасная диагностика и восстановление.
Сообщение «DB Error: DB Failure» в журнале почтового ящика Zimbra — это симптом, а не диагноз. Оно может указывать на остановку базы данных, сбой соединения, исчерпание дискового пространства, слишком большое количество соединений или фактическое повреждение таблиц или InnoDB. Безопасное решение зависит от окружающих строк журнала и затронутого сервера. Начните с проверок только для чтения, защитите данные и не запускайте универсальную команду восстановления только потому, что появилось слово «повреждение».
В этом руководстве используются стандартные пути и команды Zimbra, описанные в Техническом центре Zimbra. Некоторые связанные страницы вики помечены как архивные или незавершенные, поэтому проверяйте каждую команду и процедуру восстановления на соответствие вашей конкретной версии и релизу Zimbra, используя официальный индекс документации Zimbra . Приведенные ниже примеры не предполагают конкретной версии.
Что на самом деле означает сообщение об ошибке базы данных в файле mailbox.log?
База данных почтовых ящиков Zimbra хранит метаданные почтовых ящиков, такие как папки, теги, состояние сообщений и указатели на файлы сообщений. Поисковые индексы хранятся отдельно, а содержимое сообщений — в хранилище сообщений. Поэтому ошибка базы данных не означает автоматически, что каждый файл электронной почты поврежден. Ошибка индекса сама по себе также не является доказательством повреждения базы данных. Zimbra описывает эти отдельные хранилища в своем справочнике по архитектуре сервера .
Решающим ключом обычно является основная ошибка базы данных, которая появляется рядом с исключением почтового ящика, особенно в /opt/zimbra/log/mysql_error.log. В рекомендациях Zimbra по устранению неполадок указываются mailbox.logи mysql_error.logкак полезные отправные точки, при этом zmmailboxd.outпредоставляются сведения о запуске службы почтовых ящиков. См. справочник Zimbra по устранению неполадок с журналами .
Что следует сделать, прежде чем пытаться исправить проблему?
Запишите время первого возникновения ошибки, часовой пояс, имя хоста сервера, затронутую учетную запись или учетные записи, а также полное сообщение об ошибке и строки рядом с ним. Перед тем как делиться журналами, удалите пароли, содержимое сообщений и личные данные.
Определите масштаб проблемы: один почтовый ящик, множество почтовых ящиков в одном хранилище или пользователи из нескольких хранилищ. Симптом, проявляющийся в одной учетной записи, не оправдывает перезапуск базы данных в масштабах всего кластера.
Убедитесь в наличии актуальной, работоспособной резервной копии и определите процедуру восстановления, специфичную для данной версии. Если ошибки повторяются или пользователи активно страдают от них, избегайте повторных перезапусков и записей до тех пор, пока не будет понято состояние базы данных.
Используйте окно обслуживания для проверок, сканирующих таблицы базы данных. Даже проверка целостности может увеличить операции ввода-вывода и замедлить работу почтового сервиса.
Как безопасно провести диагностику?
1. Проверьте состояние сервиса.
На сервере почтовых ящиков переключитесь на учетную запись Zimbra и проверьте состояние службы. Выполняйте команды от имени учетной записи, указанной в каждом приглашении командной строки; не вставляйте символы приглашения командной строки, например, в качестве $части команды.
На терминале отображается ключ учетной записи и zmcontrol statusкоманда, использованная для проверки состояния службы Zimbra; результаты проверки сервера отсутствуют.
su - zimbra
zmcontrol status
Обратите внимание, запущен ли почтовый ящик и локализована ли проблема только на одном сервере почтовых ящиков. Остановка процесса почтового ящика недостаточна для вывода о повреждении базы данных. На странице устранения неполадок почтовых ящиков Zimbra также указаны статус службы и вход/настройка базы данных в качестве отдельных проверок; эта страница помечена как архивная, поэтому используйте ее в качестве справочной информации и следуйте документации для вашей версии.
2. Одновременное сравнение журналов почтового ящика и базы данных.
Прочитайте один и тот же временной интервал в обоих журналах. Первая ошибка в последовательности часто оказывается более полезной, чем последняя строка «сбой системы».
В терминале отображаются команды для чтения последних строк из mailbox.logи mysql_error.log, где связанные события можно сравнивать по временной метке.
Обратите внимание на сообщение в базе данных, имя базы данных или группы почтовых ящиков, повторяющиеся метки времени, ошибки запуска или соответствующую ошибку операционной системы. Воспринимайте эти фразы как подсказки, а не как автоматические решения:
Подсказка для журнала
Что это может означать
Следующие безопасные действия
Too many connectionsили ошибка MySQL 1040
Пропускная способность сети исчерпана; это не является доказательством коррупции.
Access deniedРазъем недоступен или невозможно подключиться.
Учетные данные, состояние службы, путь к сокету или конфигурация могут быть неверными.
Проверьте работу службы базы данных и ее конфигурацию с помощью поддерживаемых инструментов для данного выпуска; не сбрасывайте пароли, редактируя файлы из руководства по другой версии.
No space leftошибки файловой системы, доступной только для чтения, или ошибки ввода-вывода.
Проблемы с хранилищем или файловой системой могут препятствовать записи в базу данных и ее запуску.
Перед перезагрузкой или восстановлением проверьте свободное место, количество inode, состояние монтирования и системные журналы.
Возможно, произошло повреждение базы данных или повреждение хранилища.
Сохраните текущие данные и состояние резервной копии, затем используйте поддерживаемый план восстановления или план восстановления с помощью поставщика.
Отсутствует таблица или несоответствие схемы/версии.
Причиной может быть неудачное обновление, неправильная целевая база данных или проблема со схемой.
Сравнивайте историю выпусков и обновлений серверов; не создавайте, не удаляйте и не переименовывайте таблицы вручную.
3. Проверьте объем диска и наличие ошибок операционной системы.
Переполнение томов данных или журналов, исчерпание инодов или сбой хранилища могут выглядеть как сбой базы данных. Выполните неразрушающие проверки хоста хранилища:
В терминале отображается dfпроверка доступного пространства файловой системы и инодов по пути Zimbra; результаты проверки емкости не отображаются.
df -h /opt/zimbra
df -i /opt/zimbra
Проверьте журнал операционной системы или системный журнал на наличие ошибок ввода-вывода диска, файловой системы или нехватки памяти за тот же период времени. Если том заполнен, освободите место или добавьте его, используя стандартную процедуру хранения данных. Не удаляйте файлы базы данных, журналы InnoDB или активные журналы Zimbra, чтобы освободить место; это может затруднить восстановление или уничтожить доказательства.
4. Проверку целостности следует проводить только после оценки последствий.
Если служба базы данных Zimbra доступна и в журналах не обнаружено явных проблем с подключением или хранилищем, администратор может рассмотреть возможность использования стандартного отчета о целостности во время планового технического обслуживания с низкой нагрузкой:
В терминале отображается стандартная команда integrity-report, без опции автоматического восстановления; результат отчета не отображается.
su - zimbra
/opt/zimbra/libexec/zmdbintegrityreport
В справочнике Zimbra по отчетам о целостности это описывается как проверка базы данных и предупреждается о том, что это может увеличить операции ввода-вывода и задержку почтового ящика. Там также описана опция -rпопытки автоматического восстановления таблиц. Не добавляйте это -rкак следующий шаг по умолчанию: страница помечена как находящаяся в процессе разработки, и правильное действие зависит от механизма базы данных, типа таблицы, версии продукта и состояния резервного копирования. Отчет, в котором упоминается только известное безобидное сообщение о блокировке таблицы журнала, следует интерпретировать в соответствии с примечанием на этой странице; не следует рассматривать каждый заголовок «Обнаружены ошибки базы данных» как равноценный.
Какой из способов соответствует имеющимся данным?
Служба базы данных остановлена, но признаков повреждения не обнаружено: сначала устраните конкретную ошибку запуска, конфигурации, учетных данных или ресурса. После исправления используйте процедуру восстановления службы для вашей версии и топологии развертывания. Избегайте повторных перезапусков вслепую.
Слишком много подключений: исследуйте нагрузку, зависшие клиенты и пропускную способность сервиса. Не указывайте на повреждение базы данных и не копируйте старые рекомендации по увеличению лимитов, не проверив текущие параметры и рекомендации по выпуску.
Проблема с диском или файловой системой: стабилизируйте хранилище и убедитесь в исправности файловой системы. Если база данных зафиксировала неудачные операции записи или ошибки InnoDB, рассматривайте это как возможный инцидент нарушения целостности данных даже после восстановления свободного места.
Отчет о целостности помечает таблицы: сохраните точный вывод, имена таблиц/баз данных, метки времени и соответствующие журналы. Перед любой операцией записи создайте резервную копию или снимок тома базы данных, используя поддерживаемый метод. Попросите администратора следовать поддерживаемой поставщиком процедуре восстановления для установленной версии Zimbra.
При исправной работе базы данных одна учетная запись остается затронутой: проверьте отдельно метаданные почтового ящика, хранилище сообщений или индекс. Избегайте ручного редактирования строк SQL или удаления файлов для «пересоздания» учетной записи.
В случае подозрения на повреждение InnoDB наиболее безопасным способом восстановления обычно является восстановление, специфичное для данной версии, из проверенной резервной копии или восстановление по указанию службы поддержки, а не общая REPAIR TABLEповторная инициализация базы данных или скопированная последовательность команд. Некоторые старые статьи в вики Zimbra, посвященные восстановлению, содержат деструктивные шаги и специально заархивированы; не применяйте их к текущей системе без прямого подтверждения от службы поддержки Zimbra и проверенной резервной копии.
Как можно подтвердить, что проблема решена?
После утвержденных корректирующих действий убедитесь, что службы базы данных и почтовых ящиков остаются активными, что новые записи больше не отображают ту же самую базовую ошибку базы данных и что затронутая учетная запись может выполнять обычные операции с почтой. Повторно запустите стандартный отчет о целостности только в том случае, если это необходимо для вашего периода загрузки и версии. Убедитесь, что задание резервного копирования завершено, и сохраните журналы и запись о восстановлении. Если проблема повторится, сообщите администратору или в службу поддержки Zimbra точную версию/сборку Zimbra, конфигурацию с одним или несколькими серверами, область действия почтовых ящиков, время первого сбоя, соответствующие фрагменты журналов, состояние дисков, выходные данные отчета о целостности и метку времени резервного копирования.
Ключевой момент: прежде чем вносить изменения в данные, необходимо диагностировать ошибку базы данных, лежащую в основе исключения в почтовом ящике. Одного лишь сообщения «Сбой БД» недостаточно, чтобы определить, требуется ли исправление учетных данных, изменение емкости, восстановление хранилища или восстановление базы данных.