Настройка my.cnf для стабильной работы Mysql

Один из важных моментов в скорости работы сайта, это правильная оптимизация конфигурационного файла базы данных my.cnf, с которым многие сталкиваются в процессе оптимизации системных ресурсов. Зачастую многие приведенные в сети мануалы рассказывают о настройках которые были применены к слабым конфигурациям и это не дает нужного ответа.

Я обычно использую сервера на уровне ксеонов с 32 гигабайтами памяти, поэтому найти нужную конфигурацию настроек mysql достаточно трудно, отсюда и попытки настроить самому методом тыка и проб. Что из этого получилось сегодня я постараюсь рассказать.

Исходные данные для настройки

Итак рассматриваем систему с установленным ISP manager на котором стоит Centos и MariaDB. Задача, оптимизировать работу Mysql и ускорить тем самым обработку запросов на сайтах. Для начала я приведу, пример своего my.cnf который находится по адресу etc/my.cnf, если у вас стоит Debian то смотреть надо в папке другой. Итак вот так выглядит настроенный файл, но иногда я все таки еще изменяю некоторые настройки, о которых расскажу ниже.

Тюнинг базы данных Mysql варианты

Итак что я меняю и что вижу при этом. Для начала выведу основные параметры которые считаю спорными в настройке.

Разбор параметров тюнинга Mysql

Разберёмся по порядку с каждым параметром настройки и вопросами которые есть при этом. Итак по пунктам.

key_buffer = 2Gkey_buffer_size = 4G
Так и не смог я понять, различаются ли эти два параметра или первый является устаревшим значением второго.

max_connections = 500 и thread-cache-size = 500 
По замерам выходило, что не более 90 одновременных подключений, так и поставил 500 с запасом. Тут следует учесть что следующий параметр thread-cache-size должен быть одинаковым числом с максимальным соединением. Поэтому там также стоит 500.

table-cache = 120000 и table-open-cache = 120000 
Здесь я поставил по 120000, так как таблиц у меня достаточно много, если у вас не много сайтов, то этот параметр можно не повышать.

interactive-timeout = 360
Установил в 360, чтобы снимались запросы, которые находятся без активности 6 минут или 360 секунд.

query_cache_limit = 12Mquery_cache_size    = 4Gjoin_buffer_size = 512M
Следующие три параметра настроил исходя из следующих наблюдений. Пробовал ставить query_cache_size от 2 до 6 гигабайт, в итоге оптимально показалось 4. Обработка запросов до 12 мегабайт мне вполне хватало, поэтому оставил 12. Но есть такое мнение, что большой query_cache_size на самом деле сильно грузит систему и желательно держать кеш в memcashed, на практике я не заметил особо, чтобы он забирал мощность, а вот при проверке кеша, обнаружил, что много запросов проходит через него.

sort_buffer_size    = 1Gread_buffer_size    = 1Gread_rnd_buffer_size = 2G
Буфера поставил побольше, так как несколько баз имеют большой размер, хотя есть риск переполнения памяти, тем не менее они настолько не забивали память.

Новые изменения настройки my.cnf в 2021 году

Времена идут, знания становятся лучше, поэтому я уже практически во многом перенастроил свои файлы конфигов базы данных. Сразу скажу, что в основном этот конфиг рассчитан по моим базам данных, это порядка 14 гигабайт данных на серверах с 32 памяти оперативной, ssd дисками и собственно выкручено все на соотношение скорость работы + стабильность. Поэтому вот такой конфиг сейчас использую на Centos 8 с указанными параметрами серверов.

В принципе производительность и уровень работы меня устраивает. Если у вас есть вопросы или конфигурация сервера другая, желательно написать все таки вопрос, я помогу разобраться какие параметры следует учесть. Из основного: сделан упор на работу Innodb + конфиги учитывают максимально настройки устраняющие узкие места в работе базы данных.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

+ 20 = 23

OK2WEB
OK2WEB
Более 12 лет занимаюсь разработкой и продвижением сайтов. Городские порталы, информационные и новостные сайты. Сейчас в основном разрабатываю интернет магазины и коммерческие сайты. Если у вас есть вопросы пишите, стараюсь оперативно ответить и помочь.

Плагин Wordfence: список основных проблем при сканировании сайта и их решение

Безопасность веб-сайтов стала одной из наиболее актуальных и важных проблем в современном цифровом мире. С ростом числа вредоносных атак, хакерских нападений и киберугроз, владельцы сайтов и администраторы должны принимать все возможные меры для защиты своих онлайн-присутствий. Инструменты безопасности, такие как Wordfence, становятся незаменимыми средствами...

Как ChatGPT может помочь в разработке сайта, ищем полезные варианты

ChatGPT может помочь вам создать свой веб-сайт. Хотя он не может создать реальный веб-сайт и опубликовать его в Интернете — для этого вам следует проверить эти конструкторы веб-сайтов AI — он все же может быть очень полезным компаньоном в процессе создания. Правильно, с ChatGPT на вашей стороне многие элементы процесса создания веб-сайта...

Что такое ChatGPT и OpenAi, статистика, полезные данные и описание работы

С момента своего запуска ChatGPT стал вирусным как похожий на человека чат-бот, который отвечает пользователям на основе того, что они вводят. Инструмент может отвечать на вопросы и давать ответы на основе набора данных из 300 миллиардов слов и 175 миллиардов параметров. В будущем он обязательно...

WooCommerce — Сообщение о подтверждении перед удалением товара из корзины и авто обновление корзины

Бывает задача сделать всплывающее сообщение, чтобы подтвердить, хотите ли вы удалить что-то из корзины магазина. Это требуется для явного согласия, попробуем это добавить. На самом деле довольно просто, все, что вам нужно, это немного jQuery, как показано ниже: И сразу же решим частую задачу, как...

Обзор новой версии Woocommerce 7.4 — основные изменения, журнал разработки

Вышло обновление плагин интернет магазина Woocommerce в котором большое количество добавлено изменений, исправлений. Полный обзор всех новых деталей в этой статье. Журнал изменений 7.4.0 2023-02-18 WooCommerce Fix — добавлена ​​поддержка сортировки по включенному параметру. №36215 Исправление — Разрешить навигацию по вкладкам продуктов без запроса несохраненных изменений #36235 Исправление —...

При оформлении не проходит заказ на woocommerce, и просит ввести адрес для продолжения

В последних версиях Woocommerce при оформлении и управлении полями стала выскакивать ошибка, что заказ невозможно оформить и для этого необходимо ввести адрес. Хотя поле адреса есть. Решается вставкой кода в function.php Чтобы исправить ошибку нужно чтобы передавалось поле страны доставкиили страны платёжного адреса. Простое удаление...
Содержание