Automation er på mode i disse dage. Teknologien udvikler sig hurtigt, og flere mennesker bidrager til eksisterende tilgængelige tredjeparts automatiseringssoftwareplatforme. Som sæsonen med hurtige implementeringer er automatisering nu nødvendig og betragtes som de facto; du kan ikke slippe for at automatisere ting, der anses for nødvendige. Disse fornødenheder er vigtige for at få tingene gjort hurtigt og eliminere overflødige opgaver. Når dette er til stede, kan organisationer og virksomheder fokusere på de logiske forretningsmæssige ting, der gør det mere interessant for vækst. Denne blog dækker en kort oversigt over værktøjer og overvejelser for databaseautomatisering efterfulgt af et emne om, hvordan man bruger ClusterControl til databaseautomatisering.
Teknologier til automatisering af databaseimplementering
Sofistikerede værktøjer til Infrastructure as Code (IaC) såsom Puppet, Chef, Ansible, SaltStack og Terraform er normalt de almindelige teknologier at vælge imellem. Disse værktøjer hjælper DBA'er med opgaver, der nemt kan replikeres, såsom at implementere en MySQL. Automatisering af din MySQL-implementering sparer dig for en masse tid, især hvis du har omfattende platforme til at understøtte og følge trinene i softwareudviklingscyklussen, der skal implementeres for dine QA-, iscenesættelses- eller udviklingsmiljøer.
Brug af automatisering gør disse ting hurtigere og nemmere at administrere, når det er nødvendigt.
Valg af din automatiseringssoftware
I denne blog, lad os prøve at bruge Ansible. Som tidligere nævnt gør brug af tredjepartssoftware det nemmere og hurtigere at levere automatisering, især til implementering af din MySQL-klynge. Nu vil vi bruge eksisterende moduler, især Ansible-roller, der er tilgængelige. Som angivet i vores tidligere blog, kan vi bruge Ansible Galaxy (lager til ansible samlinger og roller).
Før det skal du erklære den vært, der vil blive påvirket af implementeringen. For eksempel har jeg i denne blog følgende:
$ cat /etc/hosts
192.168.30.40 debnode4
192.168.30.50 debnode5
Så i min /etc/ansible/hosts-fil,
[email protected]:~# tail -n2 /etc/ansible/hosts
debnode4
debnode5
Opret derefter filen main.yml ligesom nedenfor,
[email protected]:~/deploy-mysql# cat main.yml
---
# tasks file for deploy-mysql
- hosts: all
become: yes
vars_files:
- vars/main.yml
roles:
- role: geerlingguy.mysql
Da jeg bruger Ubuntu 16.04 til denne enkle MySQL-implementering ved hjælp af Ansible til min automatisering, ender jeg med at have dette,
[email protected]:~/deploy-mysql# cat vars/main.yml
---
# vars file for deploy-mysql
mysql_root_password: "[email protected]"
mysql_python_package_debian: python-mysqldb
Nu viser test af MySQL-implementeringen,
[email protected]:~/deploy-mysql# ansible all -a "mysql -Nse 'select concat(\"hello world at \", @@hostname,\"\!\");' " 2>/dev/null
debnode4 | CHANGED | rc=0 >>
hello world at debnode4!
debnode5 | CHANGED | rc=0 >>
hello world at debnode5!
Automatiser, og formulér derefter
Som vi har vist ovenfor, er det bedre at automatisere og drage fordel af eksisterende. I denne blog valgte jeg Ansible, fordi det er nemmere at drage fordel af eksisterende moduler, såsom roller i dette eksempel, og blot nogle få trin til at implementere en MySQL-server.
Selvfølgelig er det ikke så enkelt det er. Der er eksisterende roller, såsom denne, der understøtter replikering og flere variabler at tune. Uanset hvad de eksisterende moduler kan, så drag fordel af det i stedet for at genopfinde dit eget. Du kan bare bruge de eksisterende og derefter ændre dem efter dine behov.
ClusterControl for Automation
ClusterControl automatiserer implementeringen af MySQL dygtigt. I stedet for at oprette din egen, kan ClusterControl gratis downloades, og du kan bruge den til at implementere din MySQL, hvor mange gange du vil. Du kan bruge softwaren til at konfigurere en writer-reader-replikering eller en writer-writer-replikeringsopsætning. Se skærmbilledet nedenfor:
Du skal blot angive kildeværten/IP-adressen for din ønskede MySQL servere.
ClusterControl-implementeringsautomatisering udfører en forhåndskontrol for at afgøre, om serveren er klar til at administrere det job, der skal implementeres. Dette involverer tilgængelighed, lagertilgængelighed og hardwarekapacitet. Kontrollerne er tilpasset de variabler, der skal justeres, når den er klar til at køre jobbet. Se skærmbilledet nedenfor:
Baseret på jobaktivitetsloggen vil du se, at den justerer variabler eller parametre i de Linux-systemer, vi understøtter. Hvis du også ser på eksempelskærmbilledet, vi har nedenfor, tjekker det hukommelsen og diskens tilgængelighed og forbereder MySQL-implementeringen. Den installerer således de nødvendige pakker, ikke kun for at MySQL kan køre normalt, men også for at ClusterControl kan overvåge og registrere serveren og dens tjenester, som vi indsamler til overvågning.
ClusterControl Developer Tools
ClusterControl har sin funktion, hvor du kan oprette dine egne scripts specifikt til rådgivere. Hvor vigtigt er dette for din MySQL-databaseimplementeringsautomatisering er, at når databasen er registreret og implementeret, kan du yderligere forbedre eller oprette dine egne Advisors. Tjek for eksempel vores tidligere blog med titlen Using ClusterControl Advisor til at oprette checks for SELinux og Meltdown/Spectre:Part One. Efter implementeringen kan du skrive dine første rådgivere og derefter tjekke regelmæssigt for udnyttelser. Ikke kun det, men du kan også tjekke tilpassede parametre, der er unikke for dine behov.
ClusterControl s9s CLI-værktøjer
ClusterControl har CLI-værktøjer, som vi kalder s9s CLI-værktøjer, som kan findes her på vores github-lager. s9s CLI-værktøjerne giver dig mulighed for at implementere MySQL med kun én kommando. For eksempel,
$ s9s cluster --create \
--cluster-type=mysqlreplication \ --nodes="192.168.1.117?master;192.168.1.113?slave;192.168.1.115?slave;192.168.1.116?master;192.168.1.118?slave;192.168.1.119?slave;" \
--vendor=oracle \
--db-admin="root" \
--db-admin-passwd="root123" \
--cluster-name=ft_replication_23986 \
--provider-version=5.7 \
--log
Kommandoen ovenfor giver dig mulighed for at implementere en MySQL-replikeringsklynge med følgende IP-adresser med dens argumenter, uanset om det er en master eller en slave.
Dette værktøj giver mere kraftfulde og effektive funktioner bortset fra blot automatisk implementering af din yndlingsdatabase, som vi understøtter, såsom MySQL. Se vores dokumentation for ClusterControl for at lære mere om s9s CLI-værktøjerne