Обратите внимание: журнал обновлений (update) заменен бинарным журналом (binary) (see Раздел 4.9.4, «Бинарный журнал обновлений». С этим журналом можно производить те же операции, что и с журналом обновлений.
При запуске с ключом
--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 -1 -t -r file_name.[0-9]* | xargs cat | mysql
ls расставляет все файлы
журналов в правильном порядке.
Эта возможность может пригодиться в случае, если возникнет необходимость (в результате серьезного сбоя) привести базу в соответствие с резервной копией и затем повторить все обновления, произошедшие с момента создания копии и до сбоя.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
