AFX.RU

Сайт Влада Элбакяна

Ремонт и востановление базы MySQL по SSH

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

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

 {module Баннер2}

 

Итак, заходим по 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
 
В общем вот. Надеюсь кому то пригодится.
 
{module Баннер2}

You have no rights to post comments

Случайное Фото