Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Предотвращение катастроф и восстановление - Программирование от RIN.RU
Предотвращение катастроф и восстановление



Использование myisamchk для профилактики таблиц и послеаварийного восстановления




Начиная с версии MySQL 3.23.13 таблицы MyISAM можно проверять с помощью команды CHECK TABLE (см. раздел Синтаксис CHECK TABLE). Для исправления таблиц используется команда REPAIR TABLE (см. раздел Синтаксис REPAIR TABLE).


Для проверки/ремонта таблиц типа MyISAM (".MYI" и ".MYD") следует использовать
утилиту myisamchk, а для ISAM (".ISM" и ".ISD"") - утилиту isamchk (см. главу Типы таблиц MySQL).


Ниже мы будем говорить о myisamchk, но все сказанное справедливо также и для более старой isamchk.


Утилиту myisamchk можно использовать для получения информации о таблицах рабочей базы данных, для их проверки и исправления или же оптимизации. В следующих разделах описывается, как запускать myisamchk (включая описание ее опций), как настроить график профилактики таблицы и как использовать myisamchk для выполнения различных функций.


В большинстве случаев для оптимизации и исправления таблиц можно также использовать команду OPTIMIZE TABLES, но этот вариант не такой быстрый и не такой надежный (в случае действительно фатальных ошибок), как myisamchk. С другой стороны, OPTIMIZE TABLE проще в использовании и освобождает от забот со сбросом таблиц на диск (см. раздел Синтаксис команды OPTIMIZE TABLE).


Хотя исправление при помощи myisamchk и достаточно безопасно, никогда не будет лишним сделать резервную копию прежде, чем выполнять ремонт (или любые другие действия, которые могут привнести в таблицу значительные изменения)


Синтаксис запуска myisamchk


myisamchk запускается следующим образом:


shell> myisamchk [options] tbl_name


Опции options определяют, что должна сделать myisamchk. В данном разделе дается описание этих опций (список опций можно также получить, запустив myisamchk --help). Если опции не указаны, myisamchk просто проверяет таблицу. Чтобы получить дополнительную информацию или указать myisamchk выполнить корректирующие действия, надо задать опции, как это описано в этом и в следующих разделах.


tbl_name - это таблица базы данных, которую нужно проверить/исправить. Если myisamchk запускается не из каталога базы данных, то следует задать путь к файлу, поскольку myisamchk не имеет представления о том, где искать базу данных. В действительности для myisamchk не важно, где находятся рабочие файлы - в каталоге базы данных или нет; можно скопировать файлы, относящиеся к базе данных, в другое место и выполнить операции восстановления над ними там.


При желании в командной строке myisamchk можно перечислить имена нескольких таблиц. В качестве имени можно также указать имя индексного файла (с суффиксом ".MYI"), что позволит задавать все таблицы в каталоге при помощи шаблона "*.MYI". Например, находясь в каталоге базы данных, можно проверить все таблицы этого каталога следующим образом:


shell> myisamchk *.MYI


Если каталог базы данных не является текущим, то все таблицы каталога можно проверить, указав к нему путь:


shell> myisamchk /path/to/database_dir/*.MYI


Можно даже проверить все таблицы во всех базах данных, если задать шаблон вместе с путем к каталогу данных MySQL:


shell> myisamchk /path/to/datadir/*/*.MYI


Быстро проверять все таблицы рекомендуется следующим образом:


myisamchk --silent --fast /path/to/datadir/*/*.MYI
isamchk --silent /path/to/datadir/*/*.ISM


Если необходимо проверить все таблицы и исправить все поврежденные из них, можно использовать следующую строку:


myisamchk --silent --force --fast --update-state -O key_buffer=64M \
-O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M \
/path/to/datadir/*/*.MYI
isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M \
-O read_buffer=1M -O write_buffer=1M /path/to/datadir/*/*.ISM


Эти команды предполагают, что имеется более чем 64 Mб свободного пространства.


Следует отметить, что если выдается ошибка, подобная следующей:


myisamchk: warning: 1 clients is using or hasn"t closed the table properly


то это означает, что делается попытка проверить таблицу, обновленную другой программой (такой как mysqld), которая еще не закрыла файл или чье выполнение было прервано без возможности корректно закрыть файл.


Если mysqld запущен, то необходимо принудительно вызвать синхронизацию/закрытие всех таблиц с помощью FLUSH TABLES и обеспечить, чтобы никто не использовал таблиц, пока выполняется myisamchk. В версии MySQL 3.23 самый простой способ избежать этой проблемы заключается в применении для проверки таблиц команды CHECK TABLE вместо myisamchk.


Общие опции для myisamchk


myisamchk поддерживает следующие опции.


-# или --debug=debug_options

Вывод отладочной информации. Часто строка debug_options имеет следующий вид d:t:o,filename.

-? или --help

Отображение справочного сообщения с завершением работы.

-O var=option, --set-variable var=option

Устанавливает значение переменной. Вывести список допустимых переменных и их значений по умолчанию для myisamchk можно с помощью myisamchk --help:



Переменная Значение
key_buffer_size 523264
read_buffer_size 262136
write_buffer_size 262136
sort_buffer_size 2097144
sort_key_blocks 16
decode_bits 9



sort_buffer_size применяется, когда ключи исправляются посредством сортировки ключей (обычный случай при указании --recover), а key_buffer_size - если таблица проверяется с --extended-check или если ключи исправляются посредством вставки ключей в таблицу построчно (как при выполнении обычных вставок). Исправление через ключевой буфер применяется в следующих случаях:


  • Если используется --safe-recover.

  • Если размер требуемых для сортировки временных файлов будет более чем вдвое превышать объем, требующийся при создании ключевого файла
    непосредственно. Так часто обстоит дело, когда присутствуют большие ключи типов CHAR, VARCHAR или TEXT, поскольку при сортировке необходимо сохранять ключи целиком. Имея временное пространство на диске в избытке, можно заставить myisamchk делать исправления посредством сортировки, задав опцию --sort-recover.


Ремонт посредством ключевого буфера требует значительно меньше пространства, чем при использовании сортировки, однако выполняется значительно медленнее. Когда желательно ускорить выполнение ремонта/исправления, переменные нужно установить равными приблизительно 1/4 доступной памяти. Можно для обеих переменных задавать большие значения, поскольку всякий раз будет использоваться только один из
рассматриваемых буферов.

-s или --silent

Молчаливый режим. Выдавать сообщения только при возникновении ошибок. Можно использовать -s дважды (-ss), чтобы предельно ограничить выдачу сообщений утилитой myisamchk.

-v или --verbose

Расширенный режим вывода. Выдается больше информации. Можно использовать с -d и -e. Можно использовать -v многократно (-vv, -vvv) - чтобы еще более расширить сводку!

-V или --version

Отображение версии myisamchk и завершение работы.

-w или, --wait

Если таблица заблокирована, то не выдавать ошибки, а, дождавшись снятия блокировки с таблицы, продолжить выполнение. Заметим, что если mysqld выполняется на таблице с --skip-locking, то таблица может быть заблокирована только другой командой myisamchk.




<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь