Pull to refresh

Автоматическая настройка и оптимизация сервера MySQL для повышения производительности

Reading time4 min
Views11K
Всем привет.

Хочу обсудить с сообществом наш проект, с помощью которого можно за 1 минуту создать конфигурационный файл MySQL, оптимизированный под производительность (тюнинг MySQL). Таким образом можно достаточно быстро создавать конфигурационный файл для первичной оптимизации производительности MySQL.

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

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

Мы попытались упростить эту задачу, создав проект MySQLConfigurer, с помощью которого можно за 1 минуту создать конфигурационный файл MySQL, учитывающий текущую аппаратную конфигурацию системы и статус MySQL.

MySQLConfigurer это bash скрипт и онлайн сервис, который анализирует рекомендации MySQLTuner, информацию о системе, текущий статус MySQL и подготавливает конфигурационный файл MySQL с рекомендуемыми параметрами, помогающими повысить производительность.

Подробная инструкция об использовании размещена на странице проекта, достаточно выполнить всего 5 шагов:

  1. Скачиваем скрипт, код скрипта простой и его можно посмотреть на github.
  2. Запускаем скрипт.
  3. Получаем конфигурационный файл с рекомендуемым значением параметра есть комментарий в котором указано текущее значение.
  4. Копируем файл в директорию с конфигурационными файлами MySQL.
  5. Перезапускаем MySQL.

Мы провели тесты MySQL с помощью Sysbench на виртуальном сервере с операционной системой Debian 9 (2 CPU, 2GB Ram) на таблице в 10 млн. записей.

Тестирование проводилось на 2 конфигурациях: параметры MySQL по умолчанию и рекомендованные MySQLConfigurer. На каждой конфигурации провели по 2 теста: только чтение и чтение / запись.

Тесты показали увеличение производительности до 30% по сравнению с конфигурацией по умолчанию. Результаты тестов можно посмотреть по ссылке.

Сейчас MySQLConfigurer поддерживает MySQL версий 5.5, 5.6 и 5.7.

Буду благодарен за любую обратную связь по проекту MySQLConfigurer. Спасибо.

Страница проекта

Update 24.05.2020
Запущен сайт проекта releem.ru
Мы ставим перед собой задачу сделать инструмент, помогающий инженерам автоматически конфигурировать MySQL для увеличения производительности и снижения затрат на оборудование. Задача разового тюнинга MySQL станет не актуальной и освободившееся время инженеры смогут потратить на дальнейшее улучшение инфраструктуры своих проектов.

Update 24.06.2020
Выпустили релиз 0.3.0
  • Проверена совместимость с MySQL 5.5, MySQL 5.6, MySQL 5.7, MariaDB 10.1, MariaDB 10.2, MariaDB 10.3.
  • Добавлен расчет параметра 'key_buffer_size' для увеличения производительности MyIsam storage engine.
  • Добавлен расчет параметра 'innodb_buffer_pool_chunk_size' для MySQL 5.7.5 и более новых версий, MariaDB 10.2.2 и более новых версий.
  • Добавлен расчет параметра 'max_connections' на основе показателя 'Max_used_connections'.
  • Уточнен расчет параметра 'innodb_log_file_size'.
  • Исправлена документация. Подробно описано как безопасно применить конфигурационный файл MySQL.


Update 08.07.2020
Запущен сайт проекта releem.com
Выпустили релиз 0.3.1
  • Добавлен расчет параметра 'table_open_cache'
  • Добавлен расчет параметра 'table_definition_cache'


Update 24.08.2020
Выпустили релиз 0.3.2
  • Добавлена поддержка MySQL 8, MariaDB 10.4, MariaDB 10.5.
  • Исправлен расчет параметра 'key_buffer_size'
  • Протестирована совместимость MySQL 5.5, MySQL 5.6, MySQL 5.7, MySQL 8.0, MariaDB 10.1, MariaDB 10.2, MariaDB 10.3, MariaDB 10.4, MariaDB 10.5.
  • В документацию добавлена секция о безопасности.
  • В документацию добавлена информация об установке open_files_limit.


Update 22.11.2020
Выпустили релиз 0.4.0
  • Улучшена документация.
  • Добавлена опция -m для установки лимита памяти для MySQL. Применима, если MySQL стоит параллельно с веб-серверов и память необходимо распределить.
  • Исправлено скачивание MySQLTuner на каждом запуске.
  • Созданы группы в Slack и Telegram для поддержки.


Update 30.01.2021
Выпустили релиз 0.5.0
  • Быстрая установка. Достаточно запустить одну команду.
  • Улучшена документация.
  • Опубликовано описание тестирования производительности MySQL 5.7 на сайте releem.com.
  • Исправлена проблема с таймаутами. Некорректная рекомендация значений таймаутов.
  • Добавлена рекомендация «max_allowed_packet».
  • Добавлена рекомендация «read_rnd_buffer_size».
  • Улучшен расчет следующих параметров: «sort_buffer_size», «innodb_buffer_pool_size», «key_buffer_size», «innodb_buffer_pool_instances».


Update 17.06.2021
Выпустили релиз 0.6.0
  • Добавлена новая метрика MySQL Performance Score.
  • Добавлена информация о ходе выполнения сбора инфорации. Closes #62
  • Добавлен вывод рекоменданной конфигурации MySQL.
  • Улучшена документация.
  • Улучшена рекомендация 'myisam_sort_buffer_size'.
  • Улучшена рекомендация 'read_rnd_buffer_size' .
  • Улучшена рекомендация 'sort_buffer_size' .
  • Удалено использование домена «mysqltuner.pl».


Update 16.11.2021
Выпустили релиз 0.7.0
  • Добавлено отображения последнего сбора данных. Closes #72
  • Добавлена автоматическая установка Releem Agent
  • Исправлены слишком высокие значения кэшей. Closes #73
  • Исправлена ошибка когда используется только MyISAM. Closes #76
  • Приведено к общему виду предыдущие и рекомендованные значения конфигурации MySQL. Closes #74
  • Убрали рекомендации MySQLTuner
Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments50

Articles