Оптимизация настроек базы сайта Mysql при помощи Mysqltuner

Mysqltuner — это программа, которая анализирует статистику работы Mysql и дает рекомендации по оптимизации Mysql сервера. Проще говоря пишет какие готовые настройки нужно вписать в /etc/my.cnf, чтоб ваш сайт пореже ложил сервер. На моем VPS сервере оперативной памяти 512 Мб. Для такого сервера Mysqltuner довольно полезна. Итак начнем

Для начала нужно запустить Putty (а если нет ее, то установить с любого сайта). В ней прописываете IP адрес и нажимаете «Соединиться». Появитсяя черный экран, куда вы вписываете логин и пароль для входа на сервер (обычно логин root и не пугайтесь, что в строке password ничего не отображается).

Вход в putty

rabota-v-putty

После входа вы увидите # и в зависимости от того, что у вас за ОС на сервере (Debian, Ubuntu, или CentOS) выполняете следующие шаги

Скачать скрипт можно следующим образом:

# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

Если возникает ошибка, тогда

Запускаем с ключом —no-check-certificate:

# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate

Также, можно установить его:

Debian/Ubuntu:

# apt-get -y install mysqltuner

CentOS:

# yum -y install mysqltuner

 

Теперь можно запускать Mysqltuner. Если вы хотите менять настройки, то не желательно использовать его рекомендации чаще раз в сутки (чтобы они успели вступить в силу)

Если производилось скачивание скрипта:

# perl mysqltuner.pl

или

# perl mysqltuner.pl --user root --pass password

Если производилась установка:

#  mysqltuner

или

#  mysqltuner --user root --pass password

После запуска скрипт произведет анализ и выдаст много информации. Ее можно почитать. но главное — это оптимальные настройки в разделе Recommendations-Variables to adjust:

-------- Recommendations -----------------------------------------------------
General recommendations:
   Add skip-innodb to MySQL configuration to disable InnoDB
   MySQL started within last 24 hours - recommendations may be inaccurate
   Enable the slow query log to troubleshoot bad queries
   Set thread_cache_size to 4 as a starting value
   Increase table_cache gradually to avoid file descriptor limits
   Your applications are not closing MySQL connections properly
Variables to adjust:
   key_buffer_size (> 679.0K)
   query_cache_size (>= 5M)
   thread_cache_size (start at 4)
   table_cache (> 4)

(нужно внимательно прочитать все, что помеченно символами [!!] и раздел Recommendations)

Эти параметры указанные после строки Variables to adjust нужно изменить, или указать в файле my.cnf.  Если у вас Vesta CP, то можно сделать это через нее в разделе Сервер-mariadb-configure-ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ.

Каждую рекомендацию, лучше вносить по очереди и проверять работоспособность Базы данных, чтобы исключить ошибки.

Следуя его рекомендациям у меня получились следующие настройки для сервера MARIADB /etc/my.cnf :

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K

#innodb_use_native_aio = 0
innodb_file_per_table

max_connections=30
max_user_connections=25
wait_timeout=10
interactive_timeout=50
long_query_time=5

query_cache_size=0
query_cache_type=0
query_cache_limit=3M
thread_cache_size=4
performance_schema=OFF disable PFS
key_buffer_size=3M
tmp_table_size=20M
max_heap_table_size=30M

#slow_query_log=1
#slow_query_log_file=/var/log/mysql-slow-queries.log

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Красным я выделил то, что я вписал (эти настройки отсутствовали)

Сервер зашуршал быстрее. На этом все 😉 

Ниже представлены те же шаги настройки, только через Putty для тех, у кого нет доступа к /etc/my.cnf через панель управления.

Расположение конфигурационного файла my.cnf:

Debian/Ubuntu:

/etc/mysql/my.cnf

CentOS:

/etc/my.cnf

После внесения изменений в файл my.cnf нужно перезагрузить Mysql-сервер:

Debian/Ubuntu:

# /etc/init.d/mysql restart

CentOS 6:

# /etc/init.d/mysqld restart

Centos 7

# sysyemctl restart mariadb

Следующий анализ и правки желательно проводить не менее, чем через сутки.

Оптимизация настроек базы сайта Mysql при помощи Mysqltuner
Оцініть статтю

Маєте власну думку? Поділіться з усіма!

Всі коменти проходять модерацію *