Spec-Zone.ru › MySQL 8.4

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

  • 6.6.4.1 Общие параметры myisamchk
  • 6.6.4.2 Параметры проверки myisamchk
  • 6.6.4.3 Параметры восстановления myisamchk
  • 6.6.4.4 Другие параметры myisamchk
  • 6.6.4.5 Получение информации о таблице с помощью myisamchk
  • 6.6.4.6 Использование памяти myisamchk

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

Вы также можете использовать команды CHECK TABLE и REPAIR TABLE для проверки и восстановления MyISAM таблиц. См. Раздел 15.7.3.2, «Команда CHECK TABLE» и Раздел 15.7.3.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 см. в Разделе 6.6.4.6, «Использование памяти myisamchk».

Для получения дополнительной информации об использовании myisamchk см. Раздел 9.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 для проверки таблиц. См. Раздел 15.7.3.2, «Команда CHECK TABLE».

myisamchk поддерживает следующие параметры, которые могут быть указаны в командной строке или в группе [myisamchk] файла параметров. Информацию о файлах параметров, используемых программами MySQL, см. в Разделе 6.2.2.2, «Использование файлов параметров».

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

Таблица 6.17 Параметры 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 Максимальная длина слова для индексов FULLTEXT
--ft_min_word_len Минимальная длина слова для индексов FULLTEXT
--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-8.4-en/myisamchk.html

Spec-Zone.ru

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