Mysql

Проверка базы на ошибки mysql: Исправление ошибок в базе MySQL

Содержание

Исправление ошибок в базе MySQL

Одной из ярких причин возникновения ошибок в базе данных может послужить неправильная остановка сервера MySQL. Как это обычно бывает, сбой в электропитании сервера, либо иные причины, повлекшие за собой банальное отключение машины, либо перезагрузку. Иногда, и нередко подобного рода сбои могут повлечь за собой проблемы, которые решаются лишь путем восстановления данных из бэкапа, и это к вопросу для чего нужно делать бэкапы. Наличие ошибок в базе данных может проявиться не сразу, однако если они есть, то вы их рано или поздно обязательно заметите. Проблемы, как правило, проявляются в виде ошибок после запросов к базе, либо база начинает уходить в раздумье на не свойственное для этого время.
Давайте посмотрим, что можно предпринять первым делом, чтобы попытаться исправить ситуацию. Утилита mysqlcheck как правило устанавливается по умолчанию с сервером MySQL может быть использована для проверки баз данных на ошибки. Рассмотрим пример ее использования.

Использование утилиты mysqlcheck


# mysqlcheck -u root -p --optimize --auto-repair --all-databases

Назначение параметров:


--optimize – Оптимизируем все базы.
--auto-repair – Ремонтируем все базы.
--all-databases – Проверяем ошибки у всех баз.

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

Проверка отдельной таблицы в базе данных:

# mysqlcheck -r имя_базы имя_таблицы_в_базе -u root -p

Исправление таблиц MyISAM.
Так же существует утилита myisamchk, отличается от предыдущей утилиты тем, что перед её использованием необходимо останавливать сервер баз данных, в то время как mysqlcheck может использоваться при работающем сервере. Рассмотрим пример использования утилиты myisamchk.

Останавливаем сервер MySQL

# service mysqld stop

Анализируем базу данных на наличие ошибок


# myisamchk -s /var/db/mysql/наша_база/*.MYI

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


myisamchk: warning: 2 client is using or hasn't closed the table properly
MyISAM-table '/var/db/mysql/наша_база/ary_mem.MYI' is usable but should be fixed

Исправляем ошибки с помощью myisamchk


# myisamchk -r /var/db/mysql/наша_база/ary_mem.MYI

Исправляем ошибки по всем таблицам в базе (рекурсивно)


# myisamchk -r /var/db/mysql/наша_база/*.MYI

Процесс исправления ошибок будет сопровождаться подобным выводом сообщений в окне консоли:


- Fixing index 1
- Fixing index 2
- Fixing index 3

После того как ошибки исправлены, можно запустить сервер MySQL, чтобы убедиться что всё в порядке.
Запуск сервера MySQL


# service mysqld start

Хотелось бы отметить один момент, что команды остановки и запуска сервера MySQL, а так же пути расположения баз данных на вашем сервере могут отличаться, поэтому вам так же следует эти моменты учесть.

Проверка, восстановление и оптимизация баз MySQL

Программа mysqlcheck используется для проверки целостности (-c, -m, -C), восстановления (-r), анализа (-a) или оптимизации (-o) таблиц базы данных MySQL. Некоторые опции (например -e и -q) могут использоваться одновременно.

Не все опции поддерживаются различными движками MySQL. Опции -c, -r, -a и -o взаимоисключаемые, что означает, что будет применена последняя указанная опция.

Если не указано ничего, то будет применена опция -c. Альтернативами (синонимами) являются:

mysqlrepair: опция по умолчанию -r
mysqlanalyze: опция по умолчанию -a
mysqloptimize: опция по умолчанию -o

Использование:

mysqlcheck [OPTIONS] database [tables]

или:

 mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]

или

mysqlcheck -uлогин -pпароль [--auto-repair] [--check] [--optimize] [--all-databases] [имя_базы_данных]

Опции:

-A, --all-databases

Проверить все базы данных. Аналогична опции —databases, если указать все базы данных.

-1, --all-in-1

Вместо выполнения запросов для каждой таблицы в отдельности выполнить все запросы в одном отдельно для каждой таблицы. Имена таблиц будут представлены в виде списка имен, разделенных запятой.

-a, --analyze

Анализировать данные таблицы.

--auto-repair

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

-#, --debug=...

Выводит информацию журнала отладки. Часто используется следующий набор параметров: ‘d:t:o,filename’

