В статье будут рассмотрены параметры, отвечающие за ведение логов, их формат и прочие опции логгирования.
Тестовый стенд: mysql 5.5.19
binlog_cache_size: Размер кэша, используемого для хранения SQL-операторов бинарного журнала регистраций во время транзакций. Данный кэш выделяется для каждого клиента, если сервер использует любую из транзакционных таблиц ( BDB, InnoBD ) и на сервере включена поддержка бинарного журнала регистраций ( параметр запуска –log-bin ). При частом использовании объемных транзакций со множеством операторов, значение данной переменной рекомендуется увеличить.
binlog_direct_non_transactional_updates: включает запись нетранзакционных прямо в binlog, минуя транзакционный кешь. Работает только, если репликация statement-based.
binlog_format: Данная переменная определяет тип репликации и имеет три возможных параметра:
STATEMENT – репликация, основанная на анализе выполняемых запросов
ROW – репликация, основанная на изменении записей таблиц. ( начиная с версии 5.1.5 )
MIXED – смешанный тип, по умолчанию используется STATEMENT-репликация с переключениями в ROW-режим. ( начиная с версии 5.1.8 )
Значение можно установить при запуске сервера, параметром –binlog-format.
binlog_stmt_cache_size: Определяет размер кеша binlog для хранения нетранзакционных операций
binlog_stmt_cache_disk_use: Используются при переполнении binlog_stmt_cache_size и задаёт размер файла для храния их на диске
expire_logs_days: Переменная задает срок хранения, в днях, бинарных логов. Если установлено значение 0, бинарные логи не удаляются. Переменная введена с версии MySQL 4.1.0.
general_log: Данная переменная отображает, включен или выключен лог запросов, зависит от того, был MySQL сервер запущен с параметром –log или без него. Появилась с версии 5.1.12.
general_log_file: Путь в лог-файлу запросов. Может быть изменена при запуске MySQL сервера, с помощью параметра –log. Введена с версии MySQL 5.1.12.
innodb_flush_log_at_trx_commit: Режим записи логов на диск.
Значение “1″ означает, что любая завершенная транзакция будет синхронно сбрасывать лог на диск.
Значение “2″ делает то же самое, только сбрасывает лог не на диск, а в кеш операционной системы. Это значение подойдет в большинстве случаев, т.к. не выполняет дорогой операции записи после каждой транзакции. При этом лог пишется на диск с задержкой в несколько секунд, что весьма безопасно с точки зрения сохранности данных.
Значение “0″ даст наибольшую производительность. В этом случае буфер будет сбрасывать в лог файл независимо от транзакций. Устанавливайте этот параметр в “0″ на свой риск, т.к. в этом случае риск потери данных возрастает.
innodb_locks_unsafe_for_binlog: эта опция во включенном состоянии снимает очень много локов при конкурентной записи-чтении в таблицы. Цена вопроса – не обеспечивается консистентный снапшот данных на время всей транзакции.
innodb_log_buffer_size: Размер буфера, который в InnoDB используется для записи информации файлов журналов на диск. Разумный диапазон значений составляет от 1М до половины общего размера файлов журналов. Большой буфер журналов позволяет осуществлять объемные транзакции без записи журнала на диск до завершения транзакции. Поэтому если ваши транзакции отличаются значительными объемами, увеличение буфера журналов сократит количество операций ввода/вывода диска.
innodb_log_file_size: Размер каждого файла журнала в группе журналов (указывается в мегабайтах). Разумный диапазон значений составляет от 1М до 1/N от размера буферного пула, приведенного ниже, где N – количество файлов журналов в группе. Чем больше это значение, тем меньше требуется сбросов на диск информации из буферного пула, что сокращает количество дисковых операций ввода/вывода. Однако в случае сбоя восстановление при больших размерах файлов журналов займет больше времени. Общий размер файлов журналов на 32-разрядных компьютерах должен быть < 4 Гб.
innodb_log_files_in_group: Количество файлов журналов в группе журналов. InnoDB производит запись в файлы по круговому способу. Для этого параметра рекомендуется установить значение “3”.
innodb_log_group_home_dir: Путь к каталогу файлов журналов InnoDB.
innodb_mirrored_log_groups: Количество идентичных копий групп журналов, которые хранятся для базы данных. На данный момент этому параметру должно быть присвоено значение 1.
log: Регистрация всех запросов в общем журнале запросов.
ON – включено
OFF – выключено
log_bin: Регистрация всех запросов в бинарном журнале.
ON – включено
OFF – выключено
log_bin_trust_function_creators: Данная переменная применяется когда включена регистрация запросов в журнальных файлах, она позволяет предотвратить попадание туда, небезопасных хранимых процедур.
log_error: Переменная устанавливает путь к лог файлу ошибок.
log_output: Переменная задает формат хранения общего лога запросов и лога медленных запросов. Может принимать одно из трех значений:
TABLE – записи журналов хранятся в таблице
FILE – записи журналов хранятся в файлах
NONE – отключить журналирование
Введена с версии MySQL 5.1.6.
log_queries_not_using_indexes: Включать-ли в лог медленных запросов, запросы не использующие индексы.
ON – включено
OFF – выключено
Введена с версии MySQL 5.1.11.
log_slave_updates: Переменная определяет, должны-ли обновления, получаемые подчиненным сервером в процессе репликации, регистрироваться в собственном бинарном журнале подчиненного сервера. Данная переменная работает, только если на подчиненном сервере активизировано ведение бинарного лога.
log_slow_queries: Регистрировать-ли медленные запросы в соответствующем лог файле. Медленным считается запрос, выполняющийся дольше значения, установленного в переменной long_query_time.
log_warnings: Данная переменная определяет, выводить-ли дополнительные предупреждения во время старта и работы MySQL сервера. Значение по-молчанию – 1. При значении больше единицы, ошибки в лог файл не заносятся.
max_binlog_cache_size: Размер кэша для транзакций с большим количеством операторов. В случае нехватки, будет выдано соответствующее сообщение об ошибке ( “Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes of storage” ).
max_binlog_size: Данная переменная задает максимальный размер бинарного лог файла. При достижении размером файла, данного значения, будет открыт новый файл лога.
max_binlog_stmt_cache_size: Тоже, что и max_binlog_cache_size но для НЕтранзакционных запросов.
max_relay_log_size: Размер журнала ретрансляции на подчиненном сервере репликации. При достижении файлом размера, заданного этой переменной, будет создан новый файл журнала. Возможные значения – от 4096 байт до 1 гигабайта.
relay_log: задаёт путь к файлу для записи бинарных логов на slave
relay_log_index: задаёт путь к файлу для записи индексов на slave
relay_log_info_file: задаёт путь к файлу для записи статуса slave’a
relay_log_purge: Управление режимом удаления старых журнальных файлов.
ON – режим очистки включен
OFF – режим очистки выключен
Введена с версии MySQL 4.1.1.
relay_log_recovery: Включает/выключает автоматическое восстановление журнала relay_log
relay_log_space_limit:
slow_query_log: Управление логгированием медленных запросов. Можно использовать параметр запуска –log-slow-queries.
ON – включить
OFF – выключить
Введена с версии 5.1.12
slow_query_log_file: Имя для файла медленных запросов. Можно установить при запуске MySQL сервера, параметром –log-slow-queries.
Введена с версии 5.1.12
sql_log_bin: Разрешает/запрещает ведения бинарных логов
sql_log_off: Разрешает/запрещает ведения обычных логов
sync_binlog: Синхронизация данных в памяти с жестким диском. Включение данной переменной снижает вероятность потери данных, но плата за это – некоторое снижение производительности.
0 – не производить синхронизацию.
1 – синхронизировать данные после записи в журнал команды sync_binlog.
Введена с версии MySQL 4.1.3.
sync_relay_log:
sync_relay_log_info:
Приложение.
1) Ротируем бинарные логи (работает только, если включён параметр –log-bin)
Очистить все логи старше 7 дней
mysql> PURGE BINARY LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 7 DAY);
Очистить все логи до 2008-01-01 00:00:00
mysql> PURGE MASTER LOGS BEFORE '2008-01-01 00:00:00';
Очистить все логи, старше лога ‘backup-master.001271’
mysql> PURGE BINARY LOGS TO 'backup-master.001271'
0 3 * * mon mysql -uroot -e "PURGE BINARY LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 7
2) Ротируем error лог
# mv mysql.log mysql.old
# mv mysql-slow.log mysql-slow.old
# mysqladmin -p flush-logs