Оптимальная конфигурация MySQL нужна для корректной работы VMmanager. Особенно актуальна такая необходимость, если панель управления работает с большим количеством виртуальных машин. В противном случае возможны зависания и проблемы при работе панели управления с базой данных MySQL. В статье приведены рекомендации по настройке MySQL для VMmanager.

Панель управления не изменяет настройки MySQL. Конфигурация MySQL индивидуальна для серверов в зависимости от их вычислительных ресурсов и программного обеспечения, поэтому требует ручной настройки.

Конфигурационный файл серверной части MySQL расположен по пути: /etc/my.cnf.d/server.cnf.

Подсистема хранения


В качестве подсистемы хранения рекомендуем использовать InnoDB.

Рекомендации конфигурации


Приведены значения наиболее важных параметров с точки зрения оптимизации MySQL.

Обратите внимание!

Эти значения работоспособны, но даже при использовании рекомендаций для достижения идеальной конфигурации, как правило, требуется анализ работы MySQL на реальном сервере и корректировка настроек.

MySQL выделено 4GB RAM

Секция \[server\]

table_open_cache = 256 # максимальное количество открытых таблиц, кэшированных в одном экземпляре кеша таблицы.
sort_buffer_size = 512K # объём памяти для буфера, который выделяет каждый сеанс, выполняющий сортировку.
net_buffer_length = 4M # начальный размер буферов соединений и потоков для каждого потока клиентов.
join_buffer_size = 256K # минимальный размер буфера для запросов, которые не могут использовать индексы и вместо этого выполняют полное сканирование таблицы.
query_cache_size = 32M # размер кэша.
query_cache_limit = 512K # максимальный размер запросов, которые сохраняются в кэш.
max_connections = 300 # максимальное количество параллельных соединений к серверу.
innodb_buffer_pool_size = 3G # размер буфера для InnoDB.
innodb_additional_mem_pool_size = 4M # размер пула памяти InnoDB, используемый для хранения информации о внутренних структурах данных.
innodb_lock_wait_timeout = 60 # время в секундах, в течение которого транзакция InnoDB ожидает блокировки строки InnoDB.
BASH

MySQL выделено 8GB RAM

Секция \[server\]

table_open_cache = 512 # максимальное количество открытых таблиц, кэшированных в одном экземпляре кеша таблицы.
sort_buffer_size = 1M # объём памяти для буфера, который выделяет каждый сеанс, выполняющий сортировку.
net_buffer_length = 8M # начальный размер буферов соединений и потоков для каждого потока клиентов.
join_buffer_size = 512K # минимальный размер буфера для запросов, которые не могут использовать индексы и вместо этого выполняют полное сканирование таблицы.
query_cache_size = 32M # размер кэша.
query_cache_limit = 512K # максимальный размер запросов, которые сохраняются в кэш.
max_connections = 2000 # максимальное количество параллельных соединений к серверу.
innodb_buffer_pool_size = 4G # размер буфера для InnoDB.
innodb_additional_mem_pool_size = 4M # размер пула памяти InnoDB, используемый для хранения информации о внутренних структурах данных.
innodb_lock_wait_timeout = 60 # время в секундах, в течение которого транзакция InnoDB ожидает блокировки строки InnoDB.
BASH

MySQLTuner


MySQLTuner — скрипт, анализирующий статистику работы MySQL, и, на основе полученных данных, выдающий рекомендации по настройке. Для получения более надёжных рекомендаций нужно, чтобы MySQL сервер был запущен по крайней мере в течение 24-48 часов без изменения конфигурации. Однако даже в таком случае внимательно анализируйте рекомендации MySQLTuner.

MySQLTuner нужно установить или загрузить.

Установка MySQLTuner:

yum install mysqltuner
BASH

или загрузка:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.p
BASH

Во время загрузки возможна ошибка вида:

ERROR: cannot verify raw.githubusercontent.com's certificate, issued by '/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA': Unable to locally verify the issuer's authority. To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate'.
BASH

Тогда запустите загрузку с ключом --no-check-certificate:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate
BASH

Запуск MySQLTuner, если он был установлен:

mysqltuner
BASH

или

mysqltuner --user root --pass rootpassword
BASH

Запуск MySQLTuner, если он был скачан:

perl mysqltuner.pl
BASH

или

perl mysqltuner.pl --user root --pass rootpassword
BASH