Наблюдението е задължително във всички среди и базите данни не са изключение. След като вашата инфраструктура на базата данни работи и работи, ще трябва да следите какво се случва. Наблюдението е задължително, ако искате да сте сигурни, че всичко върви добре, но също така и ако правите необходимите корекции, докато вашата система расте и се развива. Това ще ви позволи да идентифицирате тенденции, да планирате надстройки или подобрения или да реагирате адекватно на всякакви проблеми или грешки, които могат да възникнат с нови версии, различни цели и т.н.
За всяка технология на база данни има различни неща за наблюдение. Някои от тях са специфични за двигателя на базата данни, доставчика или дори конкретната версия, която използвате. Клъстерите от бази данни силно зависят от основната инфраструктура, така че мрежовите и оперативните статистики са интересни за разглеждане и от администраторите на бази данни.
Когато работите с множество системи за бази данни, наблюдението на тези системи може да стане доста скучна работа.
В този блог ще разгледаме какво ви е необходимо, за да наблюдавате среда на MySQL 8.0. Ще разгледаме също така функциите за наблюдение на клъстерния контрол, които могат да ви помогнат да проследите здравето на вашите бази данни безплатно.
Системен мониторинг на ОС и бази данни
Когато наблюдавате клъстер или възел на база данни, има две основни точки, които трябва да се вземат предвид:операционната система и самият екземпляр на MySQL. Ще трябва да дефинирате кои показатели ще наблюдавате от двете страни и как ще го направите. Трябва да следвате параметъра винаги в смисъла на вашата система и трябва да търсите промени в модела на поведение.
Имайте предвид, че когато един от вашите параметри е засегнат, това може да засегне и други, което прави отстраняването на проблема по-сложно. Наличието на подходяща система за наблюдение и предупреждение е от съществено значение, за да направи тази задача възможно най-проста.
В повечето случаи ще трябва да използвате някои инструменти, тъй като е трудно да се намери такъв, който да покрие всички желани показатели.
Системен мониторинг на ОС
Едно основно нещо (което е общо за всички машини за бази данни и дори за всички системи) е да наблюдавате поведението на операционната система. Ето някои точки, които да проверите тук. По-долу можете да намерите най-добрите системни ресурси за гледане на сървър на база данни. Всъщност това е и списъкът с първите неща, които трябва да проверите.
Използване на процесора
Високата употреба на процесора не е лошо нещо, стига да не достигнете лимита. Прекомерният процент използване на процесора може да бъде проблем, ако не е обичайно поведение. В този случай е важно да се идентифицират процеса/процесите, които генерират този проблем. Ако проблемът е в процеса на база данни, ще трябва да проверите какво се случва в базата данни.
Използване на RAM памет или SWAP
В идеалния случай цялата ви база данни трябва да се съхранява в паметта, но това не винаги е възможно. Дайте на MySQL толкова, колкото можете да си позволите, но оставете достатъчно, за да функционират другите процеси.
Ако видите висока стойност за този показател и нищо не се е променило във вашата система, вероятно трябва да проверите конфигурацията на вашата база данни. Параметри като shared_buffers и work_mem могат да повлияят директно на това, тъй като те определят количеството памет, което да може да се използва за MySQL базата данни. Размяната е само за спешни случаи и не трябва да се използва, уверете се, че също така сте настроили операционната си система, за да позволите на MySQL да решава относно използването на суап.
Използване на диска
Използването на диска е един от ключовите показатели за наблюдение и предупреждение. Уверете се, че винаги имате свободно място за нови данни, временни файлове, моментни снимки или резервни копия.
Наблюдението на твърдите метрични стойности не е достатъчно добро. Ненормално увеличаване на използването на дисково пространство или прекомерна консумация на достъп до диска са важни неща, които трябва да наблюдавате, тъй като може да имате голям брой грешки, регистрирани в регистрационния файл на MySQL или лоша конфигурация на кеша, която може да генерира жизненоважно потребление на достъп до диск вместо използване на памет за обработка на заявките. Уверете се, че сте в състояние да улавяте необичайно поведение, дори ако вашите предупреждения и критични показатели все още не са достигнати.
Заедно с наблюдението на пространството трябва да наблюдаваме и активността на диска. Най-добрите стойности за наблюдение са:
- Заявки за четене/запис
- Дължина на IO опашката
- Средно изчакване на IO
- Средно време за четене/запис
- Пропускателна способност за четене/запис
Можете да използвате iostat или pt-diskstats от Percona, за да видите всички тези подробности.
Нещата, които могат да повлияят на производителността на вашия диск, често са свързани с трансфер на данни от и към вашия диск, така че наблюдавайте необичайни процеси, отколкото могат да бъдат стартирани от други потребители.
Средно зареждане
Всичко в едно показател за ефективността. Разбирането на Linux Load е ключ за наблюдение на ОС и зависими от база данни системи.
Средно натоварване, свързано с трите точки, споменати по-горе. Високо средно натоварване може да бъде генерирано от прекомерно използване на процесора, RAM или диска.
Мрежа
Освен ако не правите резервни копия или не прехвърляте огромни количества данни, това не трябва да е пречката.
Проблем с мрежата може да засегне всички системи, тъй като приложението не може да се свърже (или да свърже губещи пакети) към базата данни, така че това наистина е важен показател за наблюдение. Можете да наблюдавате забавянето или загубата на пакети, като основният проблем може да бъде насищане на мрежата, хардуерен проблем или просто лоша конфигурация на мрежата.
Наблюдение на базата данни
Макар че наблюдението е задължително, обикновено не е безплатно. Винаги има цена за производителността на базата данни, в зависимост от това колко наблюдавате, така че трябва да избягвате да наблюдавате неща, които няма да използвате.
Като цяло има два начина за наблюдение на вашите бази данни, от регистрационните файлове или от страната на базата данни чрез заявка.
В случай на регистрационни файлове, за да можете да ги използвате, трябва да имате високо ниво на регистриране, което генерира висок достъп до диск и може да повлияе на производителността на вашата база данни.
За режима на заявка всяка връзка с базата данни използва ресурси, така че в зависимост от активността на вашата база данни и присвоените ресурси, това може да повлияе и на производителността.
Разбира се, има много показатели в MySQL. Тук ще се съсредоточим върху най-важното.
Наблюдение на активни сесии
Трябва също да проследявате броя на активните сесии и състоянието на БД нагоре надолу. Често, за да разберете проблема, трябва да видите колко дълго работи базата данни. така че можем да използваме това, за да открием повторно възникване.
Следващото нещо ще бъдат няколко сесии. Ако сте близо до лимита, трябва да проверите дали нещо не е наред или просто трябва да увеличите стойността на max_connections. Разликата в броя може да бъде увеличаване или намаляване на връзките. Неправилното използване на пул на връзки, проблеми със заключването или мрежата са най-честите проблеми, свързани с броя на връзките.
Ключовите стойности тук са
- Време на работа
- Threads_connected
- Max_used_connections
- Прекратени_свързвания
Заключване на базата данни
Ако имате заявка, която чака друга заявка, трябва да проверите дали тази друга заявка е нормален процес или нещо ново. В някои случаи, ако някой прави актуализация на голяма маса, например, това действие може да повлияе на нормалното поведение на вашата база данни, генерирайки голям брой заключвания.
Наблюдение на репликацията
Ключовите показатели за наблюдение за репликация са изоставането и състоянието на репликация. Не само състоянието нагоре надолу, но и изоставането, тъй като непрекъснатото увеличаване на тази стойност не е много добър знак, тъй като означава, че подчинения не е в състояние да настигне своя господар.
Най-често срещаните проблеми са проблеми с мрежата, проблеми с хардуерните ресурси или проблеми с оразмеряването. Ако сте изправени пред проблем с репликацията, ще трябва да знаете това възможно най-скоро, тъй като ще трябва да го поправите, за да осигурите среда с висока наличност.
Репликацията се наблюдава най-добре чрез проверка на СТАТУС НА СЛАВЕТО и следните параметри:
- SLAVE_RUNNING
- SLAVE_IO_Running
- SLAVE_SQL_RUNNING
- LAST_SQL_ERRNO
- SECONDS_BEHIND_MASTER
Резервни копия
За съжаление, ваниловото издание на общността не се предлага с мениджъра за архивиране. Трябва да знаете дали архивирането е завършено и дали е използваемо. Обикновено тази последна точка не се взема предвид, но това е може би най-критичната проверка в процеса на архивиране. Тук ще трябва да използваме външни инструменти като percona-xtrabackup или ClusterControl.
Регистрации на базата данни
Трябва да наблюдавате регистрационния файл на вашата база данни за грешки като FATAL или безизходица, или дори за често срещани грешки като проблеми с удостоверяването или продължителни заявки. Повечето от грешките са записани в регистрационния файл с подробна полезна информация за отстраняването им. Често срещани точки на отказ, които трябва да следите, са грешки, размери на регистрационните файлове. Местоположението на регистъра за грешки може да бъде намерено под променливата log_error.
Външни инструменти
Не на последно място можете да намерите списък с полезни инструменти за наблюдение на активността на вашата база данни.
Percona Toolkit - е наборът от Linux инструменти от Percona за анализиране на MySQL и дейностите на ОС. Можете да го намерите тук. Той поддържа най-популярните 64-битови Linux дистрибуции като Debian, Ubuntu и Redhat.
mysqladmin - mysqladmin е административна програма за демона MySQL. Може да се използва за проверка на здравето на сървъра (ping), изброяване на процесите, виждане на стойностите на променливите, но също така за извършване на някаква административна работа като създаване/пускане на бази данни, изтриване (нулиране) на регистрационни файлове, статистика и таблици, унищожаване на изпълнявани заявки, спрете сървъра и контролирайте репликацията.
innotop - предлага разширен изглед на операторите SHOW. Той е много мощен и може значително да намали времето за разследване. Сред ваниловата поддръжка на MySQL можете да видите изгледа на Galera и подробности за репликацията на главен-подчинен.
mtop - следи MySQL сървър, показвайки заявките, които отнемат най-много време за изпълнение. Функциите включват „увеличаване“ на процес, за да се покаже пълната заявка, „обясняване“ на информацията за оптимизатор на заявка за заявка и „убиване“ на заявки. Освен това се предоставят статистически данни за производителността на сървъра, информация за конфигурацията и съвети за настройка.
Mytop - работи в терминал и показва статистически данни за нишки, заявки, бавни заявки, време на работа, натоварване и т.н. в табличен формат, много подобен на Linux
Заключение
Този блог не е предназначен да бъде изчерпателно ръководство за това как да се подобри наблюдението на базата данни, но се надяваме, че дава по-ясна картина за това кои неща могат да станат съществени и някои от основните параметри, които могат да бъдат наблюдавани. Не се колебайте да ни уведомите, ако сме пропуснали някои важни в коментарите по-долу.