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

• Ждет и Убивает
– Может убивать транзакции