четверг, 24 января 2013 г.

Настройка MySQL

Поговорим о конфиг файле MySQL сервера: /etc/my.cnf
Файл разделяется на секции, названия которых пишутся в квадратных скобках, например: [mysqld] — это, кстати, самая важная секция, которую обязательно нужно настраивать под свой проект(ы).
Про настройку кодировки в MySQL я уже писал, рассмотрим другие возможные параметры.
Вот типичный пример конфига с одного из серверов с 2G Ram:
[mysqld]


datadir=/data/your_mysql_dir


character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"


skip-innodb
default-storage-engine=myisam
local-infile=0
max_connections=200
open_files_limit=10000


key_buffer_size=64M
key_cache_division_limit=70
join_buffer_size=500k
read_rnd_buffer_size=2M
read_buffer_size=500k
sort_buffer_size=2M


tmp_table_size=64M
max_heap_table_size=64M


max_tmp_tables=1024
table_cache=1024


query_cache_size=64M
query_cache_limit=1M
low-priority-updates=1


myisam_sort_buffer_size=200M


# ниже логи закоменченные
#log_slow_queries=/var/log/mysql_low.log
#long_query_time=2


[client]
default-character-set=utf8

Авторские права на представленный материал принадлежат администрации сайта http://chesser.ru, при копировании контента ссылка на источник обязательна.
разбиру каждую строку позже, сейчас лень и времени нет :)

Сколько памяти потребляет mysql?

Суммарная потребляемая память mysql складывается из общей памяти для всех коннектов и отдельной памяти для каждого коннекта, умноженное на кол-во коннектов:
Max_Memory = query_cache_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + key_buffer_size + innodb_log_buffer_size
+ max_connections * (max_allowed_packet + sort_buffer_size + net_buffer_length + thread_stack + read_rnd_buffer_size + read_buffer_size + join_buffer_size)

Калькулятор для подсчета потребляемой памяти mysql

http://www.omh.cc/mycnf/ — туда нужно передать содержимое своего /etc/my.conf и на выходе получим расчет памяти mysql
http://www.mysqlcalculator.com/ — тоже самое, но без парсера конфига

Ограничение одновременно открытых файлов в системе

При большом количестве БД(и таблиц) и большом количестве коннектов к БД может понадобиться поднять лимит одновременно открытых файлов. При работе с таблицами баз данных mysql держит открытыми несколько файлов для каждой таблицы, поэтому иногда нужно увеличивать этот лимит, особенно когда требуется повышать настройку max_connections

Просмотр настройки open files

bash-3.2# ulimit -n

Изменение настройки лимита open files

Открываем файл /etc/security/limits.conf и приписываем в конце:
mysql                soft    nofile          8192
mysql                hard    nofile          63536
либо вместо mysql можно вписать * — тогда это изменение будет работать для всех юзеров.
Чем больше разрешили открывать одновременно файлов, тем больше памяти на это дело нужно, поэтому злоупотреблять этим не следует. Для применения настройки нужен ребут.

Другие ресурсы по настройке mysql

http://mysyslog.ru/posts/223
http://smartcj.com/wiki/doku.php?id=ru:mysql_tunning
myisam + my.cnf

Комментариев нет:

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