Percona Toolkit
- Изначально Maatkit и Aspersa придуманы и разработаны Baron Schwartz и Daniel Nichter
- Opensource GNU GPL v2
- https://launchpad.net/percona-toolkit
- http://www.percona.com/software/perconatoolkit
А конкретнее:
- pt-align
- pt-archiver
- pt-config-diff
- pt-deadlock-logger
- pt-diskstats
- pt-duplicate-key-checker
- pt-fifo-split
- pt-find
- pt-fingerprint
- pt-fk-error-logger
- pt-heartbeat
- pt-index-usage
- pt-ioprofile
- pt-kill
- pt-mext
- pt-mongodb-query-digest
- pt-mongodb-summary
- pt-mysql-summary
- pt-online-schema-change
- pt-pmp
- pt-query-digest
- pt-show-grants
- pt-sift
- pt-slave-delay
- pt-slave-find
- pt-slave-restart
- pt-stalk
- pt-summary
- pt-table-checksum
- pt-table-sync
- pt-table-usage
- pt-upgrade
- pt-variable-advisor
- pt-visual-explain
Установка Percona Toolkit
• Требования:
– Perl, DBI, DBD::mysql, Term::ReadKey
• Загрузка
– wget percona.com/get/percona-toolkit.rpm
–Доступен через репозиторий Перконы
• Все утилиты доступны по отдельности
– wget percona.com/get/pt-diskstats
Открываем для себя железо и операционную систему
• Сколько памяти свободно? Чем занята? Можно добавить еще?
• Сколько на машине ядер? Какая у них скорость?
• Какая битность у операционки? Совпадает ли с железом?
• Включен ли SELinux?
• Рейд стоит? Сколько дисков? Каких? Память? BBU?
• Что с сетью? ip_local_port_range? Какие порты слушают?
• Версия операционки? Ядро?
• Какой стоит IO scheduler?
• Какие типы файл системы используется?
Pt-Summary!
Name: pt-summary
Funct ion: показывает всю основную информацию о системе
Url: http://www.percona.com/doc/percona-toolkit/2.0/ptsummary.html
Открываем для себя MySQL
Что ты знаешь о своей базе?
• Версия? Билд? Сколько баз? Где лежат?
• Что с репликацией? Сколько реплик? Какие?
• Как настроена InnoDB?
• Какие еще Storage Engines есть?
• Какие типы полей используются? Какие индексы?
• Внешние ключи? Views? Триггеры?
• Полнотекстовый поиск? Partitioning?
• У кого какие привелигии?
Pt-mysql-summary
Name: pt-mysql-summary
Funct ion: Основная информация о MySQL сервере
Url: http://www.percona.com/doc/percona-toolkit/2.0/pt-mysql-summary.html
pt-slave-find
Name: pt-slave-find
Funct ion: находит и выдает иерархию слейвов
Url: http://www.percona.com/doc/percona-toolkit/2.0/pt-slave-find.html
Чем занимаются диски?
• pt-diskstats улучшенный iostat
– Интерактивный
– Понятный
• pt-ioprofile меряет кто и как использует диск
– Какие файлы использует MySQL? Сколько времени проводится в чтении, записи и т.р.
– Сколько запросов на чтение/запись?
– Насколько они большие?
Дисковый IO pt-diskstats
Name: pt-diskstats
Function: агрегирует и суммирует /proc/diskstats
Url: http://www.percona.com/doc/percona-toolkit/2.0/ptdiskstats.html
IO profile pt-ioprofile
Name: pt-ioprofile
Function: анализирует ввод-вывод.
Url: http://www.percona.com/doc/percona-toolkit/2.0/ptioprofile.html
Не надо стесняться своей базы данных!
• Как используются индексы
– Существуют ли они вообще?
• Есть ли дублирующиеся ключи?
• Какие запросы потребляют больше всего
ресурсов?
Смотрим структуру и запросы!
• Лишние индексы или внешние ключи?
– pt-duplicate-key-checker
• Какие индексы не используется?
– pt-index-usage
– Также показывает какие запросы меняют план исполнения, какие альтернативные индексы есть и многое другое
• Плохие запросы? Запускаем pt-queryadvisor
Изучаем запросы
• Используем pt-query-digest для анализа slow-query.log
• Работает из коробки
• Может работать без slow-log'а!
• Может вообще по tcp-dump работать!
• Разбирает запросы по типам
• Считает для них статистику
• Помогает бороться с медленными запросами
Анализ ошибок
• pt-deadlock-logger анализ дедлоков
• pt-fk-error-logger проверка ошибок внешних ключей
• Можно записать результаты прямо в базу
ALTER TABLE без блокировок
pt-online-schema-change выполняет изменение структуры таблицы без ее блокировки.
– Делает “shadow copy”
– Очень полезен для больших таблиц
– Facebook использует ту же технику
pt-upgrade
Name: pt-upgrade
Function: Выполняет запросы на нескольких серверах и смотрит разницу
Url: http://www.percona.com/doc/percona-toolkit/2.0/pt-upgrade.html
Репликация
- Проверить слейв (pt-table-checksum)
- Починить слейв (pt-table-sync)
- Померять отставание (pt-heartbeat)
- Тормознуть слейв (pt-slave-delay)
pt-stalk
Собирает статистику по условию в том числе
– GDB stacktrace
– oprofile data
– strace data
– делает tcpdump
– запускает shell скрипт
pt-mext
Name: pt-mext
Function: показывает в динамике
SHOW GLOBAL STATUS
Url: http://www.percona.com/doc/percona-toolkit/ptmext.html
Показывает в динамике (в т.ч.)
– Created_tmp_*
– Handler_read_*
– Innodb_buffer_pool_read*
– Innodb_os_log_written
– Key_read_requests
– Key_reads
– Qchache*
– Select_full_*join
– Select_range
– Select_scan
– Threads_running
Убить Плохие Запросы! pt-kill
• Ждет и Убивает
– Может убивать транзакции