Рассмотрим утилиты для оптимизации и контроля производительности MySQL\MariaDB сервера. Некоторые из них известны широко, другие, к моему удивлению, администраторами используются редко…
1. При установке сервера БД, в директории /usr/share/mysql/ можно найти готовые конфигурационные файлы для разных конфигов сервера. Например владельцы VDS с 512 Mb памяти могут попробовать использовать отсюда конфиг my-small.cnf, либо, если его лимитов будет не достаточно, конфиг my-medium.cnf.
# ls -la /usr/share/mysql/my-* -rw-r--r-- 1 root root 4920 ноя 15 2016 /usr/share/mysql/my-huge.cnf -rw-r--r-- 1 root root 20438 ноя 15 2016 /usr/share/mysql/my-innodb-heavy-4G.cnf -rw-r--r-- 1 root root 4907 ноя 15 2016 /usr/share/mysql/my-large.cnf -rw-r--r-- 1 root root 4920 ноя 15 2016 /usr/share/mysql/my-medium.cnf -rw-r--r-- 1 root root 2846 ноя 15 2016 /usr/share/mysql/my-small.cnf
2. На сайте tools.percona.com имеется доступ к генератору конфигов сервера БД. Если предустановленного конфига по какой-то причине оказалось не достаточно, можно авторизоваться на сайте и попробовать сгенерировать конфигурацию здесь.
3. mysqladmin — клиент для работы с сервером БД. Удобный инструмент, который позволяет без запуска консоли сервера БД работать с базами и настройками MySQL. Очень удобен для использования в скриптах.
4. mysqltuner.pl — известный скрипт для оптимиации сервера БД. Скачиваем его, запускаем, и получаем анализ текущей ситуации и рекомендации по увеличению конкретных параметров в конфиге. Для получения оптимального результата, имеет смысл запускать анализ после того как сервер БД проработал без перезапуска более 24-36 часов.
# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl # chmod u+x mysqltuner.pl # ./mysqltuner.pl
5. Известный в прошлом, но к сожалению, теряющий актуальность для последних версий сервера БД скрипт tuning-primer.sh. Однако некоторые администраторы всё ещё используют его в работе. Принцип работы со скриптом аналогичный — после запуска, скрипт анализирует параметры сервера БД и даёт рекомендации по их изменению.
# wget https://launchpadlibrarian.net/78745738/tuning-primer.sh # wget https://launchpadlibrarian.net/251274960/5.7.patch # patch -p0 -i ./5.7.patch patching file tuning-primer.sh Hunk #1 succeeded at 1277 with fuzz 1. # chmod u+x ./tuning-primer.sh # ./tuning-primer.sh
6. Утилита mytop. В CentOS устанавливается из репозитория EPEL. С помощью этой утилиты мы можем подключится к серверу БД нужным пользователем, при необходимости можем указать конкретную базу данных и посмотреть статистику по ней — какой запрос был сделан, к какой базе, сколько этот запрос выполнялся, от какого хоста, в каком состоянии запрос находится сейчас и т. п. Нужные опции утилите можно передать как через параметры запуска, так и через конфиг ~/.mytop. При необходимости, утилиту можно использовать в других скриптах, для этого у неё предусмотрен соответствующий режим работы.
# yum install epel-release # yum install mytop # mytop -u sysadmin_wtuser -p superpassword -d sysadmin_wtdbase
7. Утилита mtop. В CentOS ставится из репоитория rpmforge (он всё ещё жив частично, да). Аналогично с предыдущей утилитой, администратор может получить статистику по работе сервера БД, информацию о запросах к нему. Имеется возможность принудительно завершить нужный процесс, отфильтровать результаты только для определённого пользователя или хоста.
# wget http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm # yum install rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm # yum install mtop # yum install yum-utils # yum-config-manager --disable rpmforge # mtop --dbuser=root --password=superpassword
8. Утилита innotop. В CentOS устанавливается из репозитория EPEL. Отличный инструмент для анализа и работы с базами, которые используют InnoDB. Аналогично предыдущим утилитам, innodb позволяет получить информацию о запросах к базе, конкретных таблицах, статистику репликации, информацию о буферах InnoDB и т. п.
# yum install epel-release # yum install innotop # innotop -u root -p superpassword
И mtop, и mytop, и innotop имеют поддержку ввода команд, которые позволяют администратору использовать весь доступный функционал утилит. Список команд можно получить введя уже в запущенном приложении символ знака вопроса — ?