Настройка Mysql на сервере (переменные)

Настройки базы данных на сервере могут быть не оптимальными и система будет работать не так как нужно...

 

Рассмотрим основные переменные:

 

1. max_connections (кол-во)
Максимально разрешенное количество одновременных подключений.

Как проверить (заходим в phpmyadmin или из консоли входим в mysql и набираем запрос):

SHOW VARIABLES WHERE `variable_name`='max_connections';

У меня по-умолчанию было: 135  / в интернете рекомендуют: 200-300, 350, 500

Важное: маленькое значение данного параметра - может вызвать создание очереди из запросов, а большое - к перегрузке оборудования и соответственно к сбоям в базе данных. Данный параметр не может быть больше чем open_files_limit, который по-умолчанию равен 1024 (если хотите больше, то сперва нужно его также увеличить)

 

а) Чтобы выбрать правильно max_connections нужно следить за количеством текущих подключений threads_connected :   

SHOW status WHERE `variable_name` = 'threads_connected';

 

 

2. max_user_connections (кол-во)
Максимально разрешенное количество одновременных подключений для пользователя.

Как проверить (заходим в phpmyadmin или из консоли входим в mysql и набираем запрос):

SHOW VARIABLES WHERE `variable_name`='max_user_connections';

У меня по-умолчанию было: 50

 

3. wait_timeout (секунды)
Тайм-аут ожидания для запросов.

Как проверить (заходим в phpmyadmin или из консоли входим в mysql и набираем запрос):

SHOW VARIABLES WHERE `variable_name`='wait_timeout';

У меня по-умолчанию было: 30

Значение: в секундах 

 

 

4. max_allowed_packet (байты)
Лимит на максимальный размер пакета.

Как проверить (заходим в phpmyadmin или из консоли входим в mysql и набираем запрос):

SHOW VARIABLES WHERE `variable_name`='max_allowed_packet';

У меня по-умолчанию было: 4194304 - это 4 мегабайта только  / в интернете рекомендуют: max_allowed_packet = 128M / а hestia даже  max_allowed_packet = 1G

 

5. innodb_lock_wait_timeout (секунды)
Время, в течение которого будет ожидаться выполнение транзакции для базы типа INNODB. После завершения этого времени, СУБД откажется от выполнения запроса.

Как проверить (заходим в phpmyadmin или из консоли входим в mysql и набираем запрос):

SHOW VARIABLES WHERE `variable_name`='innodb_lock_wait_timeout';

У меня по-умолчанию было: 50

 

Как редактировать параметры

Во-первых, сами настройки обычно тут: 

  • /etc/my.cnf
  • /etc/my.cnf.d/server.cnf

или для MariaDB

  • /etc/mysql/my.cnf
  • /etc/mysql/mariadb.conf.d/50-server.cnf

 

Сам запрос к базе данных таков:

SET GLOBAL <имя параметра> = <значение>;

Далее перезапуск базы данных одной из команд

systemctl restart mysql

Или:

systemctl restart mariadb 

 

Но, чтобы эти параметры УСТАНОВИТЬ НАВСЕГДА в вышеуказанных конфигурационных файлах укажем их значения:

<имя параметра> = <значение>

 

Далее также перезапуск базы данных.

 ---

Можно через запрос (но думаю, что через настройки в файле лучше, чтобы не слетело после сбоя или перезагрузки бд)

 SET GLOBAL max_connections = 300;

и другие параметры аналогично

---

 

Определить параметры БД через консоль

 То, есть может у вас быть работа с 2-3 базами одновременно и надо общие настройки посмотреть через консоль:

вот каким образом можно смотреть запросы к БД через терминал, ниже покажутся статусы, в которых есть включения типа "onn", например: "connetctions" и тд

mysql -e 'SHOW STATUS LIKE "%onn%"'

Или:

mysql -e 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"'

 

Вот еще интересная команда

mysqladmin status

Которая покажет вот такие интересные данные:

Uptime: 1129 Threads: 8 Questions: 22511 Slow queries: 103 Opens: 78 Open tables: 71 Queries per second avg: 19.938  

 

Смотрите также:

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


Защитный код
Обновить

Вы здесь: Сайтостроение Сисадмин Базы данных Настройка Mysql на сервере (переменные)