4.6.3 myisamchk — Утилита обслуживания таблиц MyISAM
Утилита myisamchk получает информацию о таблицах вашей базы данных или проверяет, восстанавливает или оптимизирует их. myisamchk работает с MyISAM таблицами (таблицами, имеющими .MYD и .MYI файлы для хранения данных и индексов).
Вы также можете использовать операторы CHECK TABLE и REPAIR TABLE для проверки и восстановления MyISAM таблиц. См. Раздел 13.7.2.2, «Оператор CHECK TABLE» и Раздел 13.7.2.5, «Оператор REPAIR TABLE».
Использование myisamchk с разделяемыми таблицами не поддерживается.
Перед выполнением операции восстановления таблицы рекомендуется сделать резервную копию таблицы; в некоторых случаях операция может привести к потере данных. Возможные причины включают, но не ограничиваются ими, ошибки файловой системы.
Вызвать myisamchk можно так:
myisamchk [options] tbl_name ...
options указывают, что вы хотите сделать с помощью myisamchk. Они описаны в следующих разделах. Вы также можете получить список параметров, вызвав myisamchk --help.
Без параметров myisamchk просто проверяет вашу таблицу, так как это значение по умолчанию. Чтобы получить больше информации или указать myisamchk выполнить корректирующие действия, укажите параметры, как описано в последующем обсуждении.
tbl_name — таблица базы данных, которую вы хотите проверить или восстановить. Если вы запускаете myisamchk не в каталоге базы данных, вы должны указать путь к каталогу базы данных, потому что myisamchk не знает, где она находится. На самом деле myisamchk не заботится о том, находятся ли файлы, с которыми вы работаете, в каталоге базы данных. Вы можете скопировать файлы, соответствующие таблице базы данных, в другое место и выполнить там операции восстановления.
Вы можете указать несколько таблиц в командной строке myisamchk, если хотите. Также вы можете указать таблицу, указав имя файла индекса (файл с .MYI расширением). Это позволяет указать все таблицы в каталоге, используя шаблон *.MYI. Например, если вы находитесь в каталоге базы данных, вы можете проверить все MyISAM таблицы в этом каталоге следующим образом:
myisamchk *.MYI
Если вы не находитесь в каталоге базы данных, вы можете проверить все таблицы там, указав путь к каталогу:
myisamchk /path/to/database_dir/*.MYI
Вы даже можете проверить все таблицы во всех базах данных, указав подстановку с путем к каталогу данных MySQL:
myisamchk /path/to/datadir/*/*.MYI
Рекомендуемый способ быстрого проверки всех MyISAM таблиц:
myisamchk --silent --fast /path/to/datadir/*/*.MYI
Если вы хотите проверить все MyISAM таблицы и восстановить любые поврежденные, можно использовать следующую команду:
myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --myisam_sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/*/*.MYI
Эта команда предполагает, что у вас более 64 МБ свободного места. Дополнительную информацию об использовании памяти с myisamchk см. в разделе 4.6.3.6, «Использование памяти myisamchk».
Дополнительную информацию об использовании myisamchk см. в разделе 7.6, «Обслуживание таблиц MyISAM и восстановление после сбоя».
Необходимо убедиться, что никакая другая программа не использует таблицы во время работы myisamchk. Наиболее эффективный способ сделать это — закрыть сервер MySQL во время работы myisamchk или заблокировать все таблицы, на которых используется myisamchk.
В противном случае при запуске myisamchk может появиться следующее сообщение об ошибке:
warning: clients are using or haven't closed the table properly
Это означает, что вы пытаетесь проверить таблицу, которая обновлялась другой программой (например, сервером mysqld), которая еще не закрыла файл или которая завершилась, не закрыв файл должным образом, что иногда может привести к повреждению одной или нескольких MyISAM таблиц.
Если сервер mysqld запущен, необходимо заставить его очистить любые изменения в таблице, которые еще буферизуются в памяти, используя FLUSH TABLES. Затем необходимо убедиться, что никто не использует таблицы во время работы myisamchk.
Однако самый простой способ избежать этой проблемы — использовать CHECK TABLE вместо myisamchk для проверки таблиц. См. раздел 13.7.2.2, «Оператор CHECK TABLE».
myisamchk поддерживает следующие параметры, которые можно указать в командной строке или в группе [myisamchk] файла параметров. Сведения о файлах параметров, используемых программами MySQL, см. в разделе 4.2.2.2, «Использование файлов параметров».
Таблица 4.21 Параметры myisamchk
| Имя параметра | Описание |
|---|---|
| --analyze | Анализ распределения значений ключей |
| --backup | Создание резервной копии файла .MYD как file_name-time.BAK |
| --block-search | Поиск записи, к которой принадлежит блок по заданному смещению |
| --character-sets-dir | Директория, в которой хранятся наборы символов |
| --check | Проверка таблицы на ошибки |
| --check-only-changed | Проверка только таблиц, изменённых с момента последней проверки |
| --correct-checksum | Исправление контрольной суммы таблицы |
| --data-file-length | Максимальная длина файла данных (при повторном создании файла данных, когда он заполнен) |
| --debug | Запись отладочного лога |
| --decode_bits | Decode_bits |
| --defaults-extra-file | Чтение указанного файла параметров дополнительно к обычным файлам параметров |
| --defaults-file | Чтение только указанного файла параметров |
| --defaults-group-suffix | Значение суффикса группы параметров |
| --description | Вывод описательной информации о таблице |
| --extend-check | Очень тщательная проверка или ремонт таблицы, пытающейся восстановить каждую возможную строку из файла данных |
| --fast | Проверка только таблиц, которые не были должным образом закрыты |
| --force | Автоматическое выполнение операции ремонта, если myisamchk обнаруживает ошибки в таблице |
| --force | Перезапись старых временных файлов. Для использования с опцией -r или -o |
| --ft_max_word_len | Максимальная длина слова для полнотекстовых индексов |
| --ft_min_word_len | Минимальная длина слова для полнотекстовых индексов |
| --ft_stopword_file | Использование стоп-слов из этого файла вместо встроенного списка |
| --HELP | Отображение сообщения справки и выход |
| --help | Отображение сообщения справки и выход |
| --information | Вывод информационной статистики о проверяемой таблице |
| --key_buffer_size | Размер буфера, используемого для блоков индексов для таблиц MyISAM |
| --keys-used | Битовое значение, указывающее, какие индексы обновить |
| --max-record-length | Пропуск строк, длина которых больше заданной, если myisamchk не может выделить память для их хранения |
| --medium-check | Проверка, которая быстрее, чем операция --extend-check |
| --myisam_block_size | Размер блока, который будет использоваться для страниц индексов MyISAM |
| --myisam_sort_buffer_size | Буфер, который выделяется при сортировке индекса при выполнении REPAIR или при создании индексов с помощью CREATE INDEX или ALTER TABLE |
| --no-defaults | Не читать файлы параметров |
| --parallel-recover | Использует ту же технику, что и -r и -n, но создаёт все ключи параллельно, используя разные потоки (бета-версия) |
| --print-defaults | Вывод параметров по умолчанию |
| --quick | Достижение более быстрого ремонта путём невнесения изменений в файл данных |
| --read_buffer_size | Каждый поток, выполняющий последовательный сканирование, выделяет буфер такого размера для каждой таблицы, которую он сканирует |
| --read-only | Не помечать таблицу как проверенную |
| --recover | Ремонт, который может исправить почти любую проблему, кроме уникальных ключей, которые не уникальны |
| --safe-recover | Ремонт, использующий старый метод восстановления, который считывает все строки в порядке и обновляет все деревья индексов на основе найденных строк |
| --set-auto-increment | Принудительное назначение нумерации AUTO_INCREMENT для новых записей, начиная с заданного значения |
| --set-collation | Указание набора правил сортировки для сортировки индексов таблицы |
| --silent | Беззвучный режим |
| --sort_buffer_size | Буфер, который выделяется при сортировке индекса при выполнении REPAIR или при создании индексов с помощью CREATE INDEX или ALTER TABLE |
| --sort-index | Сортировка блоков дерева индекса в порядке убывания |
| --sort_key_blocks | sort_key_blocks |
| --sort-records | Сортировка записей в соответствии с определённым индексом |
| --sort-recover | Принуждение myisamchk использовать сортировку для решения ключей, даже если временные файлы будут очень большими |
| --stats_method | Указывает, как код сбора статистики индекса MyISAM должен обрабатывать NULL |
| --tmpdir | Директория, используемая для хранения временных файлов |
| --unpack | Распаковка таблицы, которая была упакована с помощью myisampack |
| --update-state | Хранение информации в файле .MYI, указывающей, когда таблица была проверена и произошёл ли сбой таблицы |
| --verbose | Подробный режим |
| --version | Отображение информации о версии и выход |
| --wait | Ожидание разблокировки заблокированной таблицы вместо завершения |
| --write_buffer_size | Размер буфера записи |
© 2025 Oracle
Licensed under the GPLv2 License.