Журнал ошибок
Журнал ошибок содержит запись о критических ошибках, произошедших во время работы сервера, повреждении таблиц, информации о запуске и остановке.
SQL-ошибки также могут быть записаны в отдельный файл с помощью плагина SQL_ERROR_LOG.
Настройка назначения вывода журнала ошибок
MariaDB всегда записывает свой журнал ошибок, но место назначения настраивается.
Запись журнала ошибок в файл
Для настройки записи журнала ошибок в файл можно установить системную переменную log_error. Вы можете настроить имя конкретного файла. Однако, если имя конкретного файла не настроено, журнал будет записываться в файл ${hostname}.err в каталоге datadir по умолчанию.
Системную переменную log_error можно установить в группе опций сервера в файле опций группы опций в файле опций до запуска сервера. Например, чтобы записать журнал ошибок в файл по умолчанию ${hostname}.err , можно настроить следующее:
[mariadb] ... log_error
Если вы настроите конкретное имя файла как системную переменную log_error, и если это не абсолютный путь, то он будет относительным к каталогу datadir. Например, если вы настроите следующее, то журнал ошибок будет записан в mariadb.err в каталоге datadir:
[mariadb] ... log_error=mariadb.err
Если это относительный путь, то log_error относительны к каталогу datadir.
Однако, системная переменная log_error также может быть абсолютным путем. Например:
[mariadb] ... log_error=/var/log/mysql/mariadb.err
Еще один способ настройки имени файла журнала ошибок — установить опцию log-basename, которая настраивает MariaDB на использование общего префикса для всех файлов журналов (например, журнал общих запросов, журнал медленных запросов, журнал ошибок, бинарные журналы и т.д.). Имя файла журнала ошибок будет построено путем добавления расширения .err к этому префиксу. Например, если вы настроите следующее, то журнал ошибок по-прежнему будет записан в mariadb.err в каталоге datadir:
[mariadb] ... log-basename=mariadb log_error
Опция log-basename не может быть абсолютным путем. Имя файла журнала относительно каталога datadir.
Запись журнала ошибок в stderr на Unix
В Unix, если системная переменная log_error не установлена, ошибки записываются в stderr, что обычно означает, что сообщения журнала выводятся в терминал, из которого был запущен mysqld.
Если системная переменная log_error была установлена в файле опций или в командной строке, то она все еще может быть сброшена путем указания --skip-log-error.
Запись журнала ошибок в Syslog на Unix
В Unix журнал ошибок также может быть перенаправлен в syslog. Способ выполнения этой операции зависит от способа запуска MariaDB.
Syslog с mysqld_safe
Если вы запускаете MariaDB с mysqld_safe, то журнал ошибок можно перенаправить в syslog. См. mysqld_safe: Настройка MariaDB для записи журнала ошибок в Syslog для получения дополнительной информации.
Syslog с Systemd
Если вы запускаете MariaDB с systemd, то журнал ошибок также может быть перенаправлен в syslog. См. Systemd: Настройка MariaDB для записи журнала ошибок в Syslog для получения дополнительной информации.
systemd также имеет свою собственную систему журналирования, называемую journal, и некоторые ошибки могут быть записаны туда вместо этого. См. Systemd: Журнал Systemd для получения дополнительной информации.
Запись журнала ошибок в консоль на Windows
В Windows, если указана опция console, и если системная переменная log_error не используется, ошибки выводятся в консоль. Если указаны обе опции, приоритет имеет последняя.
Запись журнала ошибок в просмотр событий Windows
В Windows сообщения журнала ошибок также записываются в Просмотр событий Windows. Вы можете найти сообщения журнала ошибок MariaDB, просмотрев Журналы Windows, а затем выбрав Приложение или Журнал приложений, в зависимости от версии Windows.
В MariaDB 10.3 и ранее сообщения журнала ошибок MariaDB можно найти, выполнив поиск по Источнику MySQL.
В MariaDB 10.4 и более поздних версиях сообщения журнала ошибок MariaDB можно найти, выполнив поиск по Источнику MariaDB.
Поиск журнала ошибок
Чтобы найти место хранения журнала ошибок, можно найти используемые параметры для журнала ошибок с помощью:
mariadbd --print-defaults
или
my_print_defaults --mysqld | grep log-error
Если это не помогает, проверьте также, настроено ли ваше система на запись в syslog, в таком случае вам необходимо использовать journalctl для доступа к нему.
Настройка подробности журнала ошибок
Значение по умолчанию для системной переменной log_warnings равно 2.
Системная переменная log_warnings может использоваться для настройки подробности журнала ошибок. Она может быть изменена динамически с помощью SET GLOBAL. Например:
SET GLOBAL log_warnings=3;
Она также может быть установлена в командной строке или в группе опций сервера в файле опций группы опций в файле опций до запуска сервера. Например:
[mariadb] ... log_warnings=3
Некоторые из предупреждений, включенных в каждый уровень подробности, описаны ниже.
Системная переменная log_warnings оказывает влияние только на некоторые сообщения журнала. Некоторые сообщения журнала всегда записываются в журнал ошибок, независимо от подробности журнала ошибок. Например, большинство предупреждений хранилища InnoDB не зависят от log_warnings. Полный список сообщений журнала, на которые влияет log_warnings, см. в описании системной переменной log_warnings.
Уровень подробности 0
Если log_warnings равно 0, то многие необязательные предупреждения не будут записаны. Однако это не предотвращает запись всех предупреждений, потому что существуют определенные основные предупреждения, которые всегда будут записаны в журнал ошибок. Например:
- Если режим строгости InnoDB отключен, и если выполняется DDL для таблицы, которая вызывает ошибку «Размер строки слишком велик», то InnoDB запишет предупреждение:
[Warning] InnoDB: Cannot add field col25 in table db1.tab because after adding it, the row size is 8477 which is greater than maximum allowed size (8126) for a record on index leaf page.
Однако, если режим строгости InnoDB включен, то то же сообщение будет записано как ошибка.
Уровень подробности 1
По умолчанию до MariaDB 10.2.3. Если log_warnings равно 1, то записываются многие типы предупреждений. Некоторые полезные предупреждения:
- Сообщения, связанные с репликацией:
[Note] Error reading relay log event: slave SQL thread was killed [Note] Slave SQL thread exiting, replication stopped in log 'dbserver-2-bin.000033' at position 181420; GTID position '0-263316466-368886' [Note] Slave I/O thread exiting, read up to log 'dbserver-2-bin.000034', position 642; GTID position 0-263316466-368887
- Сообщения, связанные с сбоями поиска DNS:
[Warning] IP address '192.168.1.193' could not be resolved: Name or service not known
- Сообщения, связанные с планировщиком событий:
[Note] Event Scheduler: Loaded 0 events
- Сообщения, связанные с небезопасными операторами для репликации на основе операторов:
[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. The statement is unsafe because it uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
Частые предупреждения о небезопасных операторах для репликации на основе операторов могут привести к очень большому росту журнала ошибок. MariaDB автоматически обнаружит частые дублирующиеся предупреждения о небезопасных операторах для репликации на основе операторов. После обнаружения 10 одинаковых предупреждений MariaDB предотвратит запись того же предупреждения в журнал ошибок на следующие 5 минут.
Уровень подробности 2
По умолчанию с MariaDB 10.2.4. Если log_warnings равно 2, то печатаются несколько других типов предупреждений. Например:
- Сообщения, связанные с ошибками отказа в доступе:
[Warning] Access denied for user 'root'@'localhost' (using password: YES)
- Сообщения, связанные с прерванными соединениями из-за ошибок или таймаутов:
[Warning] Aborted connection 35 to db: 'unconnected' user: 'user1@host1' host: '192.168.1.40' (Got an error writing communication packets) [Warning] Aborted connection 36 to db: 'unconnected' user: 'user1@host2' host: '192.168.1.230' (Got an error writing communication packets) [Warning] Aborted connection 38 to db: 'db1' user: 'user2' host: '192.168.1.60' (Unknown error) [Warning] Aborted connection 51 to db: 'db1' user: 'user2' host: '192.168.1.50' (Got an error reading communication packets) [Warning] Aborted connection 52 to db: 'db1' user: 'user3' host: '192.168.1.53' (Got timeout reading communication packets)
- Сообщения, связанные с ошибками обработчика таблиц:
[Warning] Can't find record in 'tab1'. [Warning] Can't write; duplicate key in table 'tab1'. [Warning] Lock wait timeout exceeded; try restarting transaction. [Warning] The number of locks exceeds the lock table size. [Warning] Update locks cannot be acquired during a READ UNCOMMITTED transaction.
- Сообщения, связанные с файлами, используемыми для сохранения состояния репликации:
- Файл по умолчанию
master.infoили файл, настроенный опцией master_info_file. - Файл по умолчанию
relay-log.infoили файл, настроенный системной переменной relay_log_info_file.
- Файл по умолчанию
[Note] Reading Master_info: '/mariadb/data/master.info' Relay_info:'/mariadb/data/relay-log.info' [Note] Initialized Master_info from '/mariadb/data/master.info' [Note] Reading of all Master_info entries succeded [Note] Deleted Master_info file '/mariadb/data/master.info'. [Note] Deleted Master_info file '/mariadb/data/relay-log.info'.
- Сообщения о потоке выгрузки двоичного журнала мастера:
[Note] Start binlog_dump to slave_server(263316466), pos(, 4)
Уровень подробности 3
Если log_warnings равен 3, то выводятся несколько других типов предупреждений. Например:
- Сообщения, связанные со старыми параметрами языка:
[Warning] An old style --language value with language specific part detected: /usr/local/mysql/data/ [Warning] Use --lc-messages-dir without language specific part instead.
- Сообщения, связанные с прогрессом онлайн-DDL в InnoDB:
[Note] InnoDB: Online DDL : Start [Note] InnoDB: Online DDL : Start reading clustered index of the table and create temporary files [Note] InnoDB: Online DDL : End of reading clustered index of the table and create temporary files [Note] InnoDB: Online DDL : Start merge-sorting index PRIMARY (1 / 3), estimated cost : 18.0263 [Note] InnoDB: Online DDL : merge-sorting has estimated 33 runs [Note] InnoDB: Online DDL : merge-sorting current run 1 estimated 33 runs [Note] InnoDB: Online DDL : merge-sorting current run 2 estimated 17 runs [Note] InnoDB: Online DDL : merge-sorting current run 3 estimated 9 runs [Note] InnoDB: Online DDL : merge-sorting current run 4 estimated 5 runs [Note] InnoDB: Online DDL : merge-sorting current run 5 estimated 3 runs [Note] InnoDB: Online DDL : merge-sorting current run 6 estimated 2 runs [Note] InnoDB: Online DDL : End of merge-sorting index PRIMARY (1 / 3) [Note] InnoDB: Online DDL : Start building index PRIMARY (1 / 3), estimated cost : 27.0395 [Note] InnoDB: Online DDL : End of building index PRIMARY (1 / 3) [Note] InnoDB: Online DDL : Completed [Note] InnoDB: Online DDL : Start merge-sorting index ux1 (2 / 3), estimated cost : 5.7895 [Note] InnoDB: Online DDL : merge-sorting has estimated 2 runs [Note] InnoDB: Online DDL : merge-sorting current run 1 estimated 2 runs [Note] InnoDB: Online DDL : End of merge-sorting index ux1 (2 / 3) [Note] InnoDB: Online DDL : Start building index ux1 (2 / 3), estimated cost : 8.6842 [Note] InnoDB: Online DDL : End of building index ux1 (2 / 3) [Note] InnoDB: Online DDL : Completed [Note] InnoDB: Online DDL : Start merge-sorting index ix1 (3 / 3), estimated cost : 6.1842 [Note] InnoDB: Online DDL : merge-sorting has estimated 3 runs [Note] InnoDB: Online DDL : merge-sorting current run 1 estimated 3 runs [Note] InnoDB: Online DDL : merge-sorting current run 2 estimated 2 runs [Note] InnoDB: Online DDL : End of merge-sorting index ix1 (3 / 3) [Note] InnoDB: Online DDL : Start building index ix1 (3 / 3), estimated cost : 9.2763 [Note] InnoDB: Online DDL : End of building index ix1 (3 / 3) [Note] InnoDB: Online DDL : Completed
Уровень подробности 4
Если log_warnings равен 4, то выводятся несколько других типов предупреждений. Например:
- Сообщения, связанные с прерванными соединениями:
[Warning] Aborted connection 53 to db: 'db1' user: 'user2' host: '192.168.1.50' (KILLED)
- Сообщения, связанные со всеми закрытыми соединениями:
[Warning] Aborted connection 56 to db: 'db1' user: 'user2' host: '192.168.1.50' (CLOSE_CONNECTION)
- Сообщения, связанные с освобожденными соединениями, например, когда транзакция подтверждена, а completion_type установлен на
RELEASE:
[Warning] Aborted connection 58 to db: 'db1' user: 'user2' host: '192.168.1.50' (RELEASE)
Уровень подробности 9
Если log_warnings равен 9, то выводятся очень подробные предупреждения. Например:
- Сообщения об инициализации плагинов:
[Note] Initializing built-in plugins [Note] Initializing plugins specified on the command line [Note] Initializing installed plugins
log_error_verbosity в MySQL
MariaDB не поддерживает системную переменную log_error_verbosity, добавленную в MySQL 5.7.
Формат
Формат включает дату (гггг-мм-дд) и время, идентификатор потока, тип ошибки (Примечание, Предупреждение или Ошибка) и сообщение об ошибке, например:
2016-06-15 16:53:33 139651251140544 [Note] InnoDB: The InnoDB memory heap is disabled
До MariaDB 10.1.4 формат включал только дату (ггммдд) и время, тип ошибки (Примечание, Предупреждение или Ошибка) и сообщение об ошибке, например:
160615 16:53:08 [Note] InnoDB: The InnoDB memory heap is disabled
Вращение журнала ошибок на Unix и Linux
Дистрибутивы Unix и Linux предлагают утилиту logrotate, которая очень упрощает вращение файлов журналов. См. Вращение журналов на Unix и Linux для получения более подробной информации об использовании этой утилиты для вращения журнала ошибок.
Файл сообщений об ошибках
Многие сообщения об ошибках берутся из файла сообщений об ошибках, содержащего локализованные сообщения об ошибках. Если сервер не может найти этот файл при запуске, то могут появиться ошибки, подобные следующим:
[ERROR] Can't find messagefile '/usr/share/errmsg.sys'
Если эта ошибка возникает из-за того, что файл находится в пользовательском расположении, то вы можете настроить это расположение, установив системную переменную lc_messages_dir в командной строке или в группе опций сервера в группе опций в файле опций файле опций перед запуском сервера. Например:
[mariadb] ... lc_messages_dir=/usr/share/mysql/
Если вы хотите использовать другой язык для сообщений об ошибках, то вы также можете установить системную переменную lc_messages. Например:
[mariadb] ... lc_messages_dir=/usr/share/mysql/ lc_messages=en_US
См. Настройка языка сообщений об ошибках для получения дополнительной информации.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/error-log/