Настройка Mysql на сервере (переменные)
- Подробности
- Категория: Базы данных
- Просмотров: 204
Настройки базы данных на сервере могут быть не оптимальными и система будет работать не так как нужно...
Рассмотрим основные переменные:
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
Смотрите также: