Последнее время пришлось заняться оптимизацией своего VDS на RuWEB. Нет всё нормально, но любой проект время от времени требует обновления дизайна, оптимизации таблиц, вообщем ТО. В частности пришлось заняться оптимизацией MySQL. Раньше никогда этим заниматься не приходилось. Всё делаю по результатам гугления и эти заметки нового врядли что-то дадут человеку опытному. Скорее эаметки для себя. Но кто его знает. Комментарии приветствуются.
Перезагрузка MySQL
Первая проблема с которой столкнулся нормальная перезагрузка сервиса MySQL из Putty. Большинство советов в сети не работали у RuWEB. Там FreeBSD 8 и MySQL 5. Ответ нашел на форуме у RuWEB, практически в факе.
/usr/local/etc/rc.d/mysql-server restart — перезапуск mysql
/usr/local/etc/rc.d/mysql-server start — запуск mysql
/usr/local/etc/rc.d/mysql-server stop — остановка mysql
Где лежит my.cnf
Все настройки MySQL прописываются в файле my.cnf . Вот только кладут его в разные места. У меня он лежит в /etc ( полный путь /etc/my.cnf )
Диагностика MySQL
Глупо менять множество параметров в my.cnf в слепую. Озадачился поиском способа диагностики и поиска узких мест MySQL.
1. Есть стандартная утилита mysqladmin . Она не то чтобы предназначена для оптимизации, она для администрирования сервера MySQL. Но может дать весьма полезную информацию во время комплекса мер по оптимизации MySQL.
По ссылке примеры использования mysqladmin
Например:
mysqladmin -u root –pВАШ_ПАРОЛЬ status
— состояние сервера MySQL
mysqladmin -u root — pВАШ_ПАРОЛЬ variables
— вывод переменных my.cnf
Команды mysqladmin можно комбинировать.
mysqladmin -u root — pВАШ_ПАРОЛЬ process status version
2. Есть классная утилита mysqltuner.pl . Она мало того что элементарно устанавливается и работает, анализирует работу сервера MySQL, так ещё и выводит рекомендации по оптимизации MySQL. В простом и доступном виде, что не маловажно если оптимизация разовая процедура ( мой случай ). Надо отметить что рекомендации этой утилиты тем точнее, чем дольше работает сервер MySQL. То есть если вы только что перезапустили сервер, то запускать mysqltuner.pl смысла не много. Дайте серверы поработать хотя бы сутки.
Устанавливаем:
wget http://mysqltuner.pl/
Запускаем:
perl mysqltuner.pl
Вводим логин/пароль. Утилита дает вывод, а в конце рекомендации по обслуживанию сервера MySQL и изменению конкретных переменных в MySQL.
Пока всё. Об изменении конкретных переменных в my.cnf и их влиянии на скорость работы MySQL чуть позже. Надо дать время поработать серверу, чтобы делать выводы.
Azzrael 2010-12-19
# /usr/local/etc/rc.d/mysql-server stop