Форум web-мастеров phpBB3

Модификации и расширения phpBB
Регистрация ·  Логин: Пароль: Запомнить   · Забыли пароль?




Ответить на тему
Пред. тема | След. тема 
Автор Сообщение
Admin
Аватара пользователя

Карма
29
Стаж: 5 лет 2 месяца
Сообщения: 361
Россия

Ответить с цитатой

Есть у меня один сайт в большим форумом. База на 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

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

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


Профиль  Отправить личное сообщение
Идеальный заработок для торрент-трекеров
Аватара пользователя

Карма
9
Стаж: 5 лет 2 месяца
Сообщения: 66
Откуда: Moscow
Россия

Ответить с цитатой

Или по отдельности
Желательно перед этим выполнить
service mysqld stop

далее, к примеру
myisamchk -r /var/lib/mysql/имя-базы/phpbb_search_wordmatch.MYI

и
service mysqld start
_______________________
#239
Модификации phpbb


Профиль  Отправить личное сообщение
Admin
Аватара пользователя

Карма
29
Стаж: 5 лет 2 месяца
Сообщения: 361
Россия

Ответить с цитатой

Нужно всю структуру таблицы оптимизировать а не частями, так просто можно убить таблицу.
_______________________
Если нужен стиль для сайта, стучите: ICQ 560107181
#239


Профиль  Отправить личное сообщение
Страница 1 из 1
Показать сообщения за:  Поле сортировки  
Ответить на тему

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron


9CaraTT.RU, 2012-2015
Powered by phpBB
Обратная связь