|
Программирование >> Создание клиентов mysql
УСТРАНЕНИЕ ПОСЛЕДСТВИЙ КАТАСТРОФ В этой главе... Проверка и восстановление таблиц Резервное копирование и восстановление Вэтой главе рассказывается о том, как предотвратить катастрофу и как устранить ее последствия, если все же случилось непоправимое. Рассматриваются вопросы поиска повреждений в таблицах и их восстановления, а также методы создания резервн1х копий и последующей работы с ними. Если база данных хранит важную информацию, опробуйте описанные в этой главе методики до того, как в них возникнет необходимость. Лучше подготовиться заранее, чем быть захваченным врасплох. Проверка и восстановлениетаблиц Повреждения в таблицам SAM происходят вследствие событий, которые невозможно избежать. Различные аппаратные сбои могут оказать самое непредсказуемое влияние на базу данных. Например, если жесткий диск выйдет из строя, данные окажутся полностью потерянными. Неожиданное выключение системы из-за сбоя питания может привести к тому, что изменения в таблицу будут внесены не полностью. Даже если уничтожить серверный процесс по команде kill, у него не будет возможности корректно завершить свою работу. Если найдена поврежденная таблица, потратьте время на выяснение причин, вызвавших повреждение. Вообще говоря, в MySQL таблицы редко оказываются поврежденными. Существуют два способа проверки и восстановления таблиц. Первый - с помощью специальных инструкций, второй - с помощью утилит mchk. Соответствующие инструкции называются CHECK TABLE, REPAIR TABLE и OPTIMIZE TABLE (см. главу 13, Инструкции SQL ). Они достаточно удобны, поскольку выполняются в рамках серверного процесса. В этом смысле они ничем не отличаются, к примеру, от инструкции SELECT. Утилита myisamchk обладает рядом дополнительных возможностей, которые в ряде ситуаций оказываются весьма удобными. Она была описана в главе 14, Утилиты командной строки . Необходимость проверки таблицы может быть вызвана тем, что утилиты, обращающиеся к таблице, начинают себя странно вести. Например, вводимые запросы не завершаются или выдаются неожиданные сообщения об ошибках. Если при обращении к таблице возвращается номер ошибки, воспользуйтесь утилитой perror, которая отображает поясняющее сообщение, соответствующее данному номеру. Частота проверок базы данных зависит от степени доверия к серверу. Разработчики MySQL рекомендуют делать это хотя бы раз в неделю, ноесли есть возможность выполнять процедуру проверки каждую ночь, то шансы на заблаговременное обнаружение ошибки возрастают. С помощью демона сгоп или программы-планировщика можно составить график проверок таким образом, чтобы они запускались в часы наименьшей активности системы. Сохраняйте результаты проверок в журнальном файле или направляйте их самому себе по электронной почте. Возможно, имеет смысл изменить сценарий saf ejmysqld таким образом, чтобы при запуске сервера выполнялись инструкции проверки таблиц. Файл, содержащий такие инструкции, задается с помощью опции -init-file. Если повреждения произошли из-за того, то сервер внезапно прекратил работу, они будут немедленно исправлены. Обработчики таблиц, для которых поддерживаются транзакции, содержат код, позволяющий им восстанавливать таблицы на основании журнальных файлов при запуске сервера. На момент написания книги в MySQL не было средств ручной проверки и восстановления таблиц этих типов. Разработчики MySQL добавят соответствующие функции позднее. А пока что, если возникает сомнение в целостности таблицы, необходимо остановить и повторно запустить сервер, хоть это и очень неуклюжий прием. Таблицы MylSAM снабжены флагом, указывающим на то, изменилось ли содержимое таблицы с момента последней проверки. Инструкция CHECK TABLE пропустит неизмененные таблицы при наличии ключевого слова CHANGED. В утилите myisamchk соответствующий режим включается с помощью опции -check-only-changed. Особым образом помечаются также неправильно закрытые таблицы. Чтобы проверить только их, укажите флаг FAST (инструкция CHECK TABLE) или опцию -fast (утилита myisamchk). По умолчанию утилита myisamchk ищет повреждения только в индексных файлах. В инструкции CHECK TABLE этот режим включается с помощью флага QUICK. Сама инструкция CHECK TABLE по умолчанию проверяет не только индексы, но и неправильные ссылки на удаленные записи. В утилите myisamchk этот режим включается с помощью опции -mediiim-check. Расширенный режим проверки задается флагом EXTEND и опцией -extended-check. В этом случае будут проверяться все индексируемыезначения. Табличные проверки занимают много времени в случае крупных таблиц, особенно если у них много ключей. Стандартные режимы проверки в обоих методах обеспечивают вполне приемлемую производительность. Более быстрые проверки удобны, когда их нужно запускать регулярно, например по ночам. Расширенные проверки приходят на помощь, если повреждение таблицы очевидно, но обычные проверки его все равно не находят. Б листинге 25.1 иллюстрируется процедура проверки и восстановления таблицы. В данном случае я создал небольшую таблицу и сымитировал в ней повреждение, отредактировав табличные файлы в редакторе vi. Как видите, таблицу удалось восстановить.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |