Как да наблюдавам MySQL бази данни?
Оперативната видимост е задължителна във всяка производствена среда. От решаващо значение е да можете да идентифицирате всички проблеми възможно най-скоро, в противен случай може да се окажете в сериозни проблеми, тъй като неоткрит проблем може да причини сериозно прекъсване на услугата или престой. MySQL Enterprise Monitor е един от най-старите продукти за наблюдение за MySQL на пазара и се предлага като част от търговско корпоративно абонаментно споразумение от Oracle. В тази публикация в блога ще разгледаме MySQL Enterprise Monitor и вида информация, която той предоставя в MySQL.
Инсталиране
На първо място, MySQL Enterprise Monitor е част от MySQL Enterprise Edition, търговско предложение от Oracle. Предлага се в множество версии на пакети, за различни операционни системи. Инсталацията на Windows 10 (системата, на която тествахме) е доста проста. MySQL Enterprise Monitor е конфигуриран и някои пакетни услуги ще бъдат инсталирани (MySQL, Tomcat). Инструментът може да бъде достъпен чрез браузъра.
Първоначална конфигурация
На първо място, трябва да добавите хостове, които искате да наблюдавате.
Можете да добавите единични хостове или партида от тях. Диалоговият прозорец изглежда по същия начин, с изключение на това, че когато добавяте групово, можете да подадете разделен със запетая списък със сървъри.
Няма да навлизаме в подробности, но накратко трябва да дефинирате от кой хост трябва да се наблюдават екземплярите на MySQL - обикновено това ще бъде хостът, на който сте инсталирали MySQL Enterprise Monitor. Можете също да настроите агенти на вашите MySQL екземпляри, в този случай те ще могат да събират данни и за хоста, а не само MySQL метрики. След това трябва да дефинирате как да стигнете до наблюдавания екземпляр (IP адрес/име на хост, потребител и парола). След това MySQL Enterprise Monitor ще създаде допълнителни потребители за задачи като наблюдение, което не изисква привилегии на суперпотребител. Ако искате, можете също да конфигурирате SSL комуникация, ако това е, което използва MySQL екземплярът, можете също да дефинирате някои изчаквания и дали топологията на репликация трябва да бъде автоматично открита или не.
Това, което също е важно да имате предвид, е, че MySQL Enterprise Monitor разчита до голяма степен на схемата за производителност – уверете се, че вашите бази данни имат активиран PS, в противен случай няма да се възползвате от значителна част от функциите на MySQL Enterprise Monitor.
Наблюдение
След като наблюдаваните екземпляри на MySQL са конфигурирани, можете да започнете да разглеждате събраните данни. Разделът Общ преглед ви дава кратко обобщение на някои от най-важните показатели в MySQL. Данните се обобщават и това улеснява намирането на всякакви неочаквани модели и след това задълбочаването на случилото се.
Разделът Събития дава общ преглед на различни проблеми или събития, докладвани от MySQL Enterprise Monitor и неговите съветници. Можете да кликнете върху всяко от събитията и да прочетете за какво става въпрос, както и всички препоръчани стъпки, които да предприемете:
В този конкретен случай изглежда, че някои заявки извършват пълно сканиране на таблицата и се препоръчва да се проучи допълнително, за да се определят такива заявки и да се види дали могат да бъдат оптимизирани.
Друг пример, тук виждаме, че кешът на таблицата не е конфигуриран по оптимален начин. Можете да видите обяснението на проблема, съветите и препоръчаните действия, които да предприемете въз основа на този сигнал.
Показатели
В този раздел можем да видим данни за множество MySQL показатели, които са полезни за разбиране на състоянието на системата.
Графики на времевите серии
Снимките на екрана по-горе са само пример, има още много графики за разглеждане.
Възможно е да се приложи филтриране:можете да дефинирате кои графики искате да видите, можете също да дефинирате какъв период от време да се показва. На всичкото отгоре можете просто да маркирате част от графиката и да я увеличите или да отворите анализатора на заявки с данни от това конкретно време:
Ще преминем през тази функционалност по-късно, но накратко, тя ви позволява да анализирате заявки, как тяхната производителност се е променила във времето и някои примерни заявки.
Статистика на таблицата
Този раздел ни дава представа за статистическите данни на таблицата:как изглежда трафикът (редове са извлечени, вмъкнати, актуализирани, изтрити) и как изглежда забавянето за всички операции с редове.
Потребителски статистики
В този раздел MySQL Enterprise Monitor представя данни за потребители - изпълнени оператори, латентност, сканиране на таблици, I/O латентност, връзки, използване на паметта. Тези данни трябва да дадат доста добра представа за това кой потребител е отговорен за натоварването на базата данни. Може да е много полезно, особено в многопотребителска среда, където няма един основен източник на трафик.
Вход/изход на файл на база данни
I/O файл на база данни обяснява как натоварването на I/O се разпределя между файловете в базата данни. Общ брой I/O операции, латентност, колко четения и записи са извършени за даден файл.
Използване на паметта
Използването на паметта показва структури на паметта в MySQL, които помагат да се изгради по-добра картина на използването на паметта в базата данни. Тези данни могат да бъдат полезни в случай на проблеми с паметта - лесно е да се проследи къде растежът е най-голям и, ако е необходимо, да се намалят съответните настройки. Също така може да помогне значително при диагностицирането на потенциални течове на памет.
InnoDB буферен пул
Този раздел в MySQL Enterprise Monitor дава на потребителя представа за структурата на използването на буферния пул. Кои таблици се кешират, колко мръсни страници има за изчистване?
Запитвания
Изключително важно е всеки потребител на MySQL да разбере натоварването, което създават заявките. Кои заявки са най-проблематични? Как се държат във времето? Производителността може да бъде измерена по множество начини, но е доста често предвидимата, стабилна производителност да е по-важна от най-високата производителност. Докато времето за реакция е приемливо, потребителите ще харесат по-добре предвидимите резултати, отколкото малко по-бърз отговор (ниска латентност), което понякога може да забави значително сървъра. Ето защо е много ценно да се види как се държи една заявка във времето и да се определят тези, чието поведение не е последователно.
MySQL Enterprise Monitor определено предоставя такива данни. В списъка със заявките можете лесно да видите как се е променила латентността във времето. Плоската линия е добра, шипове - не толкова. Това означава, че такова запитване може да се наложи да бъде проучено допълнително. Когато щракнете върху него, MySQL Enterprise Monitor ще ви даде повече данни за него.
Както можете да видите, има някои статистически данни за конкретния тип заявка, можете също да видите как се е променила латентността във времето. В долната част можете да видите някои примерни изрази във времето и можете да сравните времето им на изпълнение.
Когато щракнете върху един от тях, ще видите пълна заявка, която е била изпълнена в този момент. Може да бъде полезно в случай на заявки, при които производителността се различава в зависимост от това какви аргументи са били използвани в случая WHERE (например WHERE some_column =‘някаква стойност’ и стойностите в тази колона не са разпределени равномерно между редовете).
Репликация
В среда за репликация на MySQL изоставането е нещо, с което трябва да се научите да се справяте. Важното е да го следите – колко силно изостават робите? Колко често се случва? С тази информация е възможно да се опитате да определите проблема и да разберете по-добре какви заявки го причиняват. След това можете да опитате да приложите някои подобрения, като например многонишкова репликация и да проследите дали промените са подобрили производителността на репликацията и са намалили изоставането до приемливо ниво.
По какво се различава MySQL Enterprise Monitor от ClusterControl
Както казахме, MySQL Enterprise Monitor е част от платеното MySQL Enterprise Edition. За всички потребители на MySQL Community, MariaDB или Percona Server, MySQL Enterprise Edition не е наличен. ClusterControl предоставя достъп до мониторинг на MySQL в безплатната му версия на Общността. По отношение на наблюдението на сървъра и заявките има много прилики.
ClusterControl ви дава достъп до MySQL метрики, събрани и съхранени в базата данни от времеви серии на Prometheus. Можете лесно да следите множество показатели, предоставени в ClusterControl.
ClusterControl също идва със списък със съветници, които могат да се използват за проследяване на здравето и производителността на базата данни. Можете също така лесно да създавате нови съветници с помощта на Developer Studio:
Ако се интересувате от производителността на заявките, ClusterControl предоставя монитор на заявки за вас – изпълнените заявки се събират и тяхната производителност се сравнява, което улеснява потребителя да определи кои заявки използват най-много процесора в базата данни.
Можете да видите статистически данни за заявките - изпълнения, изпратени и проверени редове, време на изпълнение. Можете също да проверите плана за обяснение за конкретен тип заявка.
Наблюдение на устойчивостта на полиглот
Една голяма разлика е възможността да се наблюдават всички основни варианти на екосистемата MySQL (Oracle MySQL, MariaDB и Percona Server), различни клъстерни технологии (NDB Cluster, Group Replication, асинхронна репликация и Galera Cluster), балансиране на натоварването/прокси сървъри (HAProxy, Keepalived, Maxscale, ProxySQL), както и други бази данни с отворен код (PostgreSQL и MongoDB).
Автоматизация и управление
ClusterControl също така предоставя функционалност за разгръщане на единични екземпляри или клъстери на място или в облака (AWS, GCE и Azure), както и функции като управление на архивиране, автоматично преминаване при отказ и възстановяване/поправка, непрекъснати надстройки, управление на клъстери за репликация или настройки на клъстер , мащабиране и др.
Това е всичко за днес хора. Ако сте работили с MySQL Enterprise Monitor и искате да добавите нещо, моля, направете го в секцията за коментари.