MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да започнете с автоматизацията на базата данни

Автоматизацията на базата данни помага да направите сложните и отнемащи време задачи лесни и бързи. Задачите, които най-често и лесно се идентифицират за автоматизация, са тези, които отнемат време, но се повтарят. Те често отнемат производителността и могат да повлияят на финансите на компанията, защото трябва да плащате на хората, работещи по тези задачи. Въпреки това процесите, в които се изразходват излишно време и усилия, могат да бъдат превърнати във виртуална автоматизация, като по този начин се избягва често скучната, изтощителна работа.

Автоматизацията на бази данни е обичайна практика на администраторите на бази данни и администраторите на сървъри, които заедно са по-известни сега като DevOps. DevOps също така се отнася до комбинацията от задачи на администратори на администратори и сървъри. По старомоден начин традиционните и често срещани автоматизирани задачи се записват като поредица от SQL оператори или .sql файлове, които разгръщат и предоставят сървъри чрез скриптове, настройват криптиране/декриптиране или използват сигурността за средата, в която се предполага вашата автоматизация да тичаш. Тук автоматизацията не е пример за компания, която заменя хората със скриптове. Той е там като асистент, за да ускори нещата и да завърши задачите по-бързо с по-малко грешки. Автоматизацията не може да замени начина, по който DBA изпълняват задачите си или стойността, която могат да предоставят на цялата компания или организация.

Усъвършенстваните инструменти за инфраструктура като код (IaC), като Puppet, Chef, Ansible, SaltStack и Terraform, помагат на DBA да изпълняват тези задачи, които лесно се репликират, като архивиране и възстановяване, отказ, внедряване на нови клъстери, настройка на настройките за сигурност, настройка на производителността на ядрото на ОС и базата данни и много други. С помощта на автоматизацията много администратори на база данни също подобриха или изместиха уменията си от фокусиране върху специфични за домейна данни задачи, за да покрият също как да кодират, за да използват тези инструменти на IaC, които правят нещата по-лесни от използването на традиционния подход. В момента има и инструменти, които улесняват управлението на вашите активи в облака, като например управление на потребителски акаунти на вашата компания, регистрационни файлове, внедряване на екземпляри или управление на вашите сървъри. Инструментите за облака от трите големи облачни доставчици включват AWS CloudFormation, Azure Resource Manager и Google Cloud Deployment Manager и позволяват на DBA или DevOps да използват силата на автоматизацията и да направят нещата по-бързи. Това не само впечатлява ръководителите на вашата организация или компанията, но и клиентите, които разчитат на вашите услуги.

Какво трябва да бъде автоматизирано?

Както споменахме по-горе, автоматизацията на базата данни не е нова за администратори на база данни, администратори на сървъри или дори DevOps. Няма причина да се колебаете или да се съмнявате дали да автоматизирате. Както беше посочено по-рано, често срещаните случаи, които лесно се идентифицират за автоматизация, са задачи, които са повтарящи се по своята същност.

