sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man kommer igång med databasautomatisering

Databasautomatisering hjälper till att göra komplexa och tidskrävande uppgifter enkla och snabba. De uppgifter som är vanligast och lättast att identifiera för automatisering är de som är tidskrävande men ändå repetitiva. Dessa tär ofta på produktiviteten och kan påverka företagets ekonomi eftersom du måste betala de personer som arbetar med dessa uppgifter. Emellertid kan de processer där tid och ansträngning förbrukas i onödan konverteras till virtuell automatisering och därigenom undvika ofta tråkigt, utmattande arbete.

Databasautomatisering har varit en vanlig praxis för databasadministratörer och serveradministratörer, som tillsammans är mer kända nu som DevOps. DevOps hänvisar också till kombinationen av DBAs och serveradministratörsuppgifter. På gammaldags sätt skrivs traditionella och vanliga automatiserade uppgifter som en serie SQL-satser eller .sql-filer, som distribuerar och tillhandahåller servrar via skript, ställer in kryptering/dekryptering eller utnyttjar säkerheten för miljön där din automatisering är tänkt. att springa. Här är inte automatisering ett exempel på att ett företag ersätter folk med skript. Den finns där som assistent för att få fart på saker och ting och avsluta uppgifter snabbare med färre fel. Automatisering kan inte ersätta hur DBA:er utför sina uppgifter eller det värde de kan leverera till hela företaget eller organisationen.

Sofistikerade verktyg för Infrastructure as Code (IaC) som Puppet, Chef, Ansible, SaltStack och Terraform hjälper DBA:er att slutföra de uppgifter som är lätta att replikera, som säkerhetskopiering och återställning, misslyckande, distribution av nya kluster, justering av säkerhetsinställningar, justering av OS-kärna och databasprestanda och mycket mer. Med hjälp av automatisering har många DBA:er också förbättrat eller flyttat sina kunskaper från att fokusera på datadomänspecifika uppgifter till att även täcka in hur man kodar för att kunna använda dessa IaC-verktyg som gör saker enklare än att använda det traditionella tillvägagångssättet. Det finns också verktyg för närvarande som gör det enklare att hantera dina tillgångar i molnet, som att hantera dina företags användarkonton, loggar, distribuera instanser eller hantera dina servrar. Verktyg för molnet från de tre stora molnleverantörerna inkluderar AWS CloudFormation, Azure Resource Manager och Google Cloud Deployment Manager och låter DBA:er eller DevOps utnyttja kraften i automatisering och göra saker snabbare. Detta imponerar inte bara på din organisation eller företagets chefer, utan även på kunderna som litar på din tjänst.

Vad behöver automatiseras?

Som nämnts ovan är databasautomatisering inte nytt för DBA:er, serveradministratörer eller ens DevOps. Det finns ingen anledning att tveka eller ifrågasätta om man ska automatisera. Som nämnts tidigare är vanliga fall som lätt kan identifieras för automatisering uppgifter som är repetitiva till sin natur.

Nedan räknar vi upp saker som är axiomatiska ur DBA:s perspektiv.

  • Provisionering av dina servrar (t.ex. initiera VM-instanser som att använda vagrant, initiera docker eller initiera dina Kubernetes plattform) och ställ in SSH-åtkomst eller ställ in VPN-åtkomst

  • Distribution av ett nytt databaskluster

    • Identifiera vilken typ av databasleverantör, typ av inställning (primär/standby, master-master replikering, synkron replikering)

  • Importera befintligt databaskluster

  • Distribuera/importera befintliga databaser till ditt nuvarande databaskluster

  • Automatisk övergång eller övergång

  • Automatisk nod- eller klusteråterställning

  • Replika/slavfrämjande eller nedflyttning av en mästare

  • Isättning av lastbalanserare (t.ex. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Säkerhetskopiera och återställa

  • Ställ in din databasövervakningsmiljö (t.ex. implementera agentbaserad övervakning som Prometheus)

  • Aktivera säkerhetsjusteringar

  • Utför automatiska optimeringar och inställning i enlighet med typen av miljö

  • Aktivera varningssystem för andra tredjepartsintegrationer

  • Generera varningar eller larm och aviseringar

  • Skapa rapporter som grafer

  • Behandla frågeloggar (långsamma loggar) för frågeanalys

  • Generera frågeanalys

  • Databasarkivering eller städning

Det finns naturligtvis många fall som du kan automatisera, men det här listar de vanligaste uppgifterna och att automatisera dem är otvivelaktigt. Dessa är de typer av uppgifter som är repetitiva till sin natur och de flesta är felbenägna, särskilt när de måste utföras snabbt på grund av tidsbrist.

Vad är saker som inte bör automatiseras?

De här områdena är där dina DBA:er eller SysAdmins gör det mesta av arbetet. Automation kan inte ersätta DBA:s kompetens och intelligens när det kommer till saker som inte kan automatiseras.

Det är underförstått att en DBA måste vara skicklig, med en djupgående förståelse för: den databas de använder och de databaser som kommer att distribueras; uppgifterna som behandlas och lagras; och om sättet de behandlas på är säkert eller om det följer företagets säkerhetsstandarder. DBA:er granskar också och betraktas oftast som DevOps, liksom automationsarkitekten. De dikterar vad som måste göras och vad som inte kommer att göras. Vanliga saker som inte bör automatiseras är följande:

 

  • Ställa in dina schemalagda säkerhetskopior. Schemalagda säkerhetskopieringar är naturligtvis automatiserade och måste köras därefter, men de schemalagda datumen eller tidsperioden som krävs bör baseras på de lågtrafiktider som servern kommer att utföra. Du kan till exempel inte ta en säkerhetskopia om klustret är upptaget under dagtid. Det finns också vanliga fall när servrar fortfarande är upptagna på natten beroende på vilken typ av applikation du betjänar och var den är geografiskt belägen.

  • Auto-failover misslyckades med att främja en ny master. Detta är ett av de viktigaste fallen och måste förstås väl. Om du har automatiserade skript som är designade för failover, bör de inte vara utformade för att tvångsförsöka en failover om det skulle råka misslyckas. Du kanske aldrig vet vad som är huvudproblemet, och om det finns ett misslyckande kan det finnas transaktioner som har att återhämta sig innan något annat borde göras. Det kan till exempel vara en finansiell transaktion som lagrades på den misslyckade mastern och du ville med tvång främja en slav, men kandidatslaven hade misslyckats med att replikera den senaste transaktionen. I så fall kan du få skadad data.

  • Dataåterställning. Naturligtvis, när du stöter på datakorruption eller ett kluster inte kan återhämta sig från din automatiska nod/serveråterställning, kan du behöva undersöka den primära orsaken. Du måste dokumentera detta för din RCA (Root Cause Analysis) för att undvika det i framtiden. Det finns dock tillfällen då felet är en bugg i databasprogramvaran du använder, eller det kan vara en VM-korruption.

  • Datadrift eller datainkonsekvens. Detta är definitivt inte en idealisk situation för automatisering. Du vill inte att din automat ska generalisera eller stereotypa dina data till en praxis som skulle tillämpa detta koncept:"om data är korrupt, låt oss fixa det automatiskt". Det är definitivt ingen bra övning. Det finns en hel del fall som först måste förstås och utredas innan man kan avgöra. I MySQL, till exempel, finns det ett Percona-verktyg som heter pt-table-checksum, sedan pt-table-sync för vilka båda är korrelativa till varandra när det gäller att fixa datainkonsekvenser. Du kommer definitivt inte att vilja automatisera detta om du inte känner till dina data mycket väl, eller om din data inte är omfattande, eller om data kan återskapas.

  • Kärnjustering och databasjustering. Detta kan givetvis ses som motsägelsefullt till vad vi har anfört ovan. Det finns dock automatiskt inställbara variabler kända för specifika typer av miljöer, såsom minne, buffertpool, HugePages eller virtuella minnesparametrar. Men det finns definitivt många parametrar som behöver förståelse, utredning, testning, benchmarking innan du bestämmer dig för att tillämpa ändringarna eller inte.

Definitivt finns det många saker du inte bör automatisera som vi inte nämnde. I databasvärlden finns det ett stort antal situationer som beror på vilken typ av data och applikation du betjänar. Tänk på det och var lyhörd för saker som kan automatiseras. Annars kan automatisering leda till förstörelse.

Verktyg för automatisering

Det är här du kan komma igång med dina automatiseringsskript. Den viktigaste komponenten i automatisering är hastighet! När det kommer till hastighet så mäts det inte på hur snabbt ett verktyg klarar av att slutföra uppgifterna, utan hur bekväma utvecklarna eller underhållarna av skripten eller IaC är med verktyget. Det finns definitivt för- och nackdelar med dessa automationsverktyg tillgängliga. Vad som är viktigare är att fastställa specifikationerna för dessa automationsverktyg, eftersom det finns mer att erbjuda förutom att bara vara automatisering. Vanligare är att de tillhandahåller konfigurationshantering och distributionsmekanismer.

Automation handlar om hastighet, det vill säga hur snabbt den är i motsats till att använda ett traditionellt tillvägagångssätt eller att använda dina egna föredragna språkskript. Naturligtvis kan det vara perfekt att använda dina egna skript, men om din organisation eller ditt företag är för tekniska framsteg är det mer idealiskt att använda tredjepartsverktyg som Ansible, Puppet, Chef, SaltStack eller Terraform. Varför är det mer idealiskt? Dessa tredjepartsverktyg är designade för att besegra långa och långa uppgifter att utföra, och kan göras med några rader kod.

Terraform är till exempel känt för sina portabilitetsfördelar. Föreställ dig, med Terraform har du ett verktyg och ett språk för att beskriva infrastruktur för Google Cloud, AWS, OpenStack och ALLA andra moln. Om du byter till en annan leverantör behöver du inte ändra eller göra om dina skript. Det låter dig också ha full-stack-distribution, och det inkluderar att hantera dina Kubernetes-behållare. Föreställ dig att du kan göra många saker med ett verktyg.

När du startar din databasautomatisering, börja inte från början eftersom målet med automatisering är snabbhet! Återigen, hastigheten mäts inte här i hur snabbt det är att avsluta jobbet, utan hur snabbt det är i jämförelse med ett traditionellt tillvägagångssätt eller manuella uppgifter. Naturligtvis beror hastigheten på hur snabbt den kan slutföra jobbet, t.ex. kan en del av dina skript orsaka långa förseningar på grund av en massa bearbetad data och långa jobbkörningar.

Välj alltid baserat på dina krav

När du väljer verktyg, lita inte på hype eller vad som är det mest populära du har hört talas om. Även om de vanliga verktygen som nämndes tidigare till stor del omfattas av samhället, introducerar de också komplexitet. Till exempel, när du använder Ansible måste du vara bekant med YAML, medan du med Puppet eller Chef måste vara bekant med Ruby och dess underliggande domänspecifika språk.

Utnyttja tillgängliga företagsverktyg

Det finns många lovande databasautomatiseringsverktyg att komma igång med. Om du känner att det är obekvämt och tidskrävande att anlita DBA:er, SysAdmins eller DevOps för att utöka ditt team, finns det tillgängliga verktyg som erbjuder hjälp när det kommer till databashantering, säkerhetskopieringshantering och observerbarhet.

Severalnines ClusterControl for Database Automation

ClusterControl erbjuder många automatiserade uppgifter som eliminerar behovet av manuella tillvägagångssätt. ClusterControl är utformad för att göra databasoperationer enkel för organisationer, företag, DBA:er, SysAdmins, DevOps och till och med utvecklare. Dess mål är att automatisera långvariga och repetitiva uppgifter. Den stora fördelen med ClusterControl är att det är ett moget databashanteringsverktyg och har omfattande funktioner som är mycket kraftfulla för att hantera dina databasservrar. Den tillämpar också de mest uppdaterade, branschstandard bästa praxis för att hantera dina databaser. Vi lyssnar på våra kunders krav, sedan implementerar vi kapacitet för att möta dem.

Några av de mest funktionsrika ClusterControl-automationsfunktionerna som du kan dra nytta av är:

  • Distribution av dina databasservrar. Välj leverantör, ange rätt version, bestäm vilken typ av kluster, ange serverns värdnamn/IP såsom användarnamn, lösenord, etc.

  • Import av befintliga servrar till ClusterControl

  • Implementering i molnet

  • Databashälsoövervakning och rapportering

  • Varningar och aviseringar

  • Säkerhetskopiera och återställa

  • Backupverifiering

  • Automatisk övergång, byte

  • Inställning med hög tillgänglighet

  • Befordra en slav eller degradera en herre

  • Lägg till ny/befintlig replik till ditt kluster

  • Utöka ytterligare ett kluster som slav till ett annat kluster (perfekt för geografiska inställningar för din katastrofåterställning)

  • Nod- och klusteråterställning

  • LDAP-integrering

  • Tredjepartsaviseringar

  • Isättning av någon av en omfattande lista med lastbalanserare  (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Isättning av agentbaserad övervakning med Prometheus-exportörer

  • Frågeanalys

  • Säkerhetsjusteringar

  • Automatisk justering för OS-kärna och databasparametrar

Utöver  alla dessa har ClusterControl också inbyggda rådgivare som gör det möjligt för DBA:er eller DevOps att skapa sina egna skript och integreras i ClusterControl Performance Advisors.

Sammanfattning

Databasautomatisering hjälper till att snabba upp komplexa men repetitiva uppgifter. Det hjälper DBA:er att snabbt komma vidare med olika uppgifter och förbättra sina färdigheter beroende på omfattningen av arbetet. Databasautomatisering frigör DBA:er för att vara mer innovativa samtidigt som de hanterar databasen bekvämt. Databasautomatisering ersätter inte DBA:s roll. Det kommer alltid att finnas ett behov av skickliga och smarta personer för att hantera dina databaser, speciellt när en katastrof inträffar. Lita alltid på de verktyg som dina DBA:er rekommenderar, samtidigt som du litar på deras DBA:s färdigheter för att hantera hälsan och livet för dina databaser.


  1. Push och ställ in operationer i samma MongoDB-uppdatering

  2. Lagra kapslade strukturer med mgo

  3. Tips för att uppgradera Percona Server för MongoDB

  4. Hur kan jag bläddra i eller fråga efter live MongoDB-data?