• Регистрация

1,096 вопросов

1,459 ответов

1,302 комментариев

8,780 пользователей

Добро пожаловать на Ubuntu Ответы, где вы можете задать вопросы и получить ответы от других пользователей сервиса.

Использование mysqltuner для оптимизации работы MySQL

0 голосов

Системным администраторам часто приходится работать с техническими площадками для размещения веб-сайтов. Как правило, для большинства распространенных CMS в качестве БД используют MySQL. От стабильной и быстрой работы СУБД MySQL зависит и скорость работы самого сайта. Для анализа и устранения возможных проблем в работе БД системные администраторы часто используют утилиту mysqltuner.

Параметры работы MySQL можно посмотреть как с самой командной строки так и с помощью различных дополнительных инструментов (например, PhpMyAdmin). Преимущество mysqltuner в том, что он представляет информацию о MySQL и основных текущих параметрах работы в удобном и понятном виде. Кроме этого, в случае явных проблем, выдает рекомендации по изменению проблемных параметров.

Для анализа состояния MySQL достаточно скачать скрипт

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

Дать права на выполнение

chmod +x mysqltuner.pl

Выполнить запуск скрипта

./mysqltuner.pl

В Debian-подобных дистрибутивах анализ начнется сразу, поскольку для подключения к БД скрипт использует системные параметры доступа, которые указаны в /etc/mysql/debian.cnf. Для RedHat-подобных дистрибутивах пареметры подключения (логин/пароль) необходимо указывать отдельно.

Пример использования mysqltuner:

./mysqltuner.pl

[OK] Logged in using credentials from debian maintenance account.
[OK] Currently running supported MySQL version 5.5.34-0ubuntu0.12.04.1
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics ---------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in MyISAM tables: 123M (Tables: 12)
[--] Data in InnoDB tables: 592M (Tables: 4)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[--] Data in MEMORY tables: 3M (Tables: 3)
[--] Data in BLACKHOLE tables: 0B (Tables: 1)
[!!] Total fragmented tables: 5

-------- Security Recommendations ---------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics ---------------------------------------
[--] Up for: 8d 13h 53m 41s (89M q [120.857 qps], 11K conn, TX: 537B, RX: 287B)
[--] Reads / Writes: 29% / 71%
[--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
[OK] Maximum possible memory usage: 597.8M (3% of installed RAM)
[OK] Slow queries: 0% (1/89M)
[OK] Highest usage of available connections: 29% (45/151)
[OK] Key buffer size / total MyISAM indexes: 16.0M/429.0K
[OK] Key buffer hit rate: 100.0% (164M cached / 124 reads)
[OK] Query cache efficiency: 36.8% (8M cached / 22M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 129 sorts)
[OK] Temporary tables created on disk: 5% (366 on disk / 6K total)
[OK] Thread cache hit rate: 98% (134 created / 11K connections)
[OK] Table cache hit rate: 30% (100 open / 332 opened)
[OK] Open file limit used: 0% (90/20K)
[OK] Table locks acquired immediately: 99% (46M immediate / 46M locks)
[!!] InnoDB buffer pool / data size: 128.0M/592.5M
[OK] InnoDB log waits: 0
-------- Recommendations -------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Enable the slow query log to troubleshoot bad queries
Variables to adjust:
innodb_buffer_pool_size (>= 592M)

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

Важное замечание по работе с mysqltuner. Анализ необходимо производить после некоторого беспрерывного периода работы БД. Например, 24 часа, а лучше несколько дней. В таком случае скрипт даст более точную и полезную информацию.

Не стоит забывать, что полученные в результате работы скрипта данные не всегда укажут на узкое место. Для общего анализа работы их может быть достаточно. Но для более тонкой настройки MySQL под определенные задачи может потребоваться более детальный анализ и тестирование.

Вопрос Mar 19, 2016 от sir_mcnellan Ветеран (8,910 баллов) в категории Серверные системы
   

Пожалуйста войдите или зарегистрируйтесь для ответа на этот вопрос.

...