Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Оцените статью

Давайте немного поэкспериментируем с Микро-VPS. Из коробки MySQL сконфигурирован для автоматической подстройки под окружение, но на совсем ограниченных ресурсах я стабильно ловлю OOM-Killer и мне это не нравится, а переплачивать за этот недопроект не хочется и давайте тюнить.

Для минимизации потребления памяти MySQL на микро‑VPS нужно скорректировать ключевые параметры в конфигурационном файле, сейчас в Ubuntu они находятся в файле /etc/mysql/mysql.conf.d/mysqld.cnf, в других дистрибутивах +/- там-же и искать.

Для минимизации потребления памяти MySQL на микро‑VPS нужно скорректировать ключевые параметры в конфигурационном файле (my.cnf или my.ini). Ниже — основные настройки.

Основные параметры для оптимизации

Здесь конечно все на вкус и цвет, но будем рассматривать для VPS-минималок.

[mysqld]

# Ограничение соединений
max_connections = 50

# Буферы и кэши
key_buffer_size = 16M
tmp_table_size = 16M
max_heap_table_size = 16M
query_cache_size = 0  # Отключить кэш запросов в новых версиях MySQL
query_cache_type = 0

# InnoDB
innodb_buffer_pool_size = 64M  # Для микро‑VPS с 512–1024 МБ RAM
innodb_log_file_size = 16M
innodb_buffer_pool_instances = 1

# Кэширование таблиц
table_open_cache = 64
table_definition_cache = 128

# Сетевые настройки
net_buffer_length = 16K
read_buffer_size = 16K
read_rnd_buffer_size = 8K
sort_buffer_size = 16K
join_buffer_size = 8K

# Логирование
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

# Другие оптимизации
thread_cache_size = 4
skip-name-resolve

Обратите внимание на параметры (они могут не поддерживаться):

query_cache_size = 0  # Отключить кэш запросов в новых версиях MySQL
query_cache_type = 0

Остальное дорабатывается и адаптируется под имеющиеся ресурсы.

Адаптация под объём RAM

Объём RAMinnodb_buffer_pool_sizemax_connections
512 МБ64–128 МБ20–30
1 ГБ128–256 МБ30–50
2 ГБ256–512 МБ50–100

Дополнительные рекомендации

  1. Выбор движка: если не нужны транзакции и сложные запросы, рассмотрите MyISAM вместо InnoDB (меньше потребляет памяти, но менее надёжен).
  2. Отключение ненужных компонентов:
   skip-networking  # Если доступ только локальный
   skip-external-locking
  1. Мониторинг использования памяти:
   # Проверить текущее потребление памяти MySQL
   ps aux | grep mysql

   # Мониторинг запросов
   tail -f /var/log/mysql/mysql-slow.log
  1. Оптимизация запросов: проанализируйте медленные запросы через лог slow_query_log, добавьте индексы, упростите сложные JOIN.
  2. Настройка swap: убедитесь, что swap настроен, чтобы избежать OOM‑убийства процесса MySQL при нехватке RAM.

Пример полной конфигурации для 512 МБ RAM

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Безопасность
skip-networking
skip-external-locking

# Производительность
max_connections = 20
key_buffer_size = 16M
tmp_table_size = 16M
max_heap_table_size = 16M
query_cache_size = 0
query_cache_type = 0

# InnoDB
innodb_buffer_pool_size = 64M
innodb_log_file_size = 16M
innodb_buffer_pool_instances = 1

# Кэширование
table_open_cache = 32
table_definition_cache = 64

# Сетевые
net_buffer_length = 16K
read_buffer_size = 16K
read_rnd_buffer_size = 8K
sort_buffer_size = 16K
join_buffer_size = 8K

# Логирование
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

# Потоки
thread_cache_size = 4

# Безопасность
skip-name-resolve

Важные замечания

  • Тестируйте изменения постепенно: вносите правки по одной, перезапускайте MySQL и отслеживайте потребление памяти.
  • Мониторинг: используйте top, htop, free -h для отслеживания нагрузки.
  • Резервные копии: перед изменениями сделайте бэкап конфигурации и данных.
  • Обновления: в новых версиях MySQL некоторые параметры могут быть устаревшими — сверяйтесь с официальной документацией.

После внесения изменений перезапустите MySQL:

# systemctl restart mysql

Похожие записи

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Nextcloud — это бесплатное и открытое программное обеспечение для создания собственного облачного хранилища данных. Оно позволяет пользователям хранить файлы, синхронизировать их между устройствами, делиться ими с другими пользователями, а также…

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Gitea — это легковесный, самоуправляемый сервис для хостинга Git-репозиториев, написанный на Go. Он является отличной альтернативой GitHub, GitLab или Bitbucket для тех, кто хочет сохранить полный контроль над своими данными…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Подробная инструкция по локальной установке Next Cloud server в Ubuntu 24.04 с использованием Nginx и PHP-FPM

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Руководство по установке и настройке Gitea: от Docker до локальной инсталляции на Ubuntu 24.04

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил

Немного о настройке UFW в Ubuntu: от основ до продвинутых правил