--character-sets-dir=...

Директория, где находятся установки символов.

-c, --check

Проверить таблицу на наличие ошибок.

-C, --check-only-changed

Проверить только таблицы, измененные со времени последней проверки или некорректно закрытые.

--compress

Использовать сжатие данных в протоколе сервер/клиент.

-?, --help

Вывести данную вспомогательную информацию и выйти из программы.

-B, --databases

Проверить несколько баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов рассматриваются как имена баз данных.

--default-character-set=...

Установить набор символов по умолчанию.

-F, --fast

Проверить только базы данных, которые не были закрыты должным образом.

-f, --force

Продолжать даже при получении ошибки SQL.

-e, --extended

При использовании данного параметра совместно с CHECK TABLE можно быть уверенным в целостности таблицы. Если же использовать этот параметр с REPAIR TABLE, запустится расширенное восстановление таблицы.

-h, --host=...

Хост базы данных.

-m, --medium-check

Быстрее, чем —extended-check, но находит только 99,99 процентов всех ошибок.

-o, --optimize

Оптимизировать таблицу.

-p, --password[=...]

Используемый пароль при подключении к серверу. Если пароль не указан, у пользователя запрашивается пароль с терминала.

-P, --port=...

Номер порта, используемого для подключения по TCP/IP.

--protocol=(TCP | SOCKET | PIPE | MEMORY)

Для указания протокола соединения, который надлежит использовать.

-q, --quick

При использовании данной опции совместно с CHECK TABLE предотвращается сканирование строк для корректировки неправильных связей. Это наиболее быстрый метод проверки. Если же использовать этот параметр с REPAIR TABLE, программа попытается восстановить только систему индексов. Это наиболее быстрый метод восстановления таблицы.

-r, --repair

Может исправить почти все, за исключением уникальных ключей, имеющих дубликаты.

-s, --silent

Выводить только сообщения об ошибках.

-S, --socket=...

Файл сокета, используемый для подсоединения.

--tables

Перекрывает опцию —databases (-B).

-u, --user=#

Имя пользователя MySQL, если этот пользователь в данное время не является активным.

-v, --verbose

Вывести информацию о различных этапах.

-V, --version

Вывести информацию о версии и выйти из программы.

Полезные команды для проверки работы MySql | Клуб разработки сайтов

Собрал список, который занимал у меня штук 30 открытых вкладок. Когда я понял, что сил по ним бегать нет, то решил собрать такой материал, в котором будут все необходимые команды для проверки работы базы данных Mysql и тестирования различных параметров. Теперь постараюсь всё это собрать воедино и сохранить. Кто читал предыдущую мою статью про настройки my.cnf тот уже видел, что я активно занимаюсь оптимизацией базы данных.

Mysqltuner команды проверки и реагирования

Название конечно звучит странно, но в этой части статьи именно все команды для проверки работы Mysql с помощью mysqltuner и соответственно необходимые команды для того, чтобы устранить некоторые проблемы. 

Что такое mysqltuner думаю обьяснять не надо, как и его задачу – проверку Mysql параметров. Зачастую кстати он выдаёт одинаковые рекомендации, но чтобы запустить его надо просто в командной строке набрать

# mysqltuner

Оптимизация всех баз данных

После этого начнется проверка параметров Mysql и появится вывод информации. Как правило в самом начале выходят данные о фрагментации баз данных, их необходимо оптимизировать. Для этого вводим в командную строку следующую команду:

Восстановление & Оптимизация
mysqlcheck -Aor -p
Только воcстановление
mysqlcheck -Ar -p
Только оптимизация
mysqlcheck -Ao -p

Описание аргументов:
-A – Проверить на ошибки все Mysql базы данных
-r – Отремонтировать все Mysql базы данных
-o – Оптимизировать все Mysql базы данных
-p – Для доступа к базе используется пароль

После этого начинается оптимизация баз данных, которые имеют не оптимизированные таблицы. 

Вывод данных состояния MYSQL

Теперь следующий блок запросов, которые вводятся в Mysql для вывода данных о состоянии переменных

show status LIKE "Key%"; – выводит данные о состояние буфера ключей

show status LIKE "Opened_tables%"; – выводит данные об открытых таблицах

show status LIKE "Threads_running%" – вывод данных исходя из параметров умножения количества threads на параметры sort_buffer

show status LIKE "Max_used_connections%"; – данные о максимальном количестве одновременных подключений к базе. Помогает настроить максимальное количество подключений. 

