Перед началом настройки сделаем резервную копию файла конфигурации:
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/