Журналы (logs) в MySQL
В MySQL на данный момент существуют 4 вида журнала (лога) и при достаточно серьёзной работе с базами на MySQL необходимо за ними следить. Например, бинарный лог у нас за сутки набирает около гигабайта, а размер жёсткого диска на сервере ограничен и за ними надо следить. Однако следить следует не только за бинарным логом, так как логи (журналы) в MySQL могут принести немалую пользу.
Итак, какие логи ведёт MySQL? Это:
1. бинарный лог (binary log)
2. лог ошибок (error log)
3. лог медленный запросов (slow query log)
4. лог запросов (general query log)
5. лог репликаций (relay log)
Каждый из них по-своему полезен.
Бинарный лог
В первую очередь полезен с точки зрения репликаций. Можно его бэкапить, можно использовать для восстановления данных на более точное время при использовании бэкапов. Лог содержит все команды изменений базы данных, выборки (select, show) не сохраняет, для таблиц, поддерживающих транзакции (BDB, InnoDB) запись в лог выполняется только после выполнения команды COMMIT . Для лога можно указывать список баз данных, которые надо логировать и список баз данных, которые не надо логировать. В более ранних версиях вместо бинарного лога использовался лог обновлений. Использование бинарного лога снижает производительность базы данных, однако его польза настолько велика, что крайне не рекомендуется его отключать. Рекомендуется защищать бинарный лог паролем, так как он может данные также о паролях пользователей. При достижении максимально разрешённого размера (1 гиг по умолчанию) создаётся следующий файл. Каждый новый файл имеет порядковый номер после имени.
Содержание бинарного лога можно посмотреть с помощью утилиты mysqlbinlog.
Основные настройки в my.cnf
Местоположение лога:
log_bin = /var/log/mysql/mysql-bin.log
Максимальный размер, минимум 4096 байт, по умолчанию 1073741824 байт (1 гигабайт):
max_binlog_size= 500M
Сколько дней хранится:
expire_logs_days = 3
Наиболее часто использующиеся команды
Повторение действий после операции восстановления:
shell> mysqlbinlog log_file | mysql -h server_name
Удаление логов до определённого файла:
PURGE BINARY LOGS TO ‘mysql-bin.000’;
Удаление логов до определённой даты:
PURGE BINARY LOGS BEFORE ‘YYYY-MM-DD hh:mm:ss’;
Лог ошибок
Особенно полезен в случаях сбоев. Лог содержит информацию об остановках, запусках сервера, а также сообщения о критических ошибках. Может содержать сообщения с предупреждениями (warnings).
Основные настройки в my.cnf
Местоположение лога:
log_error = /var/log/mysql/mysql.err
Флаг, указывающий стоит ли записывать в лог в том числе предупреждения (записываются, если значение больше нуля):
log_warnings = 1
Наиболее часто использующиеся команды
Переход к новому файл лога:
shell> mysqladmin flush-logs
Копирование старой части лога (необходимо, так как в случае повторного выполнения fluch он будет удалён):
shell> mv host_name.err-old backup-directory
Лог медленных запросов
Если есть подозрение, что приложение работает медленно из-за неэффективных запросов к базе, то в первую очередь следует проверить лог медленных запросов. В случае оптимизации запросов этот лог поможет выяснить, что необходимо оптимизировать в первую очередь.
Основные настройки в my.cnf
Местоположение лога:
log_slow_queries = /var/log/mysql/mysql_slow.log
Со скольки секунд выполнения запрос считается медленным, минимальное значений — 1 секунда, по умолчанию 10 секунд:
long_query_time = 10
Если надо логировать запросы, которые не используют индексы, надо добавить строку:
log-queries-not-using-indexes
Если надо вести лог медленных команд, таких как OPTIMIZE TABLE , ANALYZE TABLE и ALTER TABLE :
log-slow-admin-statements
Лог запросов
Лог содержит информацию о подключениях и отключениях клиентов, а также все SQL запросы, которые были получены. Фактически, это временный лог. Обычно лог удаляется автоматически сразу после выполнения всех команд (т.е. как только он стал ненужным). Лог ведётся в соответствии с очередность поступления запросов. Этот лог содержит все запросы к базе данных (независимо от приложений и пользователей). Так что если есть желание (или необходимость) проанализировать, какие необходимы индексы, какие запросы могли бы оптимизированы, то этот лог как раз может помочь в таких целях. Лог полезен не только для случаев, когда необходимо знать, какие запросы выполняются с базой данных, но и в случаях, когда ясно, что возникла ошибка с базой данных, но неизвестно, какой запрос был отправлен к базе данных (например, в случае генерации динамического SQL-а). Рекомендуется защищать лог запросов паролем, так как он может данные также о паролях пользователей.
Основные настройки в my.cnf
Местоположение лога:
log = /var/log/mysql/mysql.log
Наиболее часто использующиеся команды
В отличии от других логов, перезагрузка сервера и команда fluch не инициирует создание нового лога. Но это можно сделать вручную:
shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> mv host_name-old.log backup-directory
Лог репликаций
Здесь логируются изменения, выполненные по инициации сервера репликаций. Как и бинарный лог, состоит из файлов, каждый из которых пронумерован.
Основные настройки в my.cnf
Местоположение лога:
relay-log = /var/log/mysql/mysql-relay-bin.log
Максимальный размер:
max_relay_log_size = 500М
Наиболее часто использующиеся команды
Начать новый файл лога можно только при остановленном дополнительном (slave) сервере:
shell> cat new_relay_log_name.index >> old_relay_log_name.index
shell> mv old_relay_log_name.index new_relay_log_name.index
Команда fluch logs инициирует ротацию лога.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Открытие средства просмотра файла журнала Open Log File Viewer
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)
Средство просмотра журнала используется в среде SQL Server Management Studio SQL Server Management Studio для доступа к сведениям об ошибках и событиях, записываемых в следующие журналы. You can use Log File Viewer in SQL Server Management Studio SQL Server Management Studio to access information about errors and events that are captured in the following logs:
Коллекция аудита Audit Collection
Сбор данных Data Collection
Database Mail Database Mail
Журнал заданий Job History
SQL Server SQL Server
Агент SQL Server SQL Server Agent
События Windows (К ним можно получить доступ с помощью программы просмотра событий Windows.) Windows events (These Windows events can also be accessed from Event Viewer.)
Начиная с SQL Server 2012 (11.x) SQL Server 2012 (11.x) , в списке «Зарегистрированные серверы» можно просматривать файлы журналов SQL Server SQL Server на локальных и удаленных экземплярах SQL Server SQL Server . Beginning in SQL Server 2012 (11.x) SQL Server 2012 (11.x) , you can use Registered Servers to view SQL Server SQL Server log files from local or remote instances of SQL Server SQL Server . В списке «Зарегистрированные серверы» можно просматривать файлы журнала как для экземпляров в сети, так и для экземпляров вне сети. By using Registered Servers, you can view the log files when the instances are either online or offline. Дополнительные сведения о доступе в сети см. далее в разделе «Просмотр файлов журнала в сети с зарегистрированных серверов». For more information about online access, see the procedure «To view online log files from Registered Servers» later in this topic. Дополнительные сведения о доступе к автономным файлам журнала SQL Server SQL Server см. в разделе Просмотр автономных файлов журнала. For more information about how to access offline SQL Server SQL Server log files, see View Offline Log Files.
Открыть средство просмотра журнала можно несколькими способами (в зависимости от того, какие сведения нужно просмотреть). You can open Log File Viewer in several ways, depending on the information that you want to view.
Permissions Permissions
Чтобы получить доступ к файлам журнала для экземпляров SQL Server SQL Server , которые находятся в сети, требуется членство в предопределенной роли сервера securityadmin. To access log files for instances of SQL Server SQL Server that are online, this requires membership in the securityadmin fixed server role.
Чтобы получить доступ к файлам журнала для экземпляров SQL Server SQL Server , которые находятся вне сети, необходим доступ на чтение к пространству WMI Root\Microsoft\SqlServer\ComputerManagement10 , а также к папке, в которой хранятся файлы журнала. To access log files for instances of SQL Server SQL Server that are offline, you must have read access to both the Root\Microsoft\SqlServer\ComputerManagement10 WMI namespace, and to the folder where the log files are stored. Дополнительные сведения см. в подразделе «Безопасность» раздела Просмотр автономных файлов журнала. For more information, see the Security section of the topic View Offline Log Files.
Безопасность Security
Требуется членство в предопределенной роли сервера securityadmin. Requires membership in the securityadmin fixed server role.
Просмотр файлов журнала View Log Files
Просмотр журналов, связанных с общими операциями SQL Server To view logs that are related to general SQL Server activity
В обозревателе объектов разверните узел Управление. In Object Explorer, expand Management.
Выполните одно из приведенных ниже действий. Do either of the following:
Щелкните правой кнопкой мыши Журналы SQL Server, выберите Просмотр, а затем Журнал SQL Server или Журнал SQL Server и Windows. Right-click SQL Server Logs, point to View, and then click either SQL Server Log or SQL Server and Windows Log.
Разверните узел Журналы SQL Server, щелкните правой кнопкой мыши любой файл журнала и выберите Просмотреть журнал SQL Server. Expand SQL Server Logs, right-click any log file, and then click View SQL Server Log. Можно также дважды щелкнуть любой файл журнала. You can also double-click any log file.
Доступны журналы Компонент Database Mail, SQL Server, Агент SQL Serverи Windows NT. The logs include Database Mail, SQL Server, SQL Server Agent, and Windows NT.
Просмотр журналов, связанных с заданиями To view logs that are related to jobs
В обозревателе объектов откройте Агент SQL Server, щелкните правой кнопкой мыши Заданияи выберите Просмотр журнала. In Object Explorer, expand SQL Server Agent, right-click Jobs, and then click View History.
Доступны журналы Компонент Database Mail, Журнал заданийи Агент SQL Server. The logs include Database Mail, Job History, and SQL Server Agent.
Просмотр журналов, связанных с планами обслуживания To view logs that are related to maintenance plans
В обозревателе объектов раскройте узел Управление, щелкните правой кнопкой мыши Планы обслуживанияи выберите Просмотр журнала. In Object Explorer, expand Management, right-click Maintenance Plans, and then click View History.
Доступны журналы Компонент Database Mail, Журнал заданий, Планы обслуживания, План удаленного обслуживанияи Агент SQL Server. The logs include Database Mail, Job History, Maintenance Plans, Remote Maintenance Plans, and SQL Server Agent.
Просмотр журналов, связанных с коллекциями данных To view logs that are related to Data Collection
В обозревателе объектов раскройте узел Управление, щелкните правой кнопкой мыши Сбор данныхи выберите команду Просмотреть журналы. In Object Explorer, expand Management, right-click Data Collection, and then click View Logs.
Доступны журналы Сбор данных, Журнал заданийи Агент SQL Server. The logs include Data Collection, Job History, and SQL Server Agent.
Просмотр журналов, связанных с компонентом Database Mail To view logs that are related to Database Mail
В обозревателе объектов раскройте узел Управление, щелкните правой кнопкой мыши Компонент Database Mailи выберите команду Просмотреть журнал компонента Database Mail. In Object Explorer, expand Management, right-click Database Mail, and then click View Database Mail Log.
Доступны журналы Компонент Database Mail, Журнал заданий, Планы обслуживания, Планы удаленного обслуживания, SQL Server, Агент SQL Serverи Windows NT. The logs include Database Mail, Job History, Maintenance Plans, Remote Maintenance Plans, SQL Server, SQL Server Agent, and Windows NT.
Просмотр журналов, связанных с коллекциями аудитов To view logs that are related to audits collections
В обозревателе объектов разверните узел Безопасность, затем узел Аудиты, щелкните правой кнопкой мыши аудит и выберите команду Просмотреть журналы. In Object Explorer, expand Security, expand Audits, right-click an audit, and then click View Audit Logs.
Доступны журналы Коллекция аудитов и Windows NT. The logs include Audit Collection and Windows NT.
Просмотр журналов, связанных с коллекциями аудитов To view logs that are related to audits collections
В обозревателе объектов разверните узел Безопасность, затем узел Аудиты, щелкните правой кнопкой мыши аудит и выберите команду Просмотреть журналы. In Object Explorer, expand Security, expand Audits, right-click an audit, and then click View Audit Logs.
Доступны журналы Коллекция аудитов и Windows NT. The logs include Audit Collection and Windows NT.