настройка mysql

Настройки сервера mysql храняться в файле /etc/mysql/my.cnf. Установленный по умолчанию my.cnf рассчитан на совсем музейные машины, главное чтоб mysql завелась.

в комплекте установки поставляются и другие файлы, рассчитанные на более современные машины.

что нужно сделать:
1 переименовать дефолтный my.cnf
2 скопировать из папки /usr/share/doc/mysql-server-5.5/examples/ файл my-innodb-heavy-4G.cnf в /etc/mysql/ и переименовываем его в my.cnf
3 service mysql restart

как правило, этого достаточно для значительного ускорения работы базы данных

что можно еще сделать в этом файле:
1. раскомментировать skip-networking — таким образом мы запретим внешние подключения к БД
2 редактируем значение thread_concurrency
thread_concurrency = (кол-во процессоров)*(кол-во ядер в одном процессоре)*3

3 key_buffer=1024M – размер буфера, используемого для блоков индексов. Чтобы улучшить обработку индексов (для всех операций чтения и записи нескольких элементов), необходимо увеличить это значение настолько, насколько возможно. Рекомендуется выставлять это значение от 15% до 25% ОЗУ, чтобы система не начала сохранять временные файлы на диске, что значительно снизит производительность.

4 sort_buffer=128M – Каждый поток, которому необходимо произвести сортировку, выделяет буфер данного размера. Увеличение данного значения позволит ускорить выполнение операторов ORDER BY или GROUP BY. “Увлекаться” большим значением не стоит, а посчитать его можно исходя из среднего значения открытых потоков (Threads_running) и кол-ва ОЗУ сервера.
mysql> show status LIKE «Threads_running%»;

5 myisam_sort_buffer_size=512М – Буфер, который выделяется для сортировки индексов при выполнении команды REPAIR или для создания индексов при помощи команд CREATE INDEX или ALTER TABLE. Рекомендуется не жадничать …

6 innodb_flush_log_at_trx_commit = 2 — Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Большинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы.

для вступления новых настроек в силу опять же service mysql restart

все бы хорошо, только вот в образце файла не все инструкции прописаны. Так что mysql не запускался. Причем молча, не оставляя никаких следов в логах
пришлось добавить:
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
 
 
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
 
bind-address = 127.0.0.1
вот вроде самые основные настройки, но не было
myisam-recover         = BACKUP
table_cache = 128
 
писанина — здесь: https://habrahabr.ru/post/66684/
Логи тоже очень не помешают. А бинлоги — так вообще если не настроить сколько их хранить — замечательно жрут все доступное дисковое пространство
log_error = /var/log/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
expire_logs_days = 10
max_binlog_size         = 100M
Еще — при первом запуске mysql имеет смысл просматривать error.log иначе может оказаться что движок innoDB например не заведется.
tail -f /var/log/mysql/error.log
выглядит это так:
InnoDB: Fatal error: cannot allocate memory for the buffer pool
[ERROR] Plugin ‘InnoDB’ init function returned error.
[ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
что в переводе на русский означает что под InnoDB не смогли выделить памяти и поэтому он обиделся и не запустился
MyIsam запустится и база будет функционировать, но InnoDB — фигушки
в этом случае надо подрезать память под буфера, например у меня пришлось выставить
innodb_buffer_pool_size = 1G
После подобной настройки сервак на маженто у меня буквально залетал

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