Для создание виртуалок на базе Ubuntu Server рекомендую этот VDS-хостинг с SSD-дисками ДЦ в Москве, стабильность мне пока нравится (но я ими пользуюсь только третий месяц). Удобная панель, где самостоятельно можно пересоздать сервер + прописать свой публичный ключ, чтоб на сервер можно было войти сразу после его создания. А, главное, они дают 1 ГБ оперативной памяти за 250 руб. в месяц!

Запуск СУБД MySQL в Ubuntu Server после падения и анализ логов демона mysqld

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

В Ubuntu логи ошибок MySQL хранятся в файле /var/log/mysql/error.log. Но открывать его текстовым редактором на удалённой машине — опасно. Если у вас не настроена ротация логов, то файл может весить сотни мегабайт. Но даже если и настроена, то при падении MySQL мог основательно нафлудить в файл (и он, как следствие, всё равно может быть немаленьким). Поэтому изучать свежие логи будем с помощью утилиты tail, которая выводит несколько (по умолчанию, 10) последних строк указанного файла.

Вот так можно вывести последние 100 строк лога:

sudo tail -n 100 /var/log/mysql/error.log

Формат лога примерно такой:

120711 8:56:47 [ERROR] /usr/sbin/mysqld: Table './blog/watchdog' is marked as crashed and should be repaired

О составе строки по порядку:

  1. Дата в формате YYMMDD, в данном случае, соответственно, 11 июля 2012 года.
  2. Время.
  3. Статус события. ERROR — критическая ошибка, Warning — предупреждение.
  4. Далее идёт собственно описание проблемы, в рамках которого указывается проблемная база и таблица в ней. В рассмотренном примере база blog и таблица watchdog.

Как вы понимаете, чтоб понять, почему база рухнула и узнать о конкретных проблемах нам нужны именно критические ошибки. Поэтому мы можем составить простейший конвейер, отфильтровав с помощью команды grep только те строки, где содержатся error`ы:

sudo tail -n 1000 /var/log/mysql/error.log | grep ERROR

И вот теперь мы уже увидим только самое интересное. Например:

120711 8:56:47 [ERROR] /usr/sbin/mysqld: Table './blog/watchdog' is marked as crashed and should be repaired
120711 9:28:43 [ERROR] /usr/sbin/mysqld: Disk is full writing './gssport/cache_menu.MYD' (Errcode: 28).

Первая показанная ошибка нам не иллюзорно намекает, что место на диске закончилось. Вторая ошибка говорит о том, что MyISAM таблица поломалась.

Дальнейшие действия просты: останавливаем СУБД, освобождаем место на диске, запускаем СУБД в безопасном режиме и следим за логами.

Останавливаем СУБД:
sudo service mysql stop

Чистим диск.

Запускаем СУБД в безопасном режиме:
sudo mysqld_safe

Следим за логом.

Для того, чтобы следить в реальном времени, пригодится уже известная нам команда с ключом -f:

sudo tail -f /var/log/mysql/error.log

Вы увидите в терминале последние 10 строк файла, которые будут обновляться в реальном времени по мере поступления новых данных в файл.

Поломанная таблица, по идеи, должна будет восстановиться автоматически, о чём будут свидетельствовать примерно такие записи в логе:

120711 8:56:47 [ERROR] /usr/sbin/mysqld: Table './blog/watchdog' is marked as crashed and should be repaired
120711 8:56:47 [Warning] Checking table: './blog/watchdog'
120711 8:56:47 [Warning] Recovering table: './blog/watchdog
'

Холодный старт MySQL может занимать несколько минут, если у вас много больших баз и не быстрый сервер, поэтому терпеливо понаблюдав за логом, проверьте потом: нормально ли заработали ваши сайты или нет?

Если всё ок, то останавливайте mysqld_safe и запускайте демона штатным образом:
sudo service mysql start

Ну, а, в случае иных проблем, вы найдёте в логе какие-то более экзотические error`ы — отправляйтесь с ними в Google :-)

Re: Запуск СУБД MySQL в Ubuntu Server после падения и анализ ...

Статья очень простая но некоторые моменты для себя прояснил, насчет запуска демона в безопасном режиме я вообще не знал. Пришлось поднимать разрулшенные файы БД на сайте по радиоэлектронике, чесно говоря отремонтировать не получилось, много данных потеряно. Пофиксил файловую систему и поднял базу из дампа, благо бекапы делаются регулярно.
Но все ровно Спасибо за статейку!

Re: Запуск СУБД MySQL в Ubuntu Server после падения и анализ ...

Спасибо за статью. Коротко и понятно!

Re: Запуск СУБД MySQL в Ubuntu Server после падения и анализ ...

Здравствуйте, А как с таким быть?

150513 16:57:37 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.
150513 16:57:37 mysqld_safe Logging to '/var/log/mysql/error.log'.
150513 16:57:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Je suis favorable au principe d une taxe.

Parmi les interesses, certains sont un peu genes. Une mastectomie n est pas une intervention anodine. http://lenitsky.com/ Rennes a deja commence. Du coup, la viande chevaline est tres bon marche. Ce point est primordial.

Отправить комментарий

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

RSS-материал