SHOW STATUS LIKE 'Qcache%'; – выводит данные о работе кеша определенного query_cache_limit и query_cache_size. 

show processlist; – данные о процессах Mysql

FLUSH QUERY CACHE – дефрагментировать кэш Mysql

Оптимизация медленных запросов Mysql

Следующая часть посвящена тому, как определить медленные запросы к Mysql и анализировать их.

Для начала снова обратимся к файлу конфигурации MySQl – my.cnf. Здесь необходимо обратить внимание на такой пункт настроек, как лог медленных запросов. Выглядит он так:

#log_slow_queries = /var/log/mysql/mysql-slow.log

#long_query_time = 15

#log-queries-not-using-indexes

Здесь вы видите 3 пункта. Определение где будет храниться лог запросов, определение количества секунд выполнения запроса, которые должны заноситься в лог и указание записывать отсутствие индексов у баз данных. Включаем все три и через некоторое время проводим анализ с помощью команды:

mysqldumpslow -s c -t 10

Эта команда выведет 10 самых медленных запросов. Если изменить цифру соответственно выведется нужное количество запросов сортировкой по самому долгому выполнению. После этого вы уже сможете анализировать их и оптимизировать скрипты. 

Исправляем поврежденные MySQL-таблицы с myisamchk / Блог компании King Servers / Хабр

MyISAM — основная, вернее, одна из главных (наряду с InnoDB) систем хранения данных в СУБД MySQL. При этом MyISAM таблицы повреждаются очень просто — с этим проблем нет никаких. Сложнее все повреждения ликвидировать, хотя это тоже можно сделать довольно быстро. В этом материале объясняется, как можно решить проблему с использованием myisamchk для идентификации проблемы с MyISAM и ее исправления.

Общеизвестно, что при создании таблицы в MySQL, создаются три различных файла: *.frm — формат таблицы, *.MYD (MyData) — хранение данных, *.MYI (MyIndex) — индекс. Для крупных баз данных стоит использовать InnoDB, поскольку здесь есть некоторая схожесть с Oracle и соответствующая функциональность.


В качестве примера демонстрации ошибки будем использовать вот это:

