Spec-Zone.ru › MySQL 5.7

4.6.3 myisamchk — Утилита обслуживания таблиц MyISAM

  • 4.6.3.1 Общие параметры myisamchk
  • 4.6.3.2 Параметры проверки myisamchk
  • 4.6.3.3 Параметры восстановления myisamchk
  • 4.6.3.4 Другие параметры myisamchk
  • 4.6.3.5 Получение информации о таблицах с помощью myisamchk
  • 4.6.3.6 Использование памяти myisamchk

Утилита 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, «Использование файлов параметров».

END_OF_DOCUMENT_MARKER

Таблица 4.21 Параметры myisamchk

Таблица 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/myisamchk.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API