В MySQL имеется несколько журналов, позволяющих узнать, что происходит внутри mysqld:
| Журнал | Описание |
|---|---|
| Журнал ошибок | В нем хранятся ошибки запуска, работы или завершения работы mysqld |
| Журнал |
В нем хранится информация обо всех |
| Общий журнал запросов | В нем хранится информация об установленных соединениях и выполненных запросах |
| В нем хранятся все команды, меняющие данные; в скором времени выйдет из употребления | |
| В нем хранятся все меняющие что-либо команды. Используется для репликации | |
| Журнал медленных запросов | В нем хранятся все запросы, на выполнение которых ушло больше времени, чем указано в переменной long_query_time (или запросы, не использовавшие индексов) |
Все файлы журналов хранятся в каталоге с данными mysqld. С помощью команды FLUSH LOGS можно заставить mysqld открыть файлы журналов снова (или — в некоторых случаях — переключиться на новый файл).
Журнал ошибок содержит информацию о том, когда запускается и останавливается mysqld, а также все критические ошибки, обнаруженные в процессе работы.
В нем содержится информация о запуске и завершении работы mysqld, а также обо всех серьезных ошибках, возникших во время работы. Если произойдет неожиданное аварийное завершение работы и safe_mysqld придется перезапустить mysqld, safe_mysqld внесет в этот файл соответствующую запись. Кроме того, в этот журнал заносится предупреждение в том случае, если mysqld обнаружит таблицу, нуждающуюся в автоматической проверке или исправлении.
Все ошибки mysqld записывает в stderr, который сценарий safe_mysqld перенаправляет в файл с именем 'hostname'.err (в Windows mysqld сохраняет его в каталоге \mysql\data\mysql.err ).
В некоторых ОС в журнал включается распечатка части стека погибшего mysqld. С помощью этой информации можно определить причину сбоя.
Начиная с MySQL 4.0.10 можно указать, где именно mysqld должен сохранять -log-error[=filename]. Если имя файла не задается, то тогда mysqld будет использовать mysql-data-dir/'hostname'.err на Unix и \mysql\data\mysql.err на windows.
Если вы выполняете FLUSH LOGS старый файл будет сохранен с префиксом -old и mysqld создаст новый пустой журнал.
На старых версиях MySQL mysqld_safe, который перенаправлял вывод в файл 'hostname'.err. В старых версиях можно было изменить имя этого файла опцией -err-log=filename.
Если вы не указываете -log-error или используете опцию -console, то ошибки будут выводиться на stderr (на терминал).
В Windows вывод всегда пишется в .err -файл, если -console не была указана.
Если вы хотите знать обо всем, что происходит с mysqld, нужно запустить систему с ключом -log[=file]. После этого информация обо всех соединениях и запросах будет записываться в файл журнала (по умолчанию ему дается имя 'hostname'.log ). Этот журнал может оказаться полезным, если вы подозреваете наличие ошибки в клиентском ПО и хотите выяснить, что, по мнению mysqld, клиент передал базе.
Старые версии скрипта mysql.server (с MySQL 3.23.4 по 3.23.8) передавали safe_mysqld опцию -log (включить общий журнал запросов). Если вам нужна большая производительность при запуске MySQL в промышленной эксплуатации, вы можете удалить опцию -log из mysql.server или поменять ее на -log-bin..
Записи в журнал заносятся по мере получения mysqld запросов. Порядок их занесения может быть иным, чем порядок выполнения команд. В этом и заключается основное отличие данного журнала от
Обратите внимание:
При запуске с ключом -log-update[=file_name] mysqld создает журнал, в который заносятся все команды SQL, обновляющие данные. Если имя файла не задано, по умолчанию ему присваивается имя хоста. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными. Если у имени file_name нет расширения, mysqld даст файлу примерно такое имя: file_name.###, где ### — номер, увеличивающийся при каждом выполнении команд mysqladmin refresh, mysqladmin flush-logs, FLUSH LOGS или при перезапуске сервера.
Обратите внимание: чтобы вышеописанная схема могла работать, нельзя самостоятельно создавать файлы с тем же именем, что и у
При запуске с ключами -log или -l mysqld создает общий журнал в файле с именем hostname.log, причем перезапуски и обновления не приводят к созданию нового файла журнала (хотя существующий при таких операциях закрывается и затем открывается вновь). В таком случае скопировать его (в Unix) можно так:
mv hostname.log hostname-old.log mysqladmin flush-logs cp hostname-old.log to-backup-directory rm hostname-old.log
UPDATE или DELETE, выражение WHERE которой не находит совпадающих строк, в журнал не заносится — как и команды UPDATE, присваивающие столбцам те же значения, которые у них были до "обновления".
Запись в журнал осуществляется сразу по завершении работы запроса, но до того, как будут
При желании обновить базу в соответствии с данными file_name.### ):
shell> ls -l -t -r file_name.[0-9]* | xargs cat | mysql
ls расставляет все файлы журналов в правильном порядке.
Эта возможность может пригодиться в случае, если возникнет необходимость (в результате серьезного сбоя) привести базу в соответствие с резервной копией и затем повторить все обновления, произошедшие с момента создания копии и до сбоя.
Бинарный журнал применяется и при репликации подчиненного сервера (slave) с головного (master).
При запуске с ключом -log-bin[=file_name] mysqld создает файл журнала, в который вносятся данные обо всех обновляющих данные командах SQL. Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -bin. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге данных.
При вводе расширения в имя файла (например: -log-bin=filename.extension ) это расширение удаляется без предупреждения.
К имени файла mysqld прибавляет специальное расширение — номер, увеличивающийся при каждом выполнении команд mysqladmin refresh, mysqladmin flush-logs, FLUSH LOGS или перезапуске сервера. При достижении файлом журнала максимального размера, заданного в параметре max_binlog_size, автоматически создается новый. Все неактивные файлы RESET MASTER.
На выбор данных, записываемых в журнал, влияют следующие настройки mysqld:
| Опция | Описание |
|---|---|
binlog-do- db=database_name |
Указывает головному серверу что он должен журналировать обновления в двоичный журнал если текущая (т.е. выбранная) база данных — это 'database_name'. Остальные базы данных, особо не отмеченные, игнорируются. Имейте в виду, что если вы используете эту опцию, то вам следует делать обновления только в этой базе данных. (пример: binlog-do-db=some_database ) |
binlog-ignore- db=database_name |
Заставляет отказаться от занесения в binlog-ignore-db=some_database ) |
Чтобы была возможность определить, какие файлы журналов используются в данный момент, mysqld создает и индексный файл, содержащий имена всех находящихся в работе файлов. По умолчанию ему присваивается то же имя, что и файлу журнала, но с расширением .index. Имя этого файла можно изменить с помощью параметра -log-bin-index=[filename].
При использовании репликации удалять старые файлы журналов не стоит до тех пор, пока вы не будете уверены в том, что они никогда не понадобятся ни одной зависимой базе. Добиться такого результата можно, запуская команду mysqladmin flush-logs раз в день и затем удаляя все журналы, созданные более 3 дней назад.
Работать с файлами mysqlbinlog. Обновить MySQL в соответствии с записями в журнале можно так:
shell> mysqlbinlog log-file | mysql -h server_name
С помощью программы mysqlbinlog можно даже считывать файлы журнала прямо с удаленного сервера MySQL!
При запуске mysqlbinlog с ключом -help на экран выводится дополнительная информация по работе с этой программой.
При работе с настройками BEGIN [WORK] или SET AUTOCOMMIT=0 для резервного копирования нужно использовать
Занесение данных в
Обновления нетранзакционных таблиц сохраняются в двоичном журнале немедленно после выполнения. Все обновления ( UPDATE, DELETE или INSERT ), изменяющие данные в транзакционных таблицах (например, BDB-таблицу), находятся в кэше до вызова COMMIT. В этот момент mysqld пишет всю транзакцию целиком в двоичный журнал перед тем, как выполнить COMMIT. Каждый поток при запуске будет создавать буфер размером binlog_cache_size для буферизации запросов. Если запрос превышает этот размер, тогда поток откроет временный файл для сохранения транзакции. Временный файл будет удален при выходе потока.
При запуске каждого потока создается буфер запросов, объем которого соответствует значению параметра binlog_cache_size. Если запрос не помещается в буфере, поток создаст временный файл для кэша. Временный файл удаляется по завершении работы потока.
Параметр max_binlog_cache_size (по умолчанию 4Гб) позволяет ограничить общий объем памяти, используемой для кэширования мультитранзакционного запроса. Если транзакция больше этого — будет произведен откат.
При использовании CREATE ... SELECT и INSERT ... SELECT. Это сделано специально — для того, чтобы обеспечить возможность создания точной копии таблиц путем объединения резервной копии с журналом.
При запуске с параметром -log-slow-queries[=file_name] mysqld создает файл журнала, в котором сохраняются данные обо всех командах SQL, на выполнение которых ушло больше времени, чем указано в значении параметра long_query_time. Время, уходящее на первоначальную блокировку таблиц, не входит во время исполнения запроса.
Занесение данных в журнал происходит сразу по завершении исполнения запроса и снятия блокировок. Таким образом, порядок расположения записей может отличаться от порядка выполнения запросов.
Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -slow.log. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными.
Этот журнал позволяет определить запросы, на выполнение которых ушло слишком много времени, — а, значит, и обнаружить основных кандидатов на оптимизацию. Конечно, при достижении журналом значительного объема эта задача усложняется. В таком случае журнал можно пропустить через команду mysqldumpslow и получить краткий отчет о запросах, попавших в список.
При использовании ключа -log-long-format на экран выводятся и запросы, не работающие с индексами.
В MySQL предусмотрено наличие нескольких файлов журналов, позволяющих следить за всеми аспектами работы системы. Правда, иногда приходится проверять, не занимают ли журналы лишнего места, и удалять ненужные.
При работе с
В системе Linux ( Red Hat ) для этого можно использовать сценарий mysql-log-rotate. При установке MySQL с дистрибутива RPM этот сценарий устанавливается автоматически. Обратите внимание: использовать журнал для репликации необходимо с максимальной аккуратностью!
В других ОС вы можете самостоятельно создать небольшой сценарий для обработки журналов, запускаемый из cron.
Заставить MySQL создать новый файл журнала можно с помощью команды mysqladmin flush-logs или SQL-команды FLUSH LOGS. При работе с MySQL версии 3.21 пользоваться можно только командой mysqladmin refresh.
Эта команда выполняет следующие действия.
-log ) или журнал медленных запросов ( -log-slow-queries ), файл журнала ( mysql.log и `hostname`-slow.log по умолчанию) закрывается и открывается вновь.-log-update ), файл журнала закрывается, после чего создается новый файл с большим номером.При использовании одного
shell> cd mysql-data-directory shell> mv mysql.log mysql.old shell> mysqladmin flush-logs
а затем сделать резервную копию файла mysql.old и удалить его.
В MySQL имеется несколько журналов, позволяющих узнать, что происходит внутри mysqld:
| Журнал | Описание |
|---|---|
| Журнал ошибок | В нем хранятся ошибки запуска, работы или завершения работы mysqld |
| Журнал |
В нем хранится информация обо всех |
| Общий журнал запросов | В нем хранится информация об установленных соединениях и выполненных запросах |
| В нем хранятся все команды, меняющие данные; в скором времени выйдет из употребления | |
| В нем хранятся все меняющие что-либо команды. Используется для репликации | |
| Журнал медленных запросов | В нем хранятся все запросы, на выполнение которых ушло больше времени, чем указано в переменной long_query_time (или запросы, не использовавшие индексов) |
Все файлы журналов хранятся в каталоге с данными mysqld. С помощью команды FLUSH LOGS можно заставить mysqld открыть файлы журналов снова (или — в некоторых случаях — переключиться на новый файл).
Журнал ошибок содержит информацию о том, когда запускается и останавливается mysqld, а также все критические ошибки, обнаруженные в процессе работы.
В нем содержится информация о запуске и завершении работы mysqld, а также обо всех серьезных ошибках, возникших во время работы. Если произойдет неожиданное аварийное завершение работы и safe_mysqld придется перезапустить mysqld, safe_mysqld внесет в этот файл соответствующую запись. Кроме того, в этот журнал заносится предупреждение в том случае, если mysqld обнаружит таблицу, нуждающуюся в автоматической проверке или исправлении.
Все ошибки mysqld записывает в stderr, который сценарий safe_mysqld перенаправляет в файл с именем 'hostname'.err (в Windows mysqld сохраняет его в каталоге \mysql\data\mysql.err ).
В некоторых ОС в журнал включается распечатка части стека погибшего mysqld. С помощью этой информации можно определить причину сбоя.
Начиная с MySQL 4.0.10 можно указать, где именно mysqld должен сохранять -log-error[=filename]. Если имя файла не задается, то тогда mysqld будет использовать mysql-data-dir/'hostname'.err на Unix и \mysql\data\mysql.err на windows.
Если вы выполняете FLUSH LOGS старый файл будет сохранен с префиксом -old и mysqld создаст новый пустой журнал.
На старых версиях MySQL mysqld_safe, который перенаправлял вывод в файл 'hostname'.err. В старых версиях можно было изменить имя этого файла опцией -err-log=filename.
Если вы не указываете -log-error или используете опцию -console, то ошибки будут выводиться на stderr (на терминал).
В Windows вывод всегда пишется в .err -файл, если -console не была указана.
Если вы хотите знать обо всем, что происходит с mysqld, нужно запустить систему с ключом -log[=file]. После этого информация обо всех соединениях и запросах будет записываться в файл журнала (по умолчанию ему дается имя 'hostname'.log ). Этот журнал может оказаться полезным, если вы подозреваете наличие ошибки в клиентском ПО и хотите выяснить, что, по мнению mysqld, клиент передал базе.
Старые версии скрипта mysql.server (с MySQL 3.23.4 по 3.23.8) передавали safe_mysqld опцию -log (включить общий журнал запросов). Если вам нужна большая производительность при запуске MySQL в промышленной эксплуатации, вы можете удалить опцию -log из mysql.server или поменять ее на -log-bin..
Записи в журнал заносятся по мере получения mysqld запросов. Порядок их занесения может быть иным, чем порядок выполнения команд. В этом и заключается основное отличие данного журнала от
Обратите внимание:
При запуске с ключом -log-update[=file_name] mysqld создает журнал, в который заносятся все команды SQL, обновляющие данные. Если имя файла не задано, по умолчанию ему присваивается имя хоста. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными. Если у имени file_name нет расширения, mysqld даст файлу примерно такое имя: file_name.###, где ### — номер, увеличивающийся при каждом выполнении команд mysqladmin refresh, mysqladmin flush-logs, FLUSH LOGS или при перезапуске сервера.
Обратите внимание: чтобы вышеописанная схема могла работать, нельзя самостоятельно создавать файлы с тем же именем, что и у
При запуске с ключами -log или -l mysqld создает общий журнал в файле с именем hostname.log, причем перезапуски и обновления не приводят к созданию нового файла журнала (хотя существующий при таких операциях закрывается и затем открывается вновь). В таком случае скопировать его (в Unix) можно так:
mv hostname.log hostname-old.log mysqladmin flush-logs cp hostname-old.log to-backup-directory rm hostname-old.log
UPDATE или DELETE, выражение WHERE которой не находит совпадающих строк, в журнал не заносится — как и команды UPDATE, присваивающие столбцам те же значения, которые у них были до "обновления".
Запись в журнал осуществляется сразу по завершении работы запроса, но до того, как будут
При желании обновить базу в соответствии с данными file_name.### ):
shell> ls -l -t -r file_name.[0-9]* | xargs cat | mysql
ls расставляет все файлы журналов в правильном порядке.
Эта возможность может пригодиться в случае, если возникнет необходимость (в результате серьезного сбоя) привести базу в соответствие с резервной копией и затем повторить все обновления, произошедшие с момента создания копии и до сбоя.
Бинарный журнал применяется и при репликации подчиненного сервера (slave) с головного (master).
При запуске с ключом -log-bin[=file_name] mysqld создает файл журнала, в который вносятся данные обо всех обновляющих данные командах SQL. Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -bin. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге данных.
При вводе расширения в имя файла (например: -log-bin=filename.extension ) это расширение удаляется без предупреждения.
К имени файла mysqld прибавляет специальное расширение — номер, увеличивающийся при каждом выполнении команд mysqladmin refresh, mysqladmin flush-logs, FLUSH LOGS или перезапуске сервера. При достижении файлом журнала максимального размера, заданного в параметре max_binlog_size, автоматически создается новый. Все неактивные файлы RESET MASTER.
На выбор данных, записываемых в журнал, влияют следующие настройки mysqld:
| Опция | Описание |
|---|---|
binlog-do- db=database_name |
Указывает головному серверу что он должен журналировать обновления в двоичный журнал если текущая (т.е. выбранная) база данных — это 'database_name'. Остальные базы данных, особо не отмеченные, игнорируются. Имейте в виду, что если вы используете эту опцию, то вам следует делать обновления только в этой базе данных. (пример: binlog-do-db=some_database ) |
binlog-ignore- db=database_name |
Заставляет отказаться от занесения в binlog-ignore-db=some_database ) |
Чтобы была возможность определить, какие файлы журналов используются в данный момент, mysqld создает и индексный файл, содержащий имена всех находящихся в работе файлов. По умолчанию ему присваивается то же имя, что и файлу журнала, но с расширением .index. Имя этого файла можно изменить с помощью параметра -log-bin-index=[filename].
При использовании репликации удалять старые файлы журналов не стоит до тех пор, пока вы не будете уверены в том, что они никогда не понадобятся ни одной зависимой базе. Добиться такого результата можно, запуская команду mysqladmin flush-logs раз в день и затем удаляя все журналы, созданные более 3 дней назад.
Работать с файлами mysqlbinlog. Обновить MySQL в соответствии с записями в журнале можно так:
shell> mysqlbinlog log-file | mysql -h server_name
С помощью программы mysqlbinlog можно даже считывать файлы журнала прямо с удаленного сервера MySQL!
При запуске mysqlbinlog с ключом -help на экран выводится дополнительная информация по работе с этой программой.
При работе с настройками BEGIN [WORK] или SET AUTOCOMMIT=0 для резервного копирования нужно использовать
Занесение данных в
Обновления нетранзакционных таблиц сохраняются в двоичном журнале немедленно после выполнения. Все обновления ( UPDATE, DELETE или INSERT ), изменяющие данные в транзакционных таблицах (например, BDB-таблицу), находятся в кэше до вызова COMMIT. В этот момент mysqld пишет всю транзакцию целиком в двоичный журнал перед тем, как выполнить COMMIT. Каждый поток при запуске будет создавать буфер размером binlog_cache_size для буферизации запросов. Если запрос превышает этот размер, тогда поток откроет временный файл для сохранения транзакции. Временный файл будет удален при выходе потока.
При запуске каждого потока создается буфер запросов, объем которого соответствует значению параметра binlog_cache_size. Если запрос не помещается в буфере, поток создаст временный файл для кэша. Временный файл удаляется по завершении работы потока.
Параметр max_binlog_cache_size (по умолчанию 4Гб) позволяет ограничить общий объем памяти, используемой для кэширования мультитранзакционного запроса. Если транзакция больше этого — будет произведен откат.
При использовании CREATE ... SELECT и INSERT ... SELECT. Это сделано специально — для того, чтобы обеспечить возможность создания точной копии таблиц путем объединения резервной копии с журналом.
При запуске с параметром -log-slow-queries[=file_name] mysqld создает файл журнала, в котором сохраняются данные обо всех командах SQL, на выполнение которых ушло больше времени, чем указано в значении параметра long_query_time. Время, уходящее на первоначальную блокировку таблиц, не входит во время исполнения запроса.
Занесение данных в журнал происходит сразу по завершении исполнения запроса и снятия блокировок. Таким образом, порядок расположения записей может отличаться от порядка выполнения запросов.
Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -slow.log. Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными.
Этот журнал позволяет определить запросы, на выполнение которых ушло слишком много времени, — а, значит, и обнаружить основных кандидатов на оптимизацию. Конечно, при достижении журналом значительного объема эта задача усложняется. В таком случае журнал можно пропустить через команду mysqldumpslow и получить краткий отчет о запросах, попавших в список.
При использовании ключа -log-long-format на экран выводятся и запросы, не работающие с индексами.
В MySQL предусмотрено наличие нескольких файлов журналов, позволяющих следить за всеми аспектами работы системы. Правда, иногда приходится проверять, не занимают ли журналы лишнего места, и удалять ненужные.
При работе с
В системе Linux ( Red Hat ) для этого можно использовать сценарий mysql-log-rotate. При установке MySQL с дистрибутива RPM этот сценарий устанавливается автоматически. Обратите внимание: использовать журнал для репликации необходимо с максимальной аккуратностью!
В других ОС вы можете самостоятельно создать небольшой сценарий для обработки журналов, запускаемый из cron.
Заставить MySQL создать новый файл журнала можно с помощью команды mysqladmin flush-logs или SQL-команды FLUSH LOGS. При работе с MySQL версии 3.21 пользоваться можно только командой mysqladmin refresh.
Эта команда выполняет следующие действия.
-log ) или журнал медленных запросов ( -log-slow-queries ), файл журнала ( mysql.log и `hostname`-slow.log по умолчанию) закрывается и открывается вновь.-log-update ), файл журнала закрывается, после чего создается новый файл с большим номером.При использовании одного
shell> cd mysql-data-directory shell> mv mysql.log mysql.old shell> mysqladmin flush-logs
а затем сделать резервную копию файла mysql.old и удалить его.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.