Оптимизация настроек MySQL с помощью Mysqltuner
Mysqltuner — это perl-скрипт, который анализирует статистику работы Mysql и выдает свои рекомендации по оптимизации настроек Mysql сервера.
Скачать скрипт можно следующим образом:
[bash title=»код»]# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
[/bash]
Если возникает ошибка вида:
[bash title=»код»] ERROR: cannot verify raw.githubusercontent.com’s certificate, issued by ‘/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA’:
Unable to locally verify the issuer’s authority.
To connect to raw.githubusercontent.com insecurely, use `—no-check-certificate’.
[/bash]
Запускаем с ключом —no-check-certificate:
[bash title=»код»]# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl —no-check-certificate
[/bash]
Также, можно произвести установку:
Debian/Ubuntu:
[bash title=»код»]# apt-get -y install mysqltuner
[/bash]
CentOS:
[bash title=»код»]# yum -y install mysqltuner
[/bash]
Чтобы данные анализа и статистика были более корректными, сервер Mysql должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого Mysqltuner не менее 24 часов.
Теперь можно запускать Mysqltuner.
Если производилось скачивание скрипта:
[bash title=»код»]# perl mysqltuner.pl
[/bash]
или
[bash title=»код»]# perl mysqltuner.pl —user root —pass rootpassword
[/bash]
Если производилась установка:
[bash title=»код»]# mysqltuner
[/bash]
или
[bash title=»код»]# mysqltuner —user root —pass rootpassword
[/bash]
После запуска скрипт произведет анализ и выдаст следующую информацию:
[bash title=»код»]# perl mysqltuner.pl —user root —pass rootpassword
>> MySQLTuner 1.2.0 — Major Hayden <[email protected]>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with ‘—help’ for additional options and output filtering
[OK] Logged in using credentials passed on the command line
[/bash]
[bash title=»код»]——— General Statistics —————————————————
[—] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.33
[OK] Operating on 32-bit architecture with less than 2GB RAM
[/bash]
[bash title=»код»]——— Storage Engine Statistics ——————————————-
[—] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[—] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] InnoDB is enabled but isn’t being used
[OK] Total fragmented tables: 0
[/bash]
[bash title=»код»]——— Security Recommendations ——————————————-
[OK] All database users have passwords assigned
[/bash]
[bash title=»код»]——— Performance Metrics ————————————————-
[—] Up for: 20h 45m 49s (101 q [0.001 qps], 7 conn, TX: 28K, RX: 3K)
[—] Reads / Writes: 100% / 0%
[—] Total buffers: 160.0M global + 832.0K per thread (151 max threads)
[OK] Maximum possible memory usage: 282.7M (55% of installed RAM)
[OK] Slow queries: 0% (0/101)
[OK] Highest usage of available connections: 1% (2/151)
[!!] Key buffer size / total MyISAM indexes: 16.0K/679.0K
[!!] Query cache is disabled
[OK] Temporary tables created on disk: 3% (3 on disk / 94 total)
[!!] Thread cache is disabled
[!!] Table cache hit rate: 11% (4 open / 35 opened)
[OK] Open file limit used: 0% (6/7K)
[OK] Table locks acquired immediately: 100% (37 immediate / 37 locks)
[!!] Connections aborted: 14%
[/bash]
[bash title=»код»]——— 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 (>= 8M)
thread_cache_size (start at 4)
table_cache (> 4)
[/bash]
Особое внимание стоит уделить строкам, помеченным символами [!!] и секции Recommendations.
Параметры указанные после строки Variables to adjust нужно изменить в файле my.cnf, в соответствии с рекомендациями Mysqltuner. Если указанного параметра нет в файле my.cnf, то его следует дописать.
Расположение конфигурационного файла my.cnf:
Debian/Ubuntu:
[bash title=»код»]/etc/mysql/my.cnf
[/bash]
CentOS:
[bash title=»код»]/etc/my.cnf
[/bash]
После внесения изменений в файл my.cnf нужно перезагрузить Mysql-сервер:
Debian/Ubuntu:
[bash title=»код»]# /etc/init.d/mysql restart
[/bash]
CentOS 6:
[bash title=»код»]# /etc/init.d/mysqld restart
[/bash]
Centos 7
[bash title=»код»]# sysyemctl restart mariadb
[/bash]
После изменения конфигурации Mysql-сервер должен проработать минимум 24 часа без перезагрузок. Затем, можно снова запустить утилиту Mysqltuner и проанализировать вывод статистики. Таким образом, можно привести конфигурационный файл my.cnf и работу Mysql-сервера, соответственно, к оптимальному состоянию.
Установка mytop на Centos 6.8
[bash title=»код»]yum install mytop[/bash]
Настроить mytop можно 3 способами:
1.Запуск с передачей аргументов с командной строки
[bash title=»код»]mytop -u root -p123456789 -d mysql_base —prompt[/bash]
2.Создание файла .mytop в домашнем каталоге пользователя(например,root)
[bash title=»код»]nano /root/.mytop[/bash]
user=root
pass=123456789
delay=1
db=mysql[/bash]
[bash title="код"]chmod 400 /root/.mytop && chown root:root /root/.mytop [/bash]
и запускаем просто через команду mytop3.Редактирование бинарника
[bash title="код"] which mytop [/bash]/usr/bin/mytop[/bash]nano /usr/bin/mytop[/bash]user=root
pass=123456789
delay=1
db=mysql[/bash]