sql >> Database >  >> NoSQL >> MongoDB

Aan de slag met databaseautomatisering

Database-automatisering helpt om complexe en tijdrovende taken eenvoudig en snel te maken. De meest voorkomende en gemakkelijk te identificeren taken voor automatisering zijn taken die tijdrovend en toch repetitief zijn. Deze kosten vaak de productiviteit en kunnen van invloed zijn op de bedrijfsfinanciën omdat u de mensen die aan deze taken werken moet betalen. De processen waarin tijd en moeite onnodig worden verbruikt, kunnen echter worden omgezet in virtuele automatisering, waardoor vaak saai, vermoeiend werk wordt vermeden.

Database-automatisering is een gangbare praktijk van databasebeheerders en serverbeheerders, die nu samen beter bekend staan ​​als DevOps. DevOps verwijst ook naar de combinatie van DBA's en serverbeheertaken. Op de ouderwetse manier worden traditionele en veelvoorkomende geautomatiseerde taken geschreven als een reeks SQL-instructies of .sql-bestanden, die servers implementeren en inrichten via scripts, encryptie/decryptie instellen of beveiliging gebruiken voor de omgeving waarin uw automatisering wordt verondersteld rennen. Automatisering is hier geen voorbeeld van een bedrijf dat mensen vervangt door scripts. Het is er als een assistent om dingen op snelheid te brengen en taken sneller af te ronden met minder fouten. Automatisering kan de manier waarop DBA's hun taken uitvoeren of de waarde die ze kunnen leveren aan het hele bedrijf of de organisatie niet vervangen.

Geavanceerde tools voor Infrastructure as Code (IaC) zoals Puppet, Chef, Ansible, SaltStack en Terraform helpen DBA's bij het uitvoeren van taken die gemakkelijk kunnen worden gerepliceerd, zoals back-up en herstel, failover, implementatie van nieuwe clusters, het aanpassen van beveiligingsinstellingen, het afstemmen van de OS-kernel en databaseprestaties en nog veel meer. Met behulp van automatisering hebben veel DBA's ook hun vaardigheden verbeterd of verschoven van het focussen op gegevensdomeinspecifieke taken naar ook hoe te coderen om deze IaC-tools te gebruiken die dingen gemakkelijker maken dan het gebruik van de traditionele aanpak. Er zijn momenteel ook tools die het gemakkelijker maken om uw activa in de cloud te beheren, zoals het beheren van uw bedrijfsgebruikersaccounts, logboeken, het implementeren van instanties of het beheren van uw servers. Tools voor de cloud van de drie grote cloudproviders, waaronder AWS CloudFormation, Azure Resource Manager en Google Cloud Deployment Manager, stellen DBA's of DevOps in staat om de kracht van automatisering te benutten en dingen sneller te maken. Dit maakt niet alleen indruk op uw organisatie of de leidinggevenden van uw bedrijf, maar ook op de klanten die op uw service vertrouwen.

Wat moet er worden geautomatiseerd?

Zoals hierboven vermeld, is database-automatisering niet nieuw voor DBA's, serverbeheerders of zelfs DevOps. Er is geen reden om te twijfelen of te automatiseren. Zoals eerder vermeld, zijn veelvoorkomende gevallen die gemakkelijk kunnen worden geïdentificeerd voor automatisering, taken met een repetitief karakter.

Hieronder sommen we dingen op die axiomatisch zijn vanuit het perspectief van de DBA.

  • Inrichten van uw servers (bijv. VM-instanties starten zoals het gebruik van zwerver, docker starten of uw Kubernetes starten platform) en SSH-toegang instellen of VPN-toegang instellen

  • Implementatie van een nieuw databasecluster

    • Identificeer welk type databaseprovider, het type setup (primair/standby, master-master replicatie, synchroon replicatie)

  • Bestaande databasecluster importeren

  • Bestaande databases implementeren/importeren naar uw huidige databasecluster

  • Auto-failover of omschakeling

  • Automatisch herstel van knooppunten of clusters

  • Replica/slave-promotie of een master degraderen

  • Inzet van load balancers (bijv. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalive)

  • Back-up maken en terugzetten

  • Stel uw databasebewakingsomgeving in (bijv. implementeer agentgebaseerde monitoring zoals Prometheus)

  • Beveiligingsaanpassingen inschakelen

  • Voer automatische optimalisaties en afstemming uit in overeenstemming met het type omgeving

  • Schakel waarschuwingssystemen in voor integraties van andere derden

  • Alerts of alarmen en meldingen genereren

  • Rapporten genereren zoals grafieken

  • Verwerk query-logboeken (trage logs) voor query-analyse

  • Zoekanalyse genereren

  • Database archiveren of opschonen

