Конфигурация MySQL для оптимизации нагрузки на базы данных

Полезные опции для распределения ресурсов сервера под базы данных.

Редактируем /etc/mysql/my.cnf - глобальный mysql-конфигурационный файл.

# sudo nano /etc/mysql/my.cnf

В примере - используем на сервере c 2G оперативки базы данных MyISAM и InnoDB, для InnoDB выделяем больше половины ресурсов для "тяжелых" CMS.

[client]
#password = your_password
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysql]
character-sets-dir=/usr/share/mysql/charsets
# latin1 можно не изменять, кодировка для каждой базы данных все равно настраивается индивидуально. При желании можно изменить на utf-8.
default-character-set=latin1

[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

[mysqldump]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

[myisamchk]
character-sets-dir=/usr/share/mysql/charsets

[myisampack]
character-sets-dir=/usr/share/mysql/charsets

[mysqld_safe]
err-log = /var/log/mysql/mysql.err

[mysqld]
character-set-server = latin1
user = mysql
port = 3306
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
log-error = /var/log/mysql/mysqld.err
basedir = /usr
datadir = /var/lib/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 4M
table_open_cache = 400
sort_buffer_size = 512K
net_buffer_length = 16K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
lc_messages_dir = /usr/share/mysql
lc_messages = en_US

# используйте "localhost" при использовании сокетов по умолчанию
# skip-networking
bind-address = 127.0.0.1

log-bin
server-id = 1
tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname

#tail -f /tmp/mysqld.sql /tmp/mysqld.trace

#log = /tmp/mysqld.sql
#gdb
#debug = d:t:i:o,/tmp/mysqld.trace
#one-thread

# При использовании в основном баз данных InnoDB - выделяем памяти от 50% до 75% от общего объема оперативной памяти на сервере. Это самый важный параметр для быстрой работы базы данных. Актуально для Drupal.
innodb_buffer_pool_size = 1048M

#innodb_data_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
#innodb_log_group_home_dir = /var/lib/mysql/

innodb_data_file_path = ibdata1:10M:autoextend:max:128M

# Это значение устанавливаем в 25% от установленного в innodb_buffer_pool_size
innodb_log_file_size = 256M

# от 8 до 16 мб. Больший размер не имеет смысла.
innodb_log_buffer_size = 8M

# параметр 2 - подойдет для большинства сайтов.
innodb_log_files_in_group=2

innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_file_per_table

#plugin-load=federated=ha_federated.so
loose-federated

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
#safe-updates

[isamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer_size = 2M
write_buffer_size = 2M

[mysqlhotcopy]
interactive-timeout

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