sql >> Databáze >  >> NoSQL >> MongoDB

Jak začít s automatizací databází

Automatizace databáze pomáhá zjednodušit a urychlit složité a časově náročné úkoly. Nejčastěji a snadno identifikovatelné úlohy pro automatizaci jsou ty, které jsou časově náročné, ale opakující se. Ty často spotřebovávají produktivitu a mohou ovlivnit firemní finance, protože musíte platit lidi pracující na těchto úkolech. Procesy, ve kterých se zbytečně spotřebovává čas a úsilí, však lze převést na virtuální automatizaci, čímž se vyhnete často nudné a vyčerpávající práci.

Automatizace databází je běžnou praxí správců databází a správců serverů, kteří jsou nyní společně známější jako DevOps. DevOps také odkazuje na kombinaci úkolů správce dat a serveru. Tradičním způsobem jsou tradiční a běžné automatizované úlohy psány jako série příkazů SQL nebo souborů .sql, které nasazují a poskytují servery prostřednictvím skriptů, nastavují šifrování/dešifrování nebo využívají zabezpečení pro prostředí, ve kterém se předpokládá vaše automatizace. běžet. Automatizace zde není příkladem společnosti nahrazující lidi pomocí skriptů. Je zde jako asistent, který přináší věci do rychlosti a dokončí úkoly rychleji s menším počtem chyb. Automatizace nemůže nahradit způsob, jakým správci dat plní své úkoly, ani hodnotu, kterou mohou poskytnout celé společnosti nebo organizaci.

Sofistikované nástroje pro Infrastructure as Code (IaC), jako jsou Puppet, Chef, Ansible, SaltStack a Terraform, pomáhají správcům databází dokončit ty úkoly, které se snadno replikují, jako je zálohování a obnova, selhání, nasazení nové clustery, úprava nastavení zabezpečení, ladění výkonu jádra OS a databáze a mnoho dalšího. S pomocí automatizace také mnoho DBA zlepšilo nebo posunulo své dovednosti ze zaměření na úkoly specifické pro datovou doménu, aby také pokryli, jak kódovat, aby mohli využívat tyto nástroje IaC, které usnadňují práci než tradiční přístup. V současnosti také existují nástroje, které usnadňují správu vašich aktiv v cloudu, jako je správa firemních uživatelských účtů, protokolů, nasazování instancí nebo správa serverů. Nástroje pro cloud od velkých tří poskytovatelů cloudu zahrnují AWS CloudFormation, Azure Resource Manager a Google Cloud Deployment Manager a umožňují správcům databází nebo DevOps využít sílu automatizace a zrychlit věci. To udělá dojem nejen na vedení vaší organizace nebo společnosti, ale také na zákazníky, kteří se na vaše služby spoléhají.

Co je třeba automatizovat?

Jak bylo zmíněno výše, automatizace databází není novinkou pro správce databází, správce serverů nebo dokonce DevOps. Není důvod váhat nebo pochybovat, zda automatizovat. Jak bylo uvedeno dříve, běžné případy, které lze snadno identifikovat pro automatizaci, jsou úkoly, které se svou povahou opakují.

Níže vyjmenováváme věci, které jsou z pohledu DBA axiomatické.

  • Zřizování vašich serverů (např. spouštění instancí virtuálních počítačů, jako je použití vagrant, inicializace dockeru nebo inicializace vašeho Kubernetes platforma) a nastavte přístup SSH nebo nastavte přístup VPN

  • Nasazení nového databázového clusteru

    • Určete, jaký typ poskytovatele databáze, typ nastavení (primární/pohotovostní, replikace master-master, synchronní replikace)

  • Import stávajícího databázového clusteru

  • Nasazení/import existujících databází do aktuálního databázového clusteru

  • Automatické selhání nebo přepnutí

  • Automatické obnovení uzlu nebo clusteru

  • Povýšení repliky/slave nebo snížení úrovně master

  • Nasazení nástrojů pro vyrovnávání zatížení (např. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Zálohování a obnovení

  • Nastavení prostředí monitorování databáze (např. nasazení monitorování založeného na agentech, jako je Prometheus)

  • Povolit úpravy zabezpečení

  • Provádět automatické optimalizace a ladění podle typu prostředí

  • Povolit systémy upozornění na integrace jiných třetích stran

  • Generování výstrah nebo alarmů a oznámení

  • Generování přehledů, jako jsou grafy

  • Zpracování protokolů dotazů (pomalé protokoly) pro analýzu dotazů

  • Generovat analýzu dotazů

  • Archivace nebo vyčištění databáze

Samozřejmě existuje mnoho případů, které byste mohli automatizovat, ale zde jsou uvedeny nejběžnější úkoly a jejich automatizace je nepochybná. Jedná se o typy úkolů, které se svou povahou opakují a většina z nich je náchylná k chybám, zvláště když je z časových důvodů nutné provést rychle.

Co jsou věci, které by se neměly automatizovat?

V těchto oblastech dělají většinu práce vaši správci databází nebo správci systému. Automatizace nemůže nahradit sadu dovedností a inteligenci DBA, pokud jde o věci, které nelze automatizovat.

Rozumí se, že DBA musí být zručný a musí dokonale rozumět:  databázi, kterou používá, a databázím, které budou nasazeny; údaje, které se zpracovávají a ukládají; a zda je způsob jejich zpracování bezpečný nebo zda odpovídá bezpečnostním standardům společnosti. DBA také kontrolují a většinou jsou považováni za DevOps a také za architekta automatizace. Říkají, co se musí udělat a co se dělat nebude. Běžné věci, které by neměly být automatizovány, jsou následující:

 

  • Nastavení plánovaných záloh. Naplánované zálohy jsou samozřejmě automatické a musí se odpovídajícím způsobem spouštět, ale plánovaná data nebo požadované časové období by měly vycházet z doby nízké špičky, kterou bude server provádět. Nemůžete například provést zálohu, pokud je cluster zaneprázdněn během dne. Existují také běžné případy, kdy jsou servery v noci stále vytížené v závislosti na typu aplikace, kterou obsluhujete, a na tom, kde se geograficky nachází.

  • Automatické selhání při povýšení na novou předlohu. Toto je jeden z nejdůležitějších případů a je třeba mu dobře rozumět. Pokud máte automatizované skripty navržené pro převzetí služeb při selhání, neměly by být navrženy tak, aby násilně prováděly převzetí služeb při selhání v případě, že selže. Možná nikdy nevíte, co je hlavním problémem, a pokud dojde k selhání, mohou existovat transakce, které být obnoven, než by se mělo udělat cokoliv jiného. Může to být například finanční transakce, která byla uložena na neúspěšném hlavním serveru a vy jste chtěli násilně povýšit otroka, ale kandidátskému otrokovi se nepodařilo replikovat poslední transakci. V takovém případě můžete skončit s poškozenými daty.

  • Obnova dat. Samozřejmě, když narazíte na poškození dat nebo se klastr neobnoví z vašeho automatického obnovení uzlu/serveru, možná budete muset prozkoumat primární příčinu. Musíte to zdokumentovat pro vaši RCA (analýzu kořenových příčin), abyste se tomu v budoucnu vyhnuli. Existují však případy, kdy je selhání způsobeno chybou databázového softwaru, který používáte, nebo může jít o poškození virtuálního počítače.

  • Posun dat nebo nekonzistence dat. Pro automatizaci to rozhodně není ideální situace. Nechcete, aby váš automat zobecňoval nebo stereotypizoval vaše data na praxi, která by aplikovala tento koncept:„jsou-li data poškozena, automaticky to opravme“. Rozhodně to není dobrá praxe. Existuje mnoho případů, které je třeba nejprve pochopit a prošetřit, než se můžete rozhodnout. Například v MySQL existuje nástroj Percona nazvaný pt-table-checksum, pak pt-table-sync, pro které jsou oba vzájemně korelativní při opravě nekonzistencí dat. Určitě to nebudete chtít automatizovat, pokud svá data neznáte velmi dobře nebo vaše data nejsou rozsáhlá nebo pokud je nelze regenerovat.

  • Ladění jádra a databáze. Samozřejmě, že to může být v rozporu s tím, co jsme uvedli výše. Existují však automaticky laditelné proměnné známé pro konkrétní typy prostředí, jako je paměť, fond vyrovnávacích pamětí, HugePages nebo parametry virtuální paměti. Rozhodně však existuje mnoho parametrů, které je třeba pochopit, prozkoumat, otestovat a porovnat, než se rozhodnete změny použít, nebo ne.

Určitě existuje spousta věcí, které byste neměli automatizovat a které jsme nezmínili. Ve světě databází existuje velké množství situací, které závisí na typu dat a aplikace, kterou obsluhujete. Mějte to na paměti a buďte citliví na věci, které lze automatizovat. V opačném případě může automatizace vést ke zničení.

Nástroje pro automatizaci

Zde můžete začít s automatizačními skripty. Nejdůležitější součástí automatizace je rychlost! Pokud jde o rychlost, neměří se tím, jak rychle je nástroj schopen dokončit úkoly, ale tím, jak pohodlně jsou vývojáři nebo správci skriptů nebo IaC s nástrojem. Rozhodně existují výhody a nevýhody těchto automatizačních nástrojů. Co je důležitější, je určit specifikace těchto automatizačních nástrojů, protože kromě automatizace je toho co nabídnout. Častěji poskytují mechanismy pro správu konfigurace a nasazení.

Automatizace je o rychlosti, tedy o tom, jak je rychlá na rozdíl od tradičního přístupu nebo používání vlastních preferovaných jazykových skriptů. Používání vlastních skriptů může být samozřejmě perfektní, ale pokud vaše organizace nebo společnost usiluje o technologický pokrok, pak je ideálnější použití nástrojů třetích stran, jako je Ansible, Puppet, Chef, SaltStack nebo Terraform. Proč je to ideálnější? Tyto nástroje třetích stran jsou navrženy k překonání dlouhých a zdlouhavých úkolů a lze je provést pomocí několika řádků kódu.

Například Terraform je známý pro své výhody přenositelnosti. Jen si představte, že s Terraformem máte jeden nástroj a jeden jazyk pro popis infrastruktury pro Google Cloud, AWS, OpenStack a JAKÝKOLI jiný cloud. Pokud přejdete k jinému poskytovateli, nemusíte své skripty upravovat ani předělávat. Umožňuje vám také nasazení v plném rozsahu, a to včetně správy kontejnerů Kubernetes. Představte si, že s jedním nástrojem můžete dělat spoustu věcí.

Při spouštění automatizace databáze nezačínejte od nuly, protože cílem automatizace je rychlost! Opět platí, že rychlost se zde neměří v tom, jak rychle je úkol dokončit, ale jak rychle je to ve srovnání s tradičním přístupem nebo manuálními úkoly. Samozřejmě záleží na rychlosti, jak rychle je schopen dokončit úlohu, například část vašich skriptů může způsobit dlouhé zpoždění kvůli hromadě zpracovaných dat a dlouhému provádění úloh.

Vždy vybírejte podle svých požadavků

Při výběru nástrojů se nespoléhejte na humbuk nebo na to, co je nejoblíbenější, o čem jste slyšeli. Ačkoli tradiční nástroje, které byly zmíněny dříve, komunita z velké části přijímá, přinášejí také složitost. Například, když používáte Ansible, musíte být obeznámeni s YAML, zatímco s Puppet nebo Chef musíte být obeznámeni s Ruby a jeho základním doménově specifickým jazykem.

Využijte dostupné podnikové nástroje

Existuje mnoho slibných nástrojů pro automatizaci databází, se kterými můžete začít. Pokud máte pocit, že je nepohodlné a časově náročné najímat správce databází, SysAdminy nebo DevOps k rozšíření vašeho týmu, jsou k dispozici nástroje, které nabízejí pomoc, pokud jde o správu databází, správu zálohování a pozorovatelnost.

Několik řádků ClusterControl pro automatizaci databází

ClusterControl nabízí mnoho automatizovaných úloh, které eliminují nutnost ručních přístupů. ClusterControl je navržen tak, aby usnadnil databázové operace organizacím, společnostem, správcům databází, SysAdminům, DevOps a dokonce i vývojářům. Jeho cílem je automatizovat dlouhotrvající a opakující se úkoly. Velkou výhodou ClusterControl je, že se jedná o vyspělý nástroj pro správu databází a má rozsáhlé funkce, které jsou velmi výkonné pro správu vašich databázových serverů. Používá také nejaktuálnější standardní osvědčené postupy pro správu vašich databází. Nasloucháme požadavkům našich zákazníků a poté implementujeme možnosti, abychom je splnili.

Některé z nejbohatších funkcí automatizace ClusterControl, které můžete využít, jsou:

  • Nasazení vašich databázových serverů. Vyberte poskytovatele, zadejte správnou verzi, určete typ clusteru, zadejte název hostitele/IP serveru, jako je uživatelské jméno, heslo atd.

  • Import stávajících serverů do ClusterControl

  • Nasazení v cloudu

  • Sledování stavu databáze a hlášení

  • Výstrahy a oznámení

  • Zálohování a obnovení

  • Záložní ověření

  • Automatické přepnutí při selhání, přepnutí

  • Nastavení vysoké dostupnosti

  • Povýšit otroka nebo snížit úroveň mistra

  • Přidání nové/stávající repliky do clusteru

  • Rozšiřte další cluster jako slave jiného clusteru (ideální pro geografické nastavení pro obnovu po havárii)

  • Obnova uzlu a klastru

  • Integrace LDAP

  • Upozornění třetích stran

  • Nasazení libovolného z rozsáhlého seznamu nástrojů pro vyrovnávání zatížení  (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Nasazení monitorování založeného na agentech pomocí exportérů Prometheus

  • Analytika dotazů

  • Úpravy zabezpečení

  • Automatické ladění parametrů jádra operačního systému a databáze

Kromě toho všeho má ClusterControl také vestavěné poradce, které umožňují správcům databází nebo DevOps vytvářet vlastní skripty a integrovat je do ClusterControl Performance Advisors.

Přehled

Automatizace databáze pomáhá zrychlit složité, ale opakující se úkoly. Pomáhá správcům databází rychle se posouvat vpřed při plnění různých úkolů a zlepšovat jejich dovednosti v závislosti na rozsahu související práce. Automatizace databáze umožňuje správcům databází být inovativnější a zároveň pohodlně spravovat databázi. Automatizace databáze nenahrazuje roli správce databází. Vždy bude potřeba kvalifikovaných a chytrých lidí, kteří budou spravovat vaše databáze, zvláště když dojde ke katastrofě. Vždy se spoléhejte na nástroje, které vaši správci databází doporučují, a zároveň důvěřujte jejich dovednostem správců databází při správě stavu a životnosti vašich databází.


  1. Jak zjistit délku pole mongodb

  2. Nelze se ověřit do mongo, ověření se nezdařilo

  3. Operátor agregačního potrubí MongoDB $max

  4. Sada replik MongoDB s jednoduchým ověřením hesla