35
Мониторинг и отладка MySQL Максимум информации при минимальных потерях Света Смирнова Техническая поддержка MySQL 19 июня 2015 года

Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Embed Size (px)

Citation preview

Page 1: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Мониторинг и отладка MySQLМаксимум информации при минимальных потерях

Света СмирноваТехническая поддержка MySQL

19 июня 2015 года

Page 2: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Введение: конфликт желаний ивозможностей

Почему мониторинг - это дорого?

Как найти "золотое сечение"?

Включаем по требованию для решенияконкретной проблемы

Итоги

2 www.percona.com

Page 3: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Конфликт желаний и возможностей

3 www.percona.com

Page 4: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Желания

• При возникновении проблемы намнужно как можно больше информации

• Во всяком случае достаточно длядиагностики конкретного случая

• При этом сайт не должен замедлитьсяни на наносекунду

4 www.percona.com

Page 5: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Возможности

• Почти любой мониторинг - это дорого

• Стоит задуматься о

• Памяти• Месте на диске• Процессорном времени• Всём сразу

5 www.percona.com

Page 6: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Тестируем

• Всё включено:

./mtr –start innodb –mysqld=–core-file–mysqld=–general-log=1 –mysqld=–innodb-monitor-enable–mysqld=–innodb-print-all-deadlocks –mysqld=–innodb-status-file=1–mysqld=–innodb-status-output=1 –mysqld=–log-bin –mysqld=–slow-query-log–mysqld=–log-warnings –mysqld=–performance-schema=1 –mysqld=–userstat=1–mysqld=–thread-statistics=1

6 www.percona.com

Page 7: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Тестируем

• Выключено по максимуму:

./mtr –start innodb –mysqld=–general-log=0 –mysqld=–innodb-monitor-disable–mysqld=–innodb-print-all-deadlocks=0 –mysqld=–innodb-status-file=0–mysqld=–innodb-status-output=0 –mysqld=–slow-query-log=0–mysqld=–performance-schema=0–mysqld=–userstat=0 –mysqld=–thread-statistics=0

7 www.percona.com

Page 8: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Тестируем

• Percona-Server-5.6.24-rel72.2-Linux.x86_64.ssl100

• Мой ноутбук• Стандартный OLTP SysBench тест:

~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1–mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua–num-threads=8 –oltp-table-size=100000 prepare

for N in ‘echo 1 2 4 8 16‘; do~/build/sysbench/bin/sysbench –mysql-user=root –mysql-host=127.0.0.1–mysql-port=13001 –test=$HOME/src/sysbench/sysbench/tests/db/oltp.lua–num-threads=$N –max-time=60 run;done

8 www.percona.com

Page 9: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Иллюстрация

1 2 4 8 16

2,000

4,000

6,000

8,000

Threads

Even

tsВыключеноВключено

9 www.percona.com

Page 10: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Почему мониторинг - это дорого?

10 www.percona.com

Page 11: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Логи требуют дискового пространства

• General query log может занять всёсвободное место на диске

• Что делать в случае нагрузки в40GB/час только на запись?

• Rotate policy• Рекомендации из официальногоруководства

• Rotating MySQL slow logs safely

11 www.percona.com

Page 12: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Логи требуют дискового пространства

• General query log может занять всёсвободное место на диске

• Что делать в случае нагрузки в40GB/час только на запись?

• Rotate policy• Рекомендации из официальногоруководства

• Rotating MySQL slow logs safely

11 www.percona.com

Page 13: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Память• Performance Schema

• Требует выделенной памяти• Память выделяется при старте изанята даже если P_S неиспользуется - исправлено в 5.7!

• Размер таблиц history ограничен• Information Schema

• Некоторые запросы используютчересчур много памяти

• bug #72322 исправлен в 5.5.44,5.6.25, 5.7.8, 5.8.0 - обновитесь!

12 www.percona.com

Page 14: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

CPU usage• Performance Schema

• Работает за счёт кода,срабатываемого при каждом вызовеисследуемой функции

• То есть каждый анализируемыйучасток кода вызывает срабатываниеещё одного вызова

• Binary log• В случае использования sync_binlogдобавляются дополнительныевызовы fsync

13 www.percona.com

Page 15: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Сеть

• MySQL Proxy и другие proxy

• Дополнительный слой

14 www.percona.com

Page 16: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Внутренние блокировки

• SHOW SLAVE STATUS• SHOW [GLOBAL] STATUS

• Производительность замедляетсяпри параллельном использовании

• Bug #42930 исправлен в 5.7.0:готовьтесь обновиться!

• Information Schema• Binary log

15 www.percona.com

Page 17: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Оптом

• Приложения с графическиминтерфейсом

• Как правило используют те жеинструменты

• STATUS VARIABLES

• MySQL и системные логи

• Performance Schema

• Имеют те же ограничения

16 www.percona.com

Page 18: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Как найти "золотое сечение"?

Нельзя вот так взять и запуститьmysqld без диагностики вообще!

17 www.percona.com

Page 19: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Начинаем с минимально неоходимого

• MySQL error log

• Log files операционной системы

18 www.percona.com

Page 20: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Кое-что можно включать по требованию

• General, slow query log файлы• InnoDB Monitors• Consumers в Performance Schema

• Performance Schema уже включена ипамять выделена

• Data collection при помощи pt-stalk• Переменные, статусы сервера иInnoDB, processlist

• Системная диагностика19 www.percona.com

Page 21: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Решаем конкретную проблему

20 www.percona.com

Page 22: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Динамически

• General query log

• Slow query log

• InnoDB Monitors

• Performance Schema instruments иconsumers

21 www.percona.com

Page 23: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Требуется перезапуск

• Error log

• Binary log

• Performance Schema

22 www.percona.com

Page 24: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

В зависимости от задачи

• Оптимизация• Запросов• Приложения в целом

• Блокировки

• Крэши

• Неожиданное поведение

23 www.percona.com

Page 25: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Оптимизация запросов

• Slow query log

• pt-query-digest

• Таблицы в P_S: statements и stages

• Query Analyzer (QUAN) в MySQLEnterprise Monitor (MEM)

• Percona Cloud Tools (PCT)

24 www.percona.com

Page 26: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Оптимизация приложения в целом

• InnoDB Monitors• Performance Schema• Сбор данных при необходимости

• Запущенные вручную SHOW иSELECT ... FROMINFORMATION_SCHEMA

• pt-stalk• PCT• MEM

25 www.percona.com

Page 27: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Блокировки

• P_S MDL tables

• InnoDB Monitors

• innodb_print_all_deadlocks

26 www.percona.com

Page 28: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Крэши

• Core dumps

• General query log

• Binary log

• Содержит только команды,изменяющие данные

• Крэш может быть вызван иSELECT-ом

27 www.percona.com

Page 29: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Неожиданное поведение

• General query log

• Binary log

• Только для непредвиденных данныхв базе

28 www.percona.com

Page 30: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Итоги

29 www.percona.com

Page 31: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Всегда включено

• MySQL error log

• Системные логи

30 www.percona.com

Page 32: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Включаем по требованию

• Performance Schema

• InnoDB Monitors

• General, slow, binary log

31 www.percona.com

Page 33: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Дополнительная информация

• mysqld-option-tables.html

• PCT(http://cloud.percona.com/)

• MySQL Enterprise Monitor

• Percona Toolkit

32 www.percona.com

Page 34: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Место для вопросов

???

33 www.percona.com

Page 35: Мониторинг и отладка MySQL: максимум информации при минимальных потерях

Спасибо!

http://www.slideshare.net/SvetaSmirnova

https://twitter.com/svetsmirnova

34 www.percona.com