Вопрос или проблема
Я использую New Relic для мониторинга производительности моего сервера. На днях я заметил очень странную проблему: каждые 3 часа сервер будет недоступен в течение 1 минуты. И в отчете New Relic во время простоя сервера были резкие всплески активности в базе данных.
Проблема в том, что я новичок в системном администрировании, и не знаю, как посмотреть журналы базы данных. Я использую MariaDB на машине с Ubuntu 14.04. Так где я могу найти журнал? Я пытался просмотреть /var/log/mysql.err, /var/log/mysql.log и /var/log/mysql/error.log, но они пустые.
Я также пытался выполнить grep ‘mysql’ /var/log/syslog, но ничего не нашел.
Мне нужно включить ведение журнала в конфигурационном файле MariaDB? Если да, то как?
Один из способов узнать текущий путь к файлу журнала — это использовать следующий SQL-запрос:
show global variables like 'log_error';
Вывод должен выглядеть примерно так:
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
В системах на базе systemd (Ubuntu) журналы централизованно собираются и управляются в журнале. Чтобы просмотреть журнал MariaDB, выполните:
# journalctl -u mariadb -f
Вы должны увидеть что-то вроде:
-- Журналы начинаются в Пн 2021-08-30 08:59:29 CDT. --
25 авг 21:10:22 aorus-15g-yb mysqld[1123]: 2022-08-25 21:10:22 0 [Note] /usr/sbin/mysqld (mysqld 10.3.34-MariaDB-0ubuntu0.20.04.1) запуск как процесс 1123 ...
25 авг 21:10:22 aorus-15g-yb systemd[1]: Запущен сервер базы данных MariaDB 10.3.34.
25 авг 21:10:22 aorus-15g-yb /etc/mysql/debian-start[1254]: Ищу 'mysql' как: /usr/bin/mysql
25 авг 21:10:22 aorus-15g-yb /etc/mysql/debian-start[1254]: Ищу 'mysqlcheck' как: /usr/bin/mysqlcheck
25 авг 21:10:22 aorus-15g-yb /etc/mysql/debian-start[1254]: Эта установка MariaDB уже обновлена до 10.3.34-MariaDB.
У меня была такая же проблема на Debian 8.5, используя MariaDB 10.1.16. Я настроил конфигурацию, как рекомендовано, но ничего, файл error.log не записывался с ошибками.
В конце концов, я посмотрел в /var/log/syslog, и там были ошибки и предупреждения.
tail -f /var/log/syslog | grep mysql
На Fedora 35 он находится по адресу /var/log/mariadb/mariadb.log
. Возможно, в других недавних версиях Fedora или других дистрибутивах тоже.
Как найти журнал MySQL или MariaDB
1. Войдите на сервер через SSH или терминал как пользователь root.
2. Выполните следующую команду: mysql -e “show variables like ‘%log%‘;”
3. Найдите опцию с меткой “log_error”, чтобы найти путь к файлу журнала.
вы можете просмотреть записи syslog, связанные с сервисом MariaDB с помощью journalctl:
$ journalctl -u mariadb.service
Если иногда журнал не создается, то откройте /etc/my.cnf, отредактируйте log_error=/var/log/mysqld.log. Перезапустите MySQL с помощью следующей команды. /scripts/restartsrv_mysql.
Ответ или решение
Чтобы просмотреть логи MariaDB на вашей машине под управлением Ubuntu 14.04, вам потребуется следовать определённым шагам для настройки и доступа к лог-файлам. Поскольку вы столкнулись с проблемами производительности, важно убедиться, что логирование настроено корректно, чтобы отслеживать любые ошибки или предупреждения, которые могут способствовать сбоям сервера.
Шаг 1: Определение пути к логам
Первое, что нужно сделать, это определить, где находятся ваши логи MariaDB. Для этого выполните следующую команду, чтобы получить переменную, указывающую на лог ошибок:
mysql -e "SHOW GLOBAL VARIABLES LIKE 'log_error';"
Вывод должен выглядеть примерно так:
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
Это покажет вам путь к файлу логов. Если файл не существует или пуст, переходите к следующему шагу.
Шаг 2: Настройка логирования
Если логи отсутствуют, возможно, их нужно активировать в конфигурационном файле. Вы можете найти файл конфигурации (my.cnf
) по следующему пути:
/etc/mysql/my.cnf
Откройте этот файл в текстовом редакторе, таком как nano
или vi
:
sudo nano /etc/mysql/my.cnf
Добавьте или проверьте следующую строчку в разделе [mysqld]
, чтобы включить логирование ошибок:
log_error = /var/log/mysql/error.log
Сохраните изменения и закройте редактор.
Шаг 3: Перезапуск службы MariaDB
После внесения изменений в конфигурацию необходимо перезапустить службу MariaDB:
sudo systemctl restart mariadb
Шаг 4: Проверка журналов
Теперь вы можете просмотреть лог ошибок, чтобы найти возможные причины сбоев. Используйте следующую команду, чтобы открыть файл логов:
tail -f /var/log/mysql/error.log
Если вместо этого вы не видите активности в файле ошибок, вы можете проверить системные журналы:
journalctl -u mariadb.service -f
Это позволит вам просмотреть все последние сообщения, связанные с MariaDB, в реальном времени.
Другие пути поиска ошибок
Если вы не находите ошибок в указанных логах, вы можете попробовать посмотреть глобальный системный журнал:
tail -f /var/log/syslog | grep mysql
Это может дать вам дополнительную информацию о проблемах, связанных с MariaDB, которые могли быть записаны в других логах.
Заключение
Ваша проблема с производительностью может быть связана с некорректной работой MariaDB, поэтому наличие логов очень важно для диагностики. Следуя вышеуказанным шагам, вы сможете настроить логи, найти их местоположение и получить доступ к ним. Надеюсь, это поможет вам выявить и устранить причину сбоев на вашем сервере. Если всё равно не удаётся найти решение, подумайте о том, чтобы обратиться за дополнительной помощью, возможно, к более опытному системному администратору.