undef error - DBD::mysql::db selectrow_array failed: Table 'attach_data' is
marked as crashed and should be repaired [for Statement "SELECT LENGTH(thedata)
FROM attach_data WHERE id = ?"] at Bugzilla/Attachment.pm line 344
Bugzilla::Attachment::datasize('Bugzilla::Attachment=HASH(0x9df119c)') called

Понятно, что таблица attach_data повреждена, и ее нужно исправить. Таблицу будем исправлять с использованием myisamchk.

1. Определяем все поврежденные таблицы, используя myisamchk

# myisamchk /var/lib/mysql/bugs/*.MYI >> /tmp/myisamchk_log.txt
 
myisamchk: error: Wrong bytesec: 0-0-0 at linkstart: 18361936
MyISAM-table 'attach_data.MYI' is corrupted
Fix it using switch "-r" or "-o"
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table 'groups.MYI' is usable but should be fixed
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table 'profiles.MYI' is usable but should be fixed

Если указать вывод myisamchk во временный файл, на дисплее будут показаны только имена поврежденных таблиц. А вот в файле /tmp/myisamchk_log.txt будет указано гораздо больше данных включая имена неповрежденных таблиц:

Checking MyISAM file: user_group_map.MYI
Data records:     182   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1

2. Исправляем поврежденные таблицы, используя myisamchk

Для этого используем myisamchk, с опцией -r, как и показано ниже:

# myisamchk -r profiles.MYI
 
- recovering (with sort) MyISAM-table 'profiles.MYI'
Data records: 80
- Fixing index 1
- Fixing index 2

Здесь может появиться сообщение об ошибке: clients are using or haven’t closed the table properly, в случае, если таблицы до сих пор используются каким-либо приложением или другими таблицами. Для того, чтобы избежать появления этой ошибки, стоит завершить mysqld, прежде, чем начать исправление таблиц. Здесь можно использовать FLUSH TABLES.

3. Запускаем проверку и исправлением для всей БД MySQL

# myisamchk --silent --force --fast --update-state /var/lib/mysql/bugs/*.MYI
 
myisamchk: MyISAM file /var/lib/mysql/bugs/groups.MYI
myisamchk: warning: 1 client is using or hasn't closed the table properly
myisamchk: MyISAM file /var/lib/mysql/bugs/profiles.MYI
myisamchk: warning: 1 client is using or hasn't closed the table properly

-s: выводим только ошибки. Можно использовать двойной -s -s, чтобы сделать режим максимально «тихим»;

-f: автоматический перезапуск myisamchk с опцией -r, есть обнаружены ошибки;

-F: проверка только таблиц, которые не были закрыты в нормальном режиме;

-U: отмечаем таблицы, как поврежденные, если обнаружены ошибки.

4. Использование дополнительной памяти для больших БД MySQL

В случае работы с большими БД восстановление может занять несколько часов. Если есть дополнительные ресурсы, их можно использовать для ускорения процесса:

# myisamchk --silent --force --fast --update-state \
--key_buffer_size=512M --sort_buffer_size=512M \
--read_buffer_size=4M --write_buffer_size=4M \
/var/lib/mysql/bugs/*.MYI

5. Использование myisamchk для получения данных о таблице

При необходимости можно получить довольно много данных.

# myisamchk -dvv profiles.MYI
 
MyISAM file:         profiles.MYI
Record format:       Packed
Character set:       latin1_swedish_ci (8)
File-version:        1
Creation time:       2007-08-16 18:46:59
Status:              open,changed,analyzed,optimized keys,sorted index pages
Auto increment key:              1  Last value:                    88
Data records:                   88  Deleted blocks:                 0
Datafile parts:                118  Deleted data:                   0
Datafile pointer (bytes):        4  Keyfile pointer (bytes):        4
Datafile length:              6292  Keyfile length:              6144
Max datafile length:    4294967294  Max keyfile length: 4398046510079
Recordlength:                 2124
 
table description:
Key Start Len Index   Type                     Rec/key         Root  Blocksize
1   2     3   unique  int24                          1         1024       1024
2   5     765 unique  char packed stripped           1         2048       4096
 
Field Start Length Nullpos Nullbit Type
1     1     1
2     2     3                      no zeros
3     5     765                    no endspace

6. Все опции myisamchk

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

# myisamchk —help

Общие опции:

-s: только вывод ошибок;

-v: вывод большего количества информации;

-V: вывод версии и выход;

-w: ждать, если таблица заблокирована.

Опции проверки:

-c: проверка таблиц на ошибки;

-е: очень «грубая» проверка. Стоит использовать только в крайнем случае, если в обычном режиме ошибки не обнаруживаются;

-F: быстрая проверка, проверяются только таблицы, которые не закрывались правильно;

-С: проверка только таблиц, которые изменились со времени последней поверки;

-f: автоматический перезапуск myisamchk с опцией -r, есть обнаружены ошибки;

-i: вывод статистики по проверенным таблицам;

-m: облегченный режим проверки, быстрее, чем обычный, находится 99,99% ошибок;

-U: обновление статуса: пометка таблиц как поврежденных, если обнаруживаются любые ошибки;

-T: не помечать таблицы как проверенные.

Опции исправления:

-B: бэкап файла .MYD, «filename-time.BAK»;

—correct-checksum;

-е: попытка исправления максимального числа строк в файле данных. Кроме того, эта команда находит «мусорные» строки. Не стоит использовать эту команду, если ситуация не безнадежна;

-f: перезапись старых временных файлов;

-r: исправляет почти все, кроме уникальных ключей, которые на самом деле не уникальны;

-n: принудительная сортировка, даже, если временный файл получается очень большим;

-о: использование старого метода восстановления;

-q: быстрое исправление без модификации файла данных;

-u: распаковка файла, запакованного myisampack.

Оптимизация и восстановление баз данных MySQL с помощью mysqlcheck

В этой статье мы будем говорить о mysqlcheck, которая является инструментом обслуживания командной строки, что позволяет проверять, анализировать, ремонтировать, а также оптимизировать таблицы MySQL / MariaDB и базы данных.

Проверьте одну таблицу в базе данных

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

$ mysqlcheck -c blog posts
blog.posts                         OK

 

Если база данных защищена паролем , добавьте -u root -p в конце команды:

$ mysqlcheck -c blog posts -u root -p
Enter password:
blog.posts                         OK

 

Анализ всех таблиц в базе данных

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

$ mysqlcheck -a blog posts
blog.posts                         OK

 

Если сервер MySQL / MariaDB работает на удаленном хосте,  добавьте -h в конце команды:

$ mysqlcheck -a blog posts -h remotehost.com
blog.posts                         OK

 

Оптимизировать все таблицы во всех баз данных

$ mysqlcheck -o --all-databases
blog.users
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
mysql.time_zone_transition_type                    Table is already up to date

 

Table does not support optimize, doing recreate + analyze instead - означает, что мы делаем OPTIMIZE в таблицах InnoDB, который не поддерживает эту опцию. При выполнении OPTIMIZE в таблицах, InnoDB создает пустую таблицу, копирует все строки из существующей таблицы в новую, удаляет старую и переименовывает новую таблицу, а затем запускает ANALYZE в таблицах.
Table is already up to date - Означает, что таблица актуальна, и нет никакой необходимости проверять её.

Восстановление нескольких баз данных

Следующая команда восстановит все таблицы в обоих базах данных:

$ mysqlcheck -r --databases blog blog2

 

Если вы видите: note : The storage engine for the table doesn't support repair, то это означает, что вы делаете REPAIR на InnoDB.

Оптимизация и ремонт всех таблиц во всех базах данных

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

$ mysqlcheck --auto-repair -o --all-databases

 

Большинство аргументов, используемых mysqlcheck

-c, --checkПроверить таблицу на наличие ошибок.
-a, --analyzeАнализировать данные таблицы.
-o --optimizeОптимизация таблиц.
-r, --repairВыполнение работ по ремонту, которые можно исправить почти все, за исключением уникальных ключей, которые не являются уникальными.
--auto-repairЕсли проверенная таблица повреждена, автоматически восстановить ее. Ремонт будет сделан после того, как все таблицы были проверены.
-A, --all-databasesПроверьте все базы данных. Это то же самое, как -databases со всеми выбранными базами данных.
-B, --databasesПроцесс все таблицы в названных баз данных. С помощью этой опции, все имена аргументов рассматриваются как имена баз данных, а не как имена таблиц.
--tablesЗаменяет -databases или -B вариант таким образом, что все аргументы имени следующей опции рассматриваются как имена таблиц.
-g, --check-upgradeПроверка таблицы для версии зависящих от изменений. Может использоваться с опцией -auto-repair  для исправления таблиц, требующих версии зависящих от обновления.

PS. Если вам понравился этот пост, пожалуйста, поделитесь им с друзьями в социальных сетях с помощью кнопок, расположенных ниже поста или просто оставьте комментарий. Благодарю.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Исправление ошибок в базе данных MySQL

Некоторые типы ошибок в работе с базой данных MySQL при импорте или экспорте базы данных.

Ошибка 1

При экспорте MySQL через phpMyAdmin возникала ошибка, которая приводила к невозможности выполнить сохранение база данных. Причина была в испортившихся таблицах, из-за которой и возникала ошибка.

Ошибка была следующего вида:

Не удалось создать резервную копию базы данных. Процесс завершился с ошибкой: ‘mysqldump: Got error: 1146: Table ‘site.wp_subscribe_reloaded_subscribers’ doesn’t exist when using LOCK TABLES

Решение

Через SSH зайти на VDS.

Использовать команду:

mysqlcheck -u MySQL_name -p MySQL_user_name

Ввести пароль от базы данных.

У меня был выведен список всех таблиц, где несуществующая таблица была показана с ошибкой. В самой базе данных MySQL её не было, а phpMyAdmin на неё все равно ругался.

MySQL_name.wp_statpress                           OK
MySQL_name.wp_subscribe_reloaded_subscribers
Error    : Table ‘MySQL_name.wp_subscribe_reloaded_subscribers’ doesn’t exist
status   : Operation failed
MySQL_name.wp_term_relationships                  OK

Ввести команду (подтвердить паролем):

Появится такая строка:

Нужно выбрать базу данных:

Показать таблицы в ней (Точка с запятой обязательна!):

Будут показаны все таблицы.

После этого удалил таблицу:

drop table wp_subscribe_reloaded_subscribers;

Появилась ошибка:

ERROR 1051 (42S02): Unknown table ‘wp_subscribe_reloaded_subscribers’

но при этом она была удалена и больше нигде не отображалась, а экспорт заработал.

Ошибка 2

Сообщение об ошибки возникло на CentOS с ISPmanager.

При создании базы данных с именем, которое когда-то существовало, возникала ошибка:
«Имя базы уже существует»

Имя базы было в таблице db в системной базе MySQL. Удаление записи оттуда решило эту проблему.

Ошибка 3

При импорте базы данных возникала следующая ошибка:

#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘…..sql’ at line 1

В архиве базы данных находилось несколько файлов. Надо было разархивировать архив и заархивировать только файл базы данных.

Ошибка 4

You probably tried to upload a file that is too large. Please refer to documentation for a workaround for this limit.

Решение приведено статье ошибка при импорте в phpMyAdmin.

repair and check mysql bases by ssh

База на MySQL в несколько сотен тысяч сообщений требует регулярного обслуживания, там неизбежно возникают ошибки, пускай и мелкие, но они имеют свойство накапливаться, и если забить на несколько месяцев, то возможно возникновение проблем. В большинстве случаев все легко решается простой оптимизацией таблиц (тех, которым эта оптимизация нужна) через phpMyAdmin, иногда какие-то таблицы приходится восстанавливать. Но иногда проблема оказывается слишком серьезной и phpMyAdmin банально виснет пытаясь восстановить огромную таблицу. Вот тут то на помощь и приходит возможность зайти и все исправить через SSH.

Что такое SSH я здесь объяснять не стану, подразумеваем что вы уже знаете что это и как этим пользоваться. По этому начнем сразу в главного.

 

 

Итак, заходим по SSH на сервер и набираем следующую команду:

mysqlcheck -uваш_логин_базы -pваш_пароль_базы –auto-repair –check –optimize –all-databases

 

На место команды -uваш_логин_базы подставляете после -u свой логин, на место пароля – свой пароль. Тут все просто. Остальные инструкции обеспечивают проверку базы, в случае найденных ошибок восстановление, оптимизацию таблиц, ну и наконец последняя команда –all-databases означает что будут обработаны все базы данных. Работает эта утилита быстро, спокойно кушает то, на чем намертво виснет phpMyAdmin, в общем крайне полезная штука.

 

На случай если вам вдруг нужны другие команды утилиты mysqlcheck привожу тут списочек (его же можно получить просто набла в командной строке mysqlcheck или mysqlcheck -help):

  • -A, --all-databases

    Проверить все базы данных. Аналогична опции --databases, если указать все базы данных.

  • -1, --all-in-1

    Вместо выполнения запросов для каждой таблицы в отдельности выполнить все запросы в одном отдельно для каждой таблицы. Имена таблиц будут представлены в виде списка имен, разделенных запятой.

  • -a, --analyze

    Анализировать данные таблицы.

  • --auto-repair

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

  • -#, --debug=...

    Выводит информацию журнала отладки. Часто используется следующий набор параметров: ‘d:t:o,filename’

  • --character-sets-dir=...

    Директория, где находятся установки символов.

  • -c, --check

    Проверить таблицу на наличие ошибок.

  • -C, --check-only-changed

    Проверить только таблицы, измененные со времени последней проверки или некорректно закрытые.

  • --compress

    Использовать сжатие данных в протоколе сервер/клиент.

  • -?, --help

    Вывести данную вспомогательную информацию и выйти из программы.

  • -B, --databases

    Проверить несколько баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов рассматриваются как имена баз данных.

  • --default-character-set=...

    Установить набор символов по умолчанию.

  • -F, --fast

    Проверить только базы данных, которые не были закрыты должным образом.

  • -f, --force

    Продолжать даже при получении ошибки SQL.

  • -e, --extended

    При использовании данного параметра совместно с CHECK TABLE можно быть на 100 процентов быть уверенным в целостности таблицы, хотя это и займет много времени. Если же использовать этот параметр с REPAIR TABLE, запустится расширенное восстановление таблицы, которое может потребовать не только длительного времени выполнения, но и привнесет также массу ненужных строк!

  • -h, --host=...

    Подключиться к хосту.

  • -m, --medium-check

    Быстрее, чем --extended-check, но находит только 99,99 процентов всех ошибок. Для большинства случаев этот вариант вполне подходит.

  • -o, --optimize

    Оптимизировать таблицу.

  • -p, --password[=...]

    Используемый пароль при подключении к серверу. Если пароль не указан, у пользователя запрашивается пароль с терминала.

  • -P, --port=...

    Номер порта, используемого для подключения по TCP/IP.

  • --protocol=(TCP | SOCKET | PIPE | MEMORY)

    Для указания протокола соединения, который надлежит использовать. Новшество в MySQL 4.1.0.

  • -q, --quick

    При использовании данной опции совместно с CHECK TABLE предотвращается сканирование строк для корректировки неправильных связей. Это наиболее быстрый метод проверки. Если же использовать этот параметр с REPAIR TABLE, программа попытается восстановить только систему индексов. Это наиболее быстрый метод восстановления таблицы.

  • -r, --repair

    Может исправить почти все, за исключением уникальных ключей, имеющих дубликаты.

  • -s, --silent

    Выводить только сообщения об ошибках.

  • -S, --socket=...

    Файл сокета, используемый для подсоединения.

  • --tables

    Перекрывает опцию --databases (-B).

  • -u, --user=#

    Имя пользователя MySQL, если этот пользователь в данное время не является активным.

  • -v, --verbose

    Вывести информацию о различных этапах.

  • -V, --version

    Вывести информацию о версии и выйти из программы.

 

Общий формат запуска утилиты (в зависимости от потребностей чинить ли отдельные таблицы в базе, отдельные базы, или все сразу):

 shell> mysqlcheck [OPTIONS] database [tables]

 shell> mysqlcheck [OPTIONS] –databases DB1 [DB2 DB3…]

 shell> mysqlcheck [OPTIONS] –all-databases

Как проверить и восстановить таблицы MySQL с помощью Mysqlcheck

Когда ваша таблица mysql повреждена, воспользуйтесь командой mysqlcheck для ее восстановления.

Команда Mysqlcheck проверяет, исправляет, оптимизирует и анализирует таблицы.

1. Проверить конкретную таблицу в базе данных

Если ваше приложение выдает сообщение об ошибке, в котором говорится, что определенная таблица повреждена, выполните команду mysqlcheck, чтобы проверить эту таблицу.

В следующем примере проверяется таблица сотрудников в базе данных Geekstuff.

 # mysqlcheck -c thegeekstuff Сотрудник -u root -p
Введите пароль:
thegeekstuff.employee OK 

Вы должны передать имя пользователя / пароль команде mysqlcheck. В противном случае вы получите следующее сообщение об ошибке.

 # mysqlcheck -c thegeekstuff Сотрудник
mysqlcheck: Получена ошибка: 1045: Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: NO) при попытке подключения 

Обратите внимание, что команда myisamchk, которую мы недавно обсуждали, работает аналогично команде mysqlcheck.Однако преимущество команды mysqlcheck заключается в том, что ее можно выполнить, когда запущен демон mysql. Таким образом, используя команду mysqlcheck, вы можете проверить и восстановить поврежденную таблицу, пока база данных все еще работает.

2. Проверить все таблицы в базе данных

Чтобы проверить все таблицы в конкретной базе данных, не указывайте имя таблицы. Просто укажите имя базы данных.

В следующем примере проверяются все таблицы в базе данных alfresco.

 # mysqlcheck -c alfresco -u корень -p
Введите пароль:
под открытым небом.JBPM_ACTION ОК
alfresco.JBPM_BYTEARRAY ОК
alfresco.JBPM_BYTEBLOCK ОК
alfresco.JBPM_COMMENT ОК
alfresco.JBPM_DECISIONCONDITIONS ОК
alfresco.JBPM_DELEGATION ОК
alfresco.JBPM_EVENT ОК
.. 

3. Проверить все таблицы и все базы данных

Чтобы проверить все таблицы и все базы данных, используйте параметр –all-databases вместе с параметром -c, как показано ниже.

 # mysqlcheck -c -u root -p --all-databases
Введите пароль:
thegeekstuff.employee ОК
alfresco.JBPM_ACTION ОК
alfresco.JBPM_BYTEARRAY ОК
alfresco.JBPM_BYTEBLOCK ОК
..
..
mysql.help_category
ошибка: требуется обновление таблицы. Пожалуйста, сделайте "REPAIR TABLE` help_category` "или сделайте дамп / перезагрузку, чтобы исправить это!
mysql.help_keyword
ошибка: требуется обновление таблицы.Пожалуйста, сделайте "REPAIR TABLE` help_keyword` "или сделайте дамп / перезагрузку, чтобы исправить это!
.. 

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

В следующем примере проверяются все таблицы в базе данных geekstuff и alfresco.

 # mysqlcheck -c -u root -p --databases thegeekstuff alfresco
Введите пароль:
thegeekstuff.employee ОК
alfresco.JBPM_ACTION ОК
под открытым небом.JBPM_BYTEARRAY ОК
alfresco.JBPM_BYTEBLOCK ОК
.. 

4. Анализируйте таблицы с помощью Mysqlcheck

Ниже приводится анализ таблицы сотрудников, которая находится в базе данных Geekstuff.

 # mysqlcheck -a сотрудник thegeekstuff -u root -p
Введите пароль:
thegeekstuff.employee Таблица уже обновлена ​​

Внутренняя команда mysqlcheck использует команду «ANALYZE TABLE». Пока mysqlcheck выполняет команду анализа, таблица заблокирована и доступна для других процессов только в режиме чтения.

5. Оптимизация таблиц с помощью Mysqlcheck

Следующая таблица оптимизирует таблицу сотрудников, которая находится в базе данных Geekstuff.

 # mysqlcheck -o thegeekstuff Сотрудник -u root -p
Введите пароль:
thegeekstuff.employee OK 

Внутренняя команда mysqlcheck использует команду «OPTIMIZE TABLE». Когда вы удаляете много строк из таблицы, оптимизация помогает освободить неиспользуемое пространство и дефрагментировать файл данных. Это может улучшить производительность на огромных таблицах, которые претерпели несколько обновлений.

6. Ремонт таблиц с помощью Mysqlcheck

Следующая таблица ремонтирует сотрудников, которая находится в базе данных Geekstuff.

 # mysqlcheck -r сотрудник thegeekstuff -u root -p
Введите пароль:
thegeekstuff.employee OK 

Внутренняя команда mysqlcheck использует команду «REPAIR TABLE». Это восстановит и исправит поврежденные MyISAM и архивные таблицы.

7. Объедините таблицы проверки, оптимизации и ремонта

Вместо того, чтобы проверять и ремонтировать отдельно.Вы можете объединить функции проверки, оптимизации и восстановления, используя «–автоматический ремонт», как показано ниже.

Следующие действия проверяют, оптимизируют и восстанавливают всю поврежденную таблицу в базе данныхgeekstuff.

 # mysqlcheck -u root -p --auto-repair -c -o thegeekstuff 

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

 # mysqlcheck -u root -p --auto-repair -c -o --all-databases 

Если вы хотите знать, что делает команда во время проверки, добавьте –debug-info, как показано ниже.Это полезно, когда вы проверяете огромную таблицу.

 # mysqlcheck --debug-info -u root -p --auto-repair -c -o thegeekstuff employee
Введите пароль:
Таблица thegeekstuff.employee уже обновлена

Время пользователя 0,00, системное время 0,00
Максимальный размер резидентного набора 0, размер интегрального резидентного набора 0
Нефизические ошибки страницы 344, Физические ошибки страницы 0, Свопы 0
Блоки на входе 0 из 0, сообщений на входе 0 из 0, сигналов 0
Добровольное переключение контекста 12, Непроизвольное переключение контекста 9 

8.Дополнительные полезные параметры Mysqlcheck

Ниже приведены некоторые ключевые параметры, которые вы можете использовать вместе с mysqlcheck.

  • -A, –all-databases Рассмотреть все базы данных
  • -a, –analyze Анализировать таблицы
  • -1, –all-in-1 Использовать один запрос для каждой базы данных с таблицами, перечисленными через запятую
  • –авто-ремонт Автоматическое восстановление таблицы, если она повреждена
  • -c, –check Проверить таблицу ошибок
  • -C, –check-only-changed Проверить таблицы, которые были изменены с момента последней проверки
  • -g, –check-upgrade Проверить наличие изменений, зависящих от версии, в таблицах
  • -B, –databases Проверить более одной базы данных
  • -F, –fast Проверить, что таблицы закрыты неправильно
  • –fix-db-names Исправить имена БД
  • –fix-table-names Исправить имена таблиц
  • -f, –force Продолжать, даже если есть ошибка
  • -e, –extended Выполняет расширенную проверку таблицы.Это займет много времени.
  • -m, –medium-check Быстрее, чем опция расширенной проверки, но выполняет большинство проверок
  • -o, –optimize Оптимизировать таблицы
  • -q, –quick Опция проверки быстрее, чем средняя
  • -r, –repair Исправить повреждение таблицы

Если вам понравилась эта статья, возможно, вам понравится ..

.

Невозможно подключиться к базе данных MySQL

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *