Конфигурация MySQL

Материал из ISPWiki
Перейти к: навигация, поиск
Иерархия: VMmanager KVM -> Дополнительно
VMmanager Cloud -> Дополнительно

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

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

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

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

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

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

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

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

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

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

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

MySQLTuner

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

MySQLTuner необходимо установить или загрузить.

Установка MySQLTuner:

yum install mysqltuner

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

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

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

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'.

В таком случае необходимо загрузку запустить с ключом --no-check-certificate:

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

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

mysqltuner

или

mysqltuner --user root --pass rootpassword

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

perl mysqltuner.pl

или

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