По-долу изброяваме неща, които са аксиоматични от гледна точка на DBA.

  • Осигуряване на вашите сървъри (напр. иницииране на екземпляри на VM като използване на vagrant, стартиране на docker или иницииране на вашия Kubernetes платформа) и настройте SSH достъп или настройте VPN достъп

  • Разгръщане на нов клъстер от база данни

    • Определете какъв тип доставчик на база данни, вида на настройка (основна/готовност, главен-главен репликация, синхронна репликация)

  • Импортиране на съществуващ клъстер от база данни

  • Разгръщане/импортиране на съществуващи бази данни в текущия клъстер от бази данни

  • Автоматично превключване при отказ или превключване

  • Автоматично възстановяване на възел или клъстер

  • Повишаване на копие/подчинение или Понижаване на майстор

  • Разгръщане на балансьори на натоварване (напр. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Архивиране и възстановяване

  • Настройте вашата среда за наблюдение на база данни (напр. разгръщайте базирано на агент мониторинг, като Prometheus)

  • Активиране на настройките за сигурност

  • Извършвайте автоматични оптимизации и настройки в съответствие с типа среда

  • Активиране на системите за предупреждение към други интеграции на трети страни

  • Генерирайте сигнали или аларми и известия

  • Генерирайте отчети като графики

  • Обработвайте регистрационни файлове на заявки (бавни регистрационни файлове) за анализ на заявки

  • Генериране на анализ на заявка

  • Архивиране или почистване на базата данни

Разбира се, има много случаи, които можете да автоматизирате, но това изброява най-често срещаните задачи и автоматизирането им е безспорно. Това са видовете задачи, които са повтарящи се по своята същност и повечето са податливи на грешки, особено когато трябва да се изпълняват бързо поради ограничения във времето.

Какви са нещата, които не трябва да се автоматизират?

Тези области са мястото, където вашите администратори на база данни или системни администратори вършат по-голямата част от работата. Автоматизацията не може да замени набора от умения и интелигентност на DBA, когато става въпрос за неща, които не могат да бъдат автоматизирани.

Разбира се, че DBA трябва да е квалифициран, със задълбочено разбиране на:  базата данни, която използва, и базите данни, които ще бъдат внедрени; данните, които се обработват и съхраняват; и дали начинът, по който се обработват, е сигурен или отговаря на стандартите за сигурност на компанията. DBA също преглеждат и най-вече се считат за DevOps, както и за архитект за автоматизация. Те диктуват какво трябва да се направи и какво няма да се прави. Често срещани неща, които не трябва да се автоматизират, са следните:

 

  • Настройване на планираните резервни копия. Планираните архиви, разбира се, са автоматизирани и трябва да се изпълняват съответно, но планираните дати или необходимия период от време трябва  да се основават на ниските пикови времена, които сървърът ще изпълнява. Например, не можете да направите резервно копие, ако клъстерът е зает през деня. Има и често срещани случаи, когато сървърите все още са заети през нощта в зависимост от типа приложение, което обслужвате, и къде се намира географски.

  • Автоматичното прекратяване не успя да популяризира нов главен. Това е един от най-важните случаи и трябва да се разбере добре. Ако имате автоматизирани скриптове, предназначени за отказ, те не трябва да бъдат проектирани да извършват принудително преминаване на отказ, в случай че се случи неуспешно.. Може никога да не разберете какъв е основният проблем и ако има неуспех, може да има транзакции, които имат да бъдат възстановени, преди да се направи нещо друго. Например, това може да бъде финансова транзакция, която е била съхранена на неуспешния главен обект и вие насилствено сте искали да повишите подчинен, но кандидат-подчинен не е успял да репликира последната транзакция. В такъв случай може да се окажете с повредени данни.

  • Възстановяване на данни. Разбира се, когато срещнете повреда на данните или клъстер не успее да се възстанови от автоматичното възстановяване на възел/сървър, може да се наложи да проучите основната причина. Трябва да документирате това за вашия RCA (анализ на първопричините), за да го избегнете в бъдеще. Има обаче случаи, когато повредата е грешка в софтуера на базата данни, който използвате, или може да е повреда на VM.

  • Отклоняване на данните или несъответствие на данните. Това определено не е идеална ситуация за автоматизация. Не искате вашият автомат да обобщава или стереотипизира вашите данни към практика, която би приложила тази концепция:„ако данните са повредени, нека автоматично да ги поправим“. Определено не е добра практика. Има много случаи, които първо трябва да бъдат разбрани и проучени, преди да можете да вземете решение. В MySQL, например, има инструмент на Percona, наречен pt-table-checksum, след това pt-table-sync, за който и двете са корелативни помежду си при коригиране на несъответствия в данните. Определено няма да искате да автоматизирате това, освен ако не познавате данните си много добре, или данните ви не са обширни, или данните могат да бъдат регенерирани.

  • Настройка на ядрото и настройка на базата данни. Разбира се, това може да се разглежда като противоречие с казаното по-горе. Въпреки това, има автоматично регулируеми променливи, известни за специфични типове среди, като памет, буферен пул, огромни страници или параметри на виртуална памет. Определено обаче има много параметри, които се нуждаят от разбиране, проучване, тестване, сравнителен анализ, преди да решите да приложите промените или не.

Определено има много неща, които не трябва  да автоматизирате, но не сме споменали. В света на базата данни има голям брой ситуации, които зависят от типа данни и приложение, които обслужвате. Имайте това предвид и бъдете чувствителни към нещата, които  могат да бъдат автоматизирани. В противен случай автоматизацията може да доведе до унищожаване.

Инструменти за автоматизация

Тук можете да започнете с вашите скриптове за автоматизация. Най-важният компонент на автоматизацията е скоростта! Когато става въпрос за скорост, тя не се измерва с това колко бързо инструментът е в състояние да завърши задачите, а колко удобни са разработчиците или поддържащите скриптове или IaC с инструмента. Определено има плюсове и минуси за тези налични инструменти за автоматизация. Това, което е по-важно, е да се определят спецификациите на тези инструменти за автоматизация, тъй като има още какво да се предложи, освен само автоматизация. По-често те осигуряват механизми за управление и внедряване.

Автоматизацията е свързана със скоростта, тоест колко е бърза за разлика от използването на традиционен подход или използването на вашите собствени предпочитани езикови скриптове. Разбира се, използването на вашите собствени скриптове може да бъде перфектно, но ако вашата организация или компания са за технологичен напредък, тогава използването на инструменти на трети страни като Ansible, Puppet, Chef, SaltStack или Terraform е по-идеално. Защо е по-идеален? Тези инструменти на трети страни са предназначени да преодолеят дълги и продължителни задачи за изпълнение и могат да бъдат извършени с няколко реда код.

Например, Terraform е известен със своите предимства за преносимост. Представете си само, че с Terraform имате един инструмент и един език за описание на инфраструктура за Google Cloud, AWS, OpenStack и ВСЕКИ друг облак. Ако преминете към друг доставчик, не е необходимо да променяте или преработвате скриптовете си. Той също така ви позволява да имате пълен стек внедряване и това включва управление на вашите Kubernetes контейнери. Представете си, че от един инструмент можете да правите много неща.

Когато стартирате автоматизацията на вашата база данни, не започвайте от нулата, защото целта на автоматизацията е скоростта! Отново, тук скоростта не се измерва в това колко бързо е да завършите работата, а колко бързо е в сравнение с традиционния подход или ръчните задачи. Разбира се, скоростта на това колко бързо е в състояние да завърши задачата зависи, например част от вашите скриптове може да причини дълги забавяния поради куп обработени данни и продължително изпълнение на задание.

Винаги избирайте въз основа на вашите изисквания

Когато избирате инструменти, не разчитайте на рекламата или това, което е най-популярното, за което сте чували. Въпреки че основните инструменти, споменати по-рано, се възприемат до голяма степен от общността, те също така въвеждат сложност. Например, когато използвате Ansible, трябва да сте запознати с YAML, докато с Puppet или Chef, трябва да сте запознати с Ruby и неговия основен език, специфичен за домейна.

Възползвайте се от наличните корпоративни инструменти

Има много обещаващи инструменти за автоматизация на бази данни, с които да започнете. Ако смятате, че е неудобно и отнема много време да наемате администратори на база данни, системни администратори или DevOps, за да разширите екипа си, има налични инструменти, които предлагат помощ, когато става въпрос за управление на база данни, управление на архивиране и наблюдение.

Няколко ClusterControl за автоматизация на бази данни

ClusterControl предлага много автоматизирани задачи, които премахват  необходимостта от ръчни подходи. ClusterControl е проектиран да улесни операциите с база данни за организации, компании, администратори на база данни, системни администратори, DevOps и дори разработчици. Целта му е да автоматизира продължителни и повтарящи се задачи. Голямото предимство на ClusterControl е, че той е зрял инструмент за управление на база данни и има обширни функции, които са много мощни за управление на вашите сървъри на база данни. Той също така прилага най-актуалните, стандартни за индустрията най-добри практики за управление на вашите бази данни. Ние се вслушваме в изискванията на нашите клиенти, след което внедряваме възможности, за да ги отговорим.

Някои от най-богатите на функции функции за автоматизация на ClusterControl, от които можете да се възползвате, са:

  • Разгръщане на вашите сървъри на база данни. Изберете доставчика, посочете правилната версия, определете какъв тип клъстер, посочете името/IP на хоста на сървъра, като потребителско име, парола и т.н.

  • Импортиране на съществуващи сървъри в ClusterControl

  • Внедряване в облака

  • Наблюдение и отчитане на състоянието на базата данни

  • Сигнали и известия

  • Архивиране и възстановяване

  • Потвърждаване на резервно копие

  • Автоматично превключване, превключване

  • Настройка за висока наличност

  • Повишете подчинен или понижи главен

  • Добавете нова/съществуваща реплика към вашия клъстер

  • Разширете друг клъстер като подчинен на друг клъстер (идеално за географска настройка за вашето възстановяване след бедствие)

  • Възстановяване на възел и клъстер

  • Интегриране на LDAP

  • Уведомления за сигнали от трети страни

  • Разгръщане на който и да е от обширния списък от балансиращи устройства  (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Внедряване на базиран на агент мониторинг с помощта на експортери на Prometheus

  • Анализ на заявките

  • Настройки на сигурността

  • Автоматична настройка за параметрите на ядрото на ОС и базата данни

В допълнение към  всичко това, ClusterControl също има вградени съветници, които позволяват на DBA или DevOps да създават свои собствени скриптове и да се интегрират в ClusterControl Performance Advisors.

Резюме

Автоматизацията на базата данни помага за ускоряване на сложните, но повтарящи се задачи. Той помага на администраторите на база данни да се движат бързо напред по различни задачи и да подобрят своите умения в зависимост от обхвата на работата. Автоматизацията на базата данни освобождава DBA да бъдат по-иновативни, като същевременно удобно управляват базата данни. Автоматизацията на базата данни не замества ролята на DBA. Винаги ще има нужда от квалифицирани и умни хора, които да управляват вашите бази данни, особено когато настъпи бедствие. Винаги разчитайте на инструментите, които вашите администратори на база данни препоръчват, като същевременно се доверявайте на техните умения за управление на база данни за управление на здравето и живота на вашите бази данни.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ne оператор на конвейер за агрегиране

  2. Ръководство за разработчици за MongoDB Sharding

  3. 3 лесни стъпки за подобряване на сигурността на вашата инсталация на MongoDB

  4. 9 функции на ClusterControl, които няма да намерите в други инструменти за управление на бази данни

  5. Защо MongoDB не използва пресичане на индекси?