Настройка MySQL сервера. Описание конфигурационного файла

Перед началом настройки сделаем резервную копию файла конфигурации:

sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bakup

Стандартные примеры конфигурации могут также находится в директории /usr/share/mysql/

Посмотреть текущие соединения можно командой:

sudo netstat -tap | grep mysql

Перенастроить можно командой:

sudo dpkg-reconfigure mysql-server-5.5
sudo dpkg-reconfigure mysql-server

Список процессов можно посмотреть подключившись к серверу:

mysql -u root -p
show processlist;
exit

Опишу ниже некоторые возможные параметры конфигурационного файла my.cnf

bind-address
(адрес который будет слушать сервер, например 127.0.0.1 если внешние соединения не используются)

skip-networking
(соединение с сервером выполняется только через сокет)

skip-name-resolve
(не определять доменные имена для IP-адресов подключающихся клиентов)

max_allowed_packet
(максимальный размер данных, которые могут быть переданы за один запрос. Следует увеличить значение при появлении ошибки «Packet too large»)

max_join_size
(максимальный размер анализируемых данных через оператор SELECT. Стандартно более 4 миллиардов)

query_cache_limit = 6MB
(максимальный размерор данных, которые можно поместить в кэш)

query_cache_size = 64M
(сколько памяти выделить для внутреннего кэша запросов mysql. В кэш будет добавляться результат запроса целиком («таблица», полученная в результате запроса). Примерно равно одной десятой, одной пятой от размера оперативной памяти)

thread_concurrency = 0
(количество одновременных процессов, «обрабатывающих» конкурентные запросы к mysql. Примерно равно количеству процессорам (ядрам) системы умноженное на два. Также следует обращать внимание на количество винчестеров и загрузке процессора чтобы избежать излишней нагрузки. В новый версиях MySQL равно 0, для снятия ограничения)

max_connections = 500
(максимальное количество соединений, при ошибке «Too many connections» следует увеличить значение)

thread_cache_size = 16
(число потоков, которые сервер будет держать в кэше открытыми для обслуживания новых соединений)

back_log
(сколько запросов на соединение с mysql сервером может помещаться в очередь и в последствии обслужено, если сервер в данный момент занят обработкой запроса на подключение. Стандартно пять запросов на подключение будет поставлено в очередь на ожидание, а остальные игнорируются. Если mysql сильно нагружен, рекомендуется увеличить значение)

table_open_cache
(количество открытых таблиц для всех потоков. Открытие таблиц – ресурсоёмкий процесс, рекомендуется определенное количество таблиц держать открытыми в кэше)

table_cache = 1024
(кеш таблиц)

max_heap_table_size = 64MB
(максимальный размер временной таблицы хранящейся в памяти, при превышении размера таблица будет создана на жестком диске)

tmp_table_size = 64MB
(максимальный размер памяти для временных таблиц, если размер превышен, таблица будет создана на диске)

log_bin = /var/log/mysql/mysql-bin.log
(расположение лог-файла со всеми запросами к серверу, кроме select, show)
max_binlog_size= 500M
(максимальный размер)
expire_logs_days = 3
(время хранения в днях)

log_error = /var/log/mysql/mysql.err
(расположение лог-файла ошибок)
log_warnings = 1
(записывать ли в лог-файл ошибок предупреждения)
log_slow_queries = /var/log/mysql/mysql_slow.log
(расположение лог-файла медленных запросов, используется для анализа запросов чтобы повысить производительность сайта)

long_query_time = 10
(после скольки секунд выполнения запрос считается медленным, стандартно 10)
log-queries-not-using-indexes
(для записи запросов, которые не используют индексы)
relay-log = /var/log/mysql/mysql-relay-bin.log
(расположение лог-файла)
max_relay_log_size = 500М
(максимальный размер)

Чтобы изменения в конфигурационном файле применились необходимо перезапустить MySQL сервер командой:

sudo service mysqld restart

Подсчитать возможный объем потребляемой оперативной памяти можно онлайн на сайте http://www.omh.cc/mycnf/

Оставьте комментарий

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