|
Программирование >> Программный интерфейс приложений
Утилиты myisamchk И isamchk не В состоянии самостоятельно определить местоположение файлов таблиц, поэтому необходимо либо запускать их непосредственно в каталоге с файлами таблиц, либо явным образом указывать путь к этим файлам. Такой подход позволяет легко копировать файлы таблиц в другой каталог, а затем проверять и испраатять их копии. Проверка таблиц Утилиты myisamchk и isamchk обеспечивают несколько методов проверки таблиц, отличающихся в основном детализацией. Как правило, вполне достаточно нормального метода проверки. Если же даже после ее выполнения сообщения об ощибке не отображаются, но администратор подозревает наличие повреждений (возможно, потому что неправильно обрабатываются запросы), можно выполнить более детальную проверку. Для выполнения нормальной проверки достаточно вызвать соответствующую утилиту без всяких опций: % myisamchk tbl name % isamchk tbl name Для запуска более детальной проверки используется опция --extend-check. Процедура детальной проверки может затянуться надолго, однако выполняется она чрезвычайно досконально: проверяется каждая запись файла данных таблицы, ключ для каждого индекса файла индексов, чтобы убедиться, что он указывает на правильную запись. Утилита myisamchk Имеет еще одну опцию, -mediiim-check, которая приводит к выполнению менее тщательной, но более быстрой проверки. Если после проверки с помощью опции --extend-check на экране не появляется сообщение об ощибке, можно с полной уверенностью сказать, что с таблицей все в порядке. Поэтому проблемы с выполнением запросов к ней наверняка лежат в другой плоскости. Внимательно исследуйте текст всех запросов, выводящих неправильные результаты, и убедитесь, что они записаны корректно. Если проблема связана с сервером MySQL, попробуйте поискать подобную ощибку в отчете об ошибках и обновить свою версию сервера. Если же утилиты myisamchk и isamchk сообщают о наличии в таблице ошибок, их следует устранить. Для этого необходимо выполнить описанные в следующем разделе действия. Восстановление таблиц Восстановление таблиц - весьма неприятный процесс, определяемый, в первую очередь, характером повреждений данных. Однако несмотря на это, существуют определенные требования и процедуры, которым должен следовать администратор. Их выполнение позволит значительно повысить вероятность успешного исправления таблиц. Зачастую лучше начать с быстрого метода восстановления таблиц и оценить, в состоянии ли он само- стоятельно устранить повреждения. Если этого метода недостаточно, можно постепенно переходить к более сложным методам восстановления, пока результаты повреждения не будут устранены или даже самый сложный метод не сможет с ними справиться . (В большинстве случае устранить неполадки можно и без переходов на более сложные, а соответственно и более медленные модели.) Если же таблицу исправить невозможно, остается лишь восстановить ее из архивной копии. Описание процесса восстановления базы данных из файлов архивов и журналов обновлений представлено в главе 11. Общее администрирование MySQL . Стандартное восстановление таблиц Для исправления ошибок таблицы выполните следующие действия. 1. Попытайтесь исправить таблицу с помощью опции -recover, однако воспользуйтесь сначала опцией -quick, чтобы выполнить восстановление, основываясь на содержимом файла индекса. В этом случае таблица будет исправлена без внесения изменений в файл данных: % myisamchk --recover --quick tbl name % isamchk --recover --quick tbl name 2. Если проблема осталась нерешенной, попробуйте еще раз запустить приведенные выше команды, однако без опции -quick. Это позволит утилитам восстановления в процессе работы изменять также и файл данных: % myisamchk --recover tbl ndnie % isamchk -recover tbl name 3. Если и это не помогло, попробуйте воспользоваться режимом восстановления - safe-recover. Он займет больше времени, чем обычный режим, однако в состоянии устранить некоторые проблемы, не решаемые в обычном режиме -recover: % myisamchk -safe-recover tbl name % isamchk -safe-recover tbl name Если работа утилиты myisairchk или isamchk на любом из этих этапов прерывается сообщением об ошибке типа Сапt create new temp file: file name ( Невозможно создать новый временный файл: имя файла ), запустите команду еще раз, добавив опцию -force для автоматического удаления временного файла. Это позволит более успешно выполнить операцию восстановления. Скопируйте таблицы перед восстановлением Настоятельно рекомендуется перед восстановлением таблиц скопировать их файлы на случай негативного развития событий. Последнее маловероятно, однако все же возможно, и в этом случае останется шанс получить новые копии и попробовать другие методы восстановления. Что делать, если стандартные методы восстановления таблиц не приводят к успеху? Если применение стандартных методов восстановления не позволяет восстановить таблицу, значит, файл индекса отсутствует либо сильно поврежден и не подлежит восстановлению. Кроме того, вполне возможно, хотя и маловероятно, что отсутствует и файл описания таблицы. В любом из этих случаев необходимо заменить поврежденные файлы, а затем снова выполнить стандартную процедуру восстановления. Для воссоздания файла индекса выполните следующие действия. 1. Перейдите в каталог базы данных, содержащий файлы поврежденной таблицы. 2. Перенесите файл данных таблицы в безопасное место. 3. Запустите mysql и воссоздайте новую пустую таблицу с помошью следующего оператора (файл описания таблицы tbl name. f rm будет использован для создания нового файла данных и индекса): mysql> DELETE FROM tbl name; 4. Завершите работу с mysql и перенесите исходный файл данных обратно в каталог базы данных, заменив только что созданный пустой файл данных. 5. Повторно запустите стандартную операцию восстановления таблицьг Чтобы воссоздать файл описания таблицы, восстановите его из архива и еще раз запустите стандартную процедуру восстановления. Если архив по каким-либо причинам не сохранился, но администратор знает, какой оператор create table необходимо запустить для создания таблиц, возможность исправления ошибок все еще остается. 1. Переместитесь в каталог базы данных, содержащий поврежденную таблицу. 2. Перенесите файл данных таблицы в безопасное место. Можно перенести также и файл индексов, если необходимо использовать и его. 3. Запустите mysql и выполните оператор create table для создания таблицы. 4. Завершите работу mysql и перенесите исходный файл данных обратно в каталог базы данных, заменив им только что созданный файл. Если при выполнении п. 2 был перемещен и файл индексов, верните и его. 5. Снова запустите процедуру стандартного восстановления.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |