---

1. Проверить текущее потребление памяти

  • Используйте команду top или htop, чтобы подтвердить, что MariaDB действительно потребляет 90% памяти.
  • Проверьте текущую конфигурацию MariaDB:
  mysql -u root -p -e "SHOW VARIABLES LIKE '%buffer_pool_size%';"
  mysql -u root -p -e "SHOW VARIABLES LIKE '%cache%';"

Это покажет текущие значения innodb_buffer_pool_size, query_cache_size и других параметров, влияющих на память.

---

2. Определить объем оперативной памяти

  • Узнайте общий объем оперативной памяти на сервере:
  free -m

Например, если у вас 16 ГБ (16384 МБ) оперативной памяти, то 80% = ~13 ГБ (13312 МБ).

---

3. Настроить innodb_buffer_pool_size

  • Основной параметр, который нужно настроить, — это innodb_buffer_pool_size. Рекомендуется установить его на уровне 60–80% от общей оперативной памяти, оставляя место для ОС и других процессов.
  • Откройте файл конфигурации MariaDB (обычно /etc/my.cnf или /etc/my.cnf.d/server.cnf):
  sudo nano /etc/my.cnf
  • Найдите или добавьте секцию [mysqld] и установите параметр innodb_buffer_pool_size. Например, для 13 ГБ:
  [mysqld]
  innodb_buffer_pool_size=13G

Если у вас меньше памяти (например, 8 ГБ), установите значение около 6–6.4 ГБ:

  innodb_buffer_pool_size=6G

---

4. Дополнительные параметры для оптимизации памяти

  • Отключить или уменьшить кэш запросов (устаревший в новых версиях MariaDB, но может быть включен):
  query_cache_size=0
  query_cache_type=0
  • Ограничить размер временных таблиц:
  tmp_table_size=64M
  max_heap_table_size=64M
  • Уменьшить количество соединений, если их слишком много:
  max_connections=100
  • Ограничить память для сортировки:
  sort_buffer_size=512K
  read_rnd_buffer_size=256K
  join_buffer_size=256K

---

5. Перезапустить MariaDB

После внесения изменений сохраните файл и перезапустите службу MariaDB:

sudo systemctl restart mariadb

---

6. Проверить эффект изменений

  • После перезапуска снова проверьте потребление памяти:
  top

или

  free -m
  • Убедитесь, что MariaDB теперь использует не более 80% памяти.

---

7. Мониторинг и тюнинг

  • Используйте утилиту mysqltuner для дополнительной оптимизации:
  sudo yum install mysqltuner
  mysqltuner

Она предложит рекомендации по настройке параметров в зависимости от текущей нагрузки.

  • Если алерт продолжает срабатывать, проверьте, не вызвано ли это другими процессами или утечками памяти. Используйте ps aux --sort=-%mem | head для анализа.

---
=============

если у вас настроен Galera Cluster для MariaDB, изменения конфигурации, описанные ранее (например, настройка innodb_buffer_pool_size и других параметров памяти), применяются к каждому инстансу (узлу) кластера индивидуально. Galera Cluster состоит из отдельных узлов, каждый из которых работает как самостоятельный экземпляр MariaDB со своей собственной конфигурацией. Поэтому вам нужно учесть несколько важных моментов:

---

1. Применение изменений к каждому узлу

  • Параметры в файле my.cnf (или /etc/my.cnf.d/server.cnf) задаются для каждого узла отдельно. Если вы хотите, чтобы MariaDB на всех узлах кластера использовала до 80% памяти, необходимо:
  • Внести изменения в конфигурационный файл на каждом узле.
  • Убедиться, что объем памяти, выделяемый для innodb_buffer_pool_size и других параметров, соответствует доступной оперативной памяти на каждом сервере (если узлы имеют разное оборудование, настройки могут отличаться).
  • Например, если у вас три узла с 16 ГБ RAM на каждом, настройте innodb_buffer_pool_size=13G в файле my.cnf на каждом узле.

---

2. Синхронизация конфигурации

  • Для согласованности работы кластера рекомендуется, чтобы конфигурации всех узлов были максимально идентичны (за исключением параметров, связанных с индивидуальными настройками узлов, таких как wsrep_node_address).
  • Если вы измените параметры только на одном узле, это может привести к:
  • Несбалансированному потреблению памяти (один узел будет использовать больше/меньше ресурсов, что может повлиять на производительность).
  • Потенциальным проблемам с репликацией или синхронизацией, если настройки сильно различаются.

---

3. Перезапуск узлов в Galera Cluster

  • Перезапуск службы MariaDB для применения изменений нужно выполнять осторожно, чтобы не нарушить работу кластера:

1. Перезапускайте узлы по одному (rolling restart), чтобы кластер оставался доступным.
2. Убедитесь, что узел синхронизировался с кластером после перезапуска:

     mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_status';"

Значение Primary указывает, что узел в порядке и синхронизирован.
3. Команда для перезапуска на каждом узле:

     sudo systemctl restart mariadb

---

4. Особенности Galera Cluster

  • Память для репликации: Galera Cluster использует дополнительную память для механизма репликации (например, для кэширования write-set’ов). Параметр wsrep_slave_threads влияет на количество потоков репликации, что также может влиять на потребление памяти. Рекомендуется оставить его в разумных пределах (например, 2–4 потока на узел, в зависимости от числа CPU).
  • Общие параметры памяти: Параметры, такие как innodb_buffer_pool_size, tmp_table_size, query_cache_size и т.д., действуют только на локальном узле и не синхронизируются между узлами.
  • Мониторинг: Используйте SHOW STATUS LIKE 'wsrep_%'; для проверки состояния кластера и убедитесь, что изменения в конфигурации не вызывают проблем с синхронизацией.

---

5. Рекомендации для Galera Cluster

  • Рассчитайте память для каждого узла: Если узлы имеют одинаковую конфигурацию, установите innodb_buffer_pool_size на 60–80% от RAM на каждом узле (например, 13 ГБ для 16 ГБ RAM). Если узлы различаются по объему памяти, настройте пропорционально.
  • Проверьте параметры Galera:
  [mysqld]
  # Параметры для Galera
  wsrep_on=ON
  wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  wsrep_cluster_address="gcomm://node1,node2,node3"
  # Память
  innodb_buffer_pool_size=13G
  query_cache_size=0
  tmp_table_size=64M
  max_heap_table_size=64M
  max_connections=100
  • Тестирование: Внесите изменения на одном узле, протестируйте производительность и потребление памяти, затем примените к остальным узлам.
  • Мониторинг: Используйте инструменты вроде mysqltuner или pt-mysql-summary для анализа потребления ресурсов на каждом узле.

---

6. Проверка результата

  • После настройки каждого узла проверьте потребление памяти на всех узлах:
  free -m
  top
  • Убедитесь, что ни один узел не превышает 80% использования RAM.
  • Проверьте состояние кластера:
  mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_local_state_comment';"

Ожидаемое значение: Synced.

---

7. Дополнительные советы

  • Если корпоративный алерт продолжает срабатывать, проверьте, не связан ли он с пиковыми нагрузками или другими процессами на серверах.
  • Для автоматизации применения одинаковой конфигурации на всех узлах используйте инструменты управления конфигурацией (Ansible, Puppet, Chef).
  • Если кластер обслуживает высоконагруженное приложение, протестируйте изменения на staging-окружении, чтобы избежать влияния на производительность.

[file-name 000148_2025-06-02_07-08-34.txt]