Er zijn natuurlijk veel gevallen die je zou kunnen automatiseren, maar dit geeft een overzicht van de meest voorkomende taken en het automatiseren ervan staat buiten kijf. Dit zijn de soorten taken die repetitief van aard zijn en de meeste zijn foutgevoelig, vooral wanneer ze snel moeten worden uitgevoerd vanwege tijdgebrek.

Wat zijn dingen die niet geautomatiseerd zouden moeten worden?

In deze gebieden doen uw DBA's of SysAdmins het meeste werk. Automatisering kan de vaardigheden en intelligentie van de DBA niet vervangen als het gaat om dingen die niet kunnen worden geautomatiseerd.

Het is duidelijk dat een DBA vaardig moet zijn, met een diepgaand begrip van:  de database die ze gebruiken en de databases die zullen worden geïmplementeerd; de gegevens die worden verwerkt en opgeslagen; en of de manier waarop ze worden verwerkt veilig is, of dat deze voldoet aan de beveiligingsnormen van het bedrijf. DBA's beoordelen ook en worden meestal beschouwd als DevOps, evenals de automatiseringsarchitect. Zij bepalen wat er moet gebeuren en wat niet. Veelvoorkomende dingen die niet moeten worden geautomatiseerd, zijn de volgende:

 

  • Uw geplande back-ups instellen. Geplande back-ups zijn natuurlijk geautomatiseerd en moeten dienovereenkomstig worden uitgevoerd, maar de geplande datums of benodigde tijdsperiode moeten gebaseerd zijn op de lage piektijden die de server zal uitvoeren. U kunt bijvoorbeeld geen back-up maken als het cluster overdag bezet is. Er zijn ook veelvoorkomende gevallen waarin servers 's nachts nog steeds bezet zijn, afhankelijk van het type applicatie dat u bedient en waar deze zich geografisch bevindt.

  • Auto-failover kan geen nieuwe master promoveren. Dit is een van de belangrijkste gevallen en moet goed worden begrepen. Als u geautomatiseerde scripts heeft die zijn ontworpen voor failover, mag deze niet worden ontworpen om een ​​failover met geweld na te streven in het geval dat deze faalt. U weet misschien nooit wat het grootste probleem is, en als er een storing is, kunnen er transacties zijn die worden hersteld voordat er iets anders moet worden gedaan. Het kan bijvoorbeeld een financiële transactie zijn die is opgeslagen op de mislukte master, en u wilde met geweld een slave promoten, maar de kandidaat-slave had de laatste transactie niet gerepliceerd. In dat geval zou je kunnen eindigen met beschadigde gegevens.

  • Gegevensherstel. Wanneer u gegevenscorruptie tegenkomt of een cluster er niet in slaagt te herstellen van uw automatische node-/serverherstel, moet u natuurlijk de primaire oorzaak onderzoeken. U moet dit documenteren voor uw RCA (Root Cause Analysis) om dit in de toekomst te voorkomen. Er zijn echter gevallen waarin de fout een bug is van de databasesoftware die u gebruikt, of het kan een VM-corruptie zijn.

  • Gegevensafwijking of gegevensinconsistentie. Dit is zeker geen ideale situatie voor automatisering. U wilt niet dat uw automaat uw gegevens generaliseert of stereotypeert naar een praktijk die dit concept zou toepassen:"als gegevens beschadigd zijn, laten we ze automatisch repareren". Het is zeker geen goede gewoonte. Er zijn veel gevallen die eerst moeten worden begrepen en onderzocht voordat u een beslissing kunt nemen. In MySQL is er bijvoorbeeld een Percona-tool genaamd pt-table-checksum, dan pt-table-sync waarvoor beide correlatief zijn met elkaar bij het oplossen van inconsistenties in gegevens. U wilt dit zeker niet automatiseren, tenzij u uw gegevens heel goed kent, of uw gegevens niet uitgebreid zijn of de gegevens opnieuw kunnen worden gegenereerd.

  • Kernelafstemming en databaseafstemming. Dit kan natuurlijk worden gezien als tegenstrijdig met wat we hierboven hebben vermeld. Er zijn echter automatisch afstembare variabelen bekend voor specifieke typen omgevingen, zoals geheugen, bufferpool, HugePages of virtuele geheugenparameters. Er zijn echter zeker veel parameters die inzicht, onderzoek, testen en benchmarking nodig hebben voordat u besluit de wijzigingen toe te passen of niet.

Zeker, er zijn veel dingen die je niet moet automatiseren die we niet hebben genoemd. In de databasewereld is er een groot aantal situaties die afhankelijk zijn van het type gegevens en de applicatie die u bedient. Houd daar rekening mee en wees alert op de dingen die kunnen worden geautomatiseerd. Anders kan automatisering tot vernietiging leiden.

Hulpprogramma's voor automatisering

Hier kun je aan de slag met je automatiseringsscripts. Het belangrijkste onderdeel van automatisering is snelheid! Als het op snelheid aankomt, wordt het niet gemeten aan hoe snel een tool in staat is om de taken af ​​te ronden, maar hoe comfortabel de ontwikkelaars of beheerders van de scripts of IaC zijn met de tool. Absoluut, er zijn voor- en nadelen voor deze beschikbare automatiseringstools. Wat belangrijker is, is om de specificaties van deze automatiseringstools te bepalen, omdat er meer te bieden is dan alleen automatisering. Meestal bieden ze configuratiebeheer en implementatiemechanismen.

Automatisering heeft alles te maken met snelheid, dat wil zeggen hoe snel het is in tegenstelling tot het gebruik van een traditionele benadering of het gebruik van uw eigen voorkeurstaalscripts. Natuurlijk kan het gebruik van uw eigen scripts perfect zijn, maar als uw organisatie of bedrijf voor technologische vooruitgang is, dan is het gebruik van tools van derden zoals Ansible, Puppet, Chef, SaltStack of Terraform meer ideaal. Waarom is het meer ideaal? Deze tools van derden zijn ontworpen om lange en langdurige taken uit te voeren en kunnen worden gedaan met een paar regels code.

Terraform staat bijvoorbeeld bekend om zijn draagbaarheidsvoordelen. Stelt u zich eens voor, met Terraform heeft u één tool en één taal voor het beschrijven van de infrastructuur voor Google Cloud, AWS, OpenStack en ELKE andere cloud. Als u overstapt naar een andere provider, hoeft u uw scripts niet aan te passen of opnieuw uit te voeren. Het stelt u ook in staat om een ​​volledige implementatie te hebben, inclusief het beheer van uw Kubernetes-containers. Stel je voor dat je met één tool een heleboel dingen kunt doen.

Als u begint met het automatiseren van uw database, begin dan niet helemaal opnieuw, want het doel van automatisering is snelheid! Nogmaals, snelheid wordt hier niet gemeten in hoe snel het is om de klus te klaren, maar hoe snel het is in vergelijking met een traditionele aanpak of handmatige taken. De snelheid van hoe snel het de taak kan voltooien hangt natuurlijk af van bijvoorbeeld een deel van uw scripts kan lange vertragingen veroorzaken vanwege een heleboel verwerkte gegevens en lange taakuitvoeringen.

Kies altijd op basis van uw vereisten

Vertrouw bij het kiezen van tools niet op hypes, of wat het populairst is waarvan je hebt gehoord. Hoewel de reguliere tools die eerder werden genoemd grotendeels door de gemeenschap worden omarmd, introduceren ze ook complexiteit. Als je bijvoorbeeld Ansible gebruikt, moet je bekend zijn met YAML, terwijl je met Puppet of Chef bekend moet zijn met Ruby en de onderliggende domeinspecifieke taal.

Profiteer van beschikbare Enterprise Tools

Er zijn veel veelbelovende tools voor databaseautomatisering om mee te beginnen. Als u het ongemakkelijk en tijdrovend vindt om DBA's, SysAdmins of DevOps in te huren om uw team uit te breiden, zijn er tools beschikbaar die hulp bieden als het gaat om databasebeheer, back-upbeheer en observeerbaarheid.

Verschillende ClusterControl voor database-automatisering

ClusterControl biedt veel geautomatiseerde taken die de noodzaak voor handmatige benaderingen elimineren. ClusterControl is ontworpen om databasebewerkingen gemakkelijk te maken voor organisaties, bedrijven, DBA's, SysAdmins, DevOps en zelfs ontwikkelaars. Het doel is om langlopende en repetitieve taken te automatiseren. Het grote voordeel van ClusterControl is dat het een volwassen databasebeheertool is en uitgebreide functies heeft die zeer krachtig zijn om uw databaseservers te beheren. Het past ook de meest up-to-date, industriestandaard best practices toe voor het beheer van uw databases. We luisteren naar de eisen van onze klanten en implementeren vervolgens mogelijkheden om aan hen te voldoen.

Enkele van de meest veelzijdige ClusterControl-automatiseringsfunctionaliteit waarvan u kunt profiteren, zijn:

  • Installatie van uw databaseservers. Kies de provider, specificeer de juiste versie, bepaal welk type cluster, specificeer de hostnaam/IP van de server zoals gebruikersnaam, wachtwoord, enz.

  • Importeren van bestaande servers naar ClusterControl

  • Implementatie in de cloud

  • Database gezondheidsmonitoring en rapportage

  • Waarschuwingen en meldingen

  • Back-up maken en terugzetten

  • Back-upverificatie

  • Auto-failover, omschakeling

  • Instelling met hoge beschikbaarheid

  • Een slaaf promoveren of een meester degraderen

  • Nieuwe/bestaande replica aan uw cluster toevoegen

  • Verleng een ander cluster als slaaf van een ander cluster (perfect voor geografische instellingen voor noodherstel)

  • Knooppunt- en clusterherstel

  • LDAP-integratie

  • Waarschuwingsmeldingen van derden

  • Implementatie van een uitgebreide lijst met load balancers  (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalive, garbd )

  • Invoering van op agenten gebaseerde monitoring met behulp van Prometheus-exporteurs

  • Query-analyse

  • Beveiligingsaanpassingen

  • Automatisch afstemmen voor OS-kernel- en databaseparameters

Naast  al deze heeft ClusterControl ook ingebouwde adviseurs waarmee DBA's of DevOps hun eigen scripts kunnen maken en integreren in ClusterControl Performance Advisors.

Samenvatting

Database-automatisering helpt om complexe maar repetitieve taken op snelheid te brengen. Het helpt DBA's om snel vooruit te komen op verschillende taken en hun vaardigheden te verbeteren, afhankelijk van de omvang van het werk. Database-automatisering zorgt ervoor dat DBA's innovatiever kunnen zijn en tegelijkertijd de database comfortabel kunnen beheren. Database-automatisering vervangt niet de rol van de DBA. Er zal altijd behoefte zijn aan bekwame en slimme mensen om uw databases te beheren, vooral wanneer zich een ramp voordoet. Vertrouw altijd op de tools die uw DBA's aanbevelen, terwijl u vertrouwt op hun DBA's-vaardigheden om de gezondheid en levensduur van uw databases te beheren.


  1. mongodb vinden door veldwaarden te vergelijken

  2. DB met de beste tussenvoegsels/sec-prestaties?

  3. Snelle paging met MongoDB

  4. Hoe krijg ik een callback op MongoDB collection.find()