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

Частенько возникают ошибки в базах данных, либо индексы сбились, либо запросы кривые, база начинает тормозить.
Первым делом проверим ошибки во всех базах.

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

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

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

Исправление таблиц MyISAM.
Останавливаем сервер mysql.

# /usr/local/etc/rc.d/mysql-server 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 -r /var/db/mysql/наша_база/ary_mem.MYI

Либо, рекурсивно запустим процедуру исправления ошибок по всем таблицам в базе.

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

После выполнения появится вывод в консоли.

— Fixing index 1 — Fixing index 2 — Fixing index 3

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

# /usr/local/etc/rc.d/mysql-server start

Категории: mysqlМетки: mysql

Previous / Next / Up / Table of Contents

4.8.4 Использование для сопровождения и аварийного восстановления таблиц.

Начиная с версии MySQL 3.23.38 можно применять новый инструмент для проверки и восстановления -таблиц. Отличие от состоит в том, что утилита должна использоваться при работающем сервере , в то время как — при остановленном. Преимущество же заключается в том, что теперь не нужно останавливать сервер для проверки или восстановления таблиц.

Утилита использует соответствующие команды MySQL-сервера , , и удобным для пользователя образом.

Существует три альтернативных способа запуска :

shell> mysqlcheck [OPTIONS] database [tables] shell> mysqlcheck [OPTIONS] —databases DB1 [DB2 DB3…] shell> mysqlcheck [OPTIONS] —all-databases

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

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

Для изменения поведения по умолчанию можно использовать следующие обозначения:

mysqlrepair: Значение по умолчанию будет -r mysqlanalyze: Значение по умолчанию будет -a mysqloptimize: Значение по умолчанию будет -o

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

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

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

Проверить только таблицы, измененные со времени последней проверки или некорректно закрытые.
Использовать сжатие данных в протоколе сервер/клиент.
Вывести данную вспомогательную информацию и выйти из программы.
Проверить несколько баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов рассматриваются как имена баз данных.
Установить набор символов по умолчанию.
Проверить только базы данных, которые не были закрыты должным образом.
Продолжать даже при получении ошибки SQL.
При использовании данного параметра совместно с можно быть на 100 процентов быть уверенным в целостности таблицы, хотя это и займет много времени. Если же использовать этот параметр с , запустится расширенное восстановление таблицы, которое может потребовать не только длительного времени выполнения, но и привнесет также массу ненужных строк!
Подключиться к хосту.
Быстрее, чем , но находит только 99,99 процентов всех ошибок. Для большинства случаев этот вариант вполне подходит.
Оптимизировать таблицу.
Используемый пароль при подключении к серверу. Если пароль не указан, у пользователя запрашивается пароль с терминала.
Номер порта, используемого для подключения.
При использовании данной опции совместно с предотвращается сканирование строк для корректировки неправильных связей. Это наиболее быстрый метод проверки. Если же использовать этот параметр с , программа попытается восстановить только систему индексов. Это наиболее быстрый метод восстановления таблицы.
Может исправить почти все, за исключением уникальных ключей, имеющих дубликаты.
Выводить только сообщения об ошибках.
Файл сокета, используемый для подсоединения.
Перекрывает опцию ().
Имя пользователя MySQL, если этот пользователь в данное время не является активным.
Вывести информацию о различных этапах.
Вывести информацию о версии и выйти из программы.

Top / Previous / Next / Up / Table of Contents

PHP + MySQL: проверка соединения с сервером и подключения к базе

Вариант 1 с использованием phpmyadmin.

Заходим в phpmyqadmin. Если у нас несколько баз, то выбираем в левом фрейме базу с форумом, если база одна, то она будет стоять по умолчанию. В результате будем иметь:

В правом фрейме ставим галочки напротив таблиц, которые надо чинить (ремонтировать).

Получаем

В правом фрейме спускаемся в самый низ и из выпадающего меню выбираем «Починить таблицу»

Вариант 2 с использованием phpmyadmin.

В право фрейме нажимаем на ссылку SQL

В окне запроса (допустим чиним таблицы phpbb_categories, phpbb_confirm, phpbb_ranks, phpbb_search_results, phpbb_topics) набираем:
 и нажимаем кнопку «Пошел»

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

  1. заходим на сервер в командную строку
  2. набираем в командной строке команду: mysql -h DBhostname -u username -ppassword database_name
  3. если получаем что-то в виде

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1122 to server version: 3.23.39

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

то мы зашли в управление БД. Пишем команду

REPAIR TABLE `phpbb_categories` , `phpbb_confirm` , `phpbb_disallow` , `phpbb_ranks` , `phpbb_search_results` , `phpbb_topics`; и жмем ENTER
Выход из командного режима MySQL делаем с помощью exit

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

Иногда после некорректной перезагрузки сервера некоторые базы MySQL повреждаются и нуждаются в исправлении ошибок. Проверить на наличие ошибок и исправлять их можно следующими командами:

myisamchk

Параметры уровня проверки:
—medium-check — средний
—extend-check — расширенный

Пример использования:

# myisamchk —fast —silent /var/db/mysql/*/*.MYI

ВНИМАНИЕ!Myisamchk нужно запускать при остановленном mysqld, иначе нужно использовать утилиту mysqlcheck!

Пример использования утилиты mysqlcheck :

# mysqlcheck —repair  —all-databases —auto-repair -u username -p

Иногда можно наблюдать такую ошибку:

Error    : Incorrect file format

В таком случае необходимо при использовании mysqlcheck  добавить опцию —use-frm.

 

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

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