sql >> Database >  >> RDS >> Mysql

Automatisering van MySQL-databaseimplementatie

Automatisering is tegenwoordig in zwang. Technologie evolueert snel en meer mensen dragen bij aan bestaande beschikbare automatiseringssoftwareplatforms van derden. In het seizoen van snelle implementaties is automatisering nu noodzakelijk en wordt het als de facto beschouwd; je kunt niet van het automatiseren van noodzakelijk geachte zaken afkomen. Deze benodigdheden zijn belangrijk om dingen snel gedaan te krijgen en overbodige taken te elimineren. Als dit eenmaal aanwezig is, kunnen organisaties en bedrijven zich richten op de logische zakelijke dingen die het interessanter maken voor groei. Deze blog behandelt een kort overzicht van tools en aandachtspunten voor database-automatisering, gevolgd door een onderwerp over het gebruik van ClusterControl voor database-automatisering.

Technologieën voor automatisering van database-implementatie

Geavanceerde tools voor Infrastructure as Code (IaC), zoals Puppet, Chef, Ansible, SaltStack en Terraform zijn meestal de belangrijkste technologieën om uit te kiezen. Deze tools helpen DBA's met taken die gemakkelijk kunnen worden gerepliceerd, zoals het implementeren van een MySQL. Het automatiseren van uw MySQL-implementatie bespaart u veel tijd, vooral als u uitgebreide platforms hebt om de stappen van de software-engineeringcycli te ondersteunen en te volgen die moeten worden geïmplementeerd voor uw QA-, staging- of ontwikkelomgevingen.

Het gebruik van automatisering maakt deze zaken sneller en gemakkelijker te beheren wanneer dat nodig is.

Uw automatiseringssoftware kiezen

Laten we in deze blog proberen Ansible te gebruiken. Zoals eerder vermeld, maakt het gebruik van software van derden het gemakkelijker en sneller om automatisering te bieden, vooral voor het implementeren van uw MySQL-cluster. Nu gebruiken we bestaande modules, met name Ansible-rollen die beschikbaar zijn. Zoals vermeld in onze vorige blog, kunnen we Ansible Galaxy gebruiken (repository voor ansible collecties en rollen).

Daarvoor moet je de host aangeven die door de implementatie wordt beïnvloed. In deze blog heb ik bijvoorbeeld het volgende:

$ cat /etc/hosts
192.168.30.40 debnode4
192.168.30.50 debnode5

Vervolgens in mijn /etc/ansible/hosts-bestand,

[email protected]:~# tail -n2 /etc/ansible/hosts

debnode4
debnode5

Maak vervolgens het bestand main.yml zoals hieronder,

[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

Aangezien ik Ubuntu 16.04 gebruik voor deze eenvoudige MySQL-implementatie met Ansible voor mijn automatisering, krijg ik dit,

[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 blijkt uit het testen van de MySQL-implementatie,

[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!

Automatiseer en formuleer dan

Zoals we hierboven hebben laten zien, is het beter om te automatiseren en te profiteren van bestaande. In deze blog heb ik voor Ansible gekozen omdat het gemakkelijker is om te profiteren van bestaande modules zoals rollen in dit voorbeeld en slechts een paar stappen om een ​​MySQL-server te implementeren.

Natuurlijk, zo eenvoudig is het niet. Er zijn bestaande rollen, zoals deze, die replicatie ondersteunen en meer variabelen om af te stemmen. Wat de bestaande modules ook kunnen doen, profiteer ervan in plaats van uw eigen modules opnieuw uit te vinden. Je kunt gewoon de bestaande gebruiken en ze vervolgens aanpassen aan je behoeften.

ClusterControl voor automatisering

ClusterControl automatiseert vakkundig de implementatie van MySQL. In plaats van uw eigen te maken, is ClusterControl gratis te downloaden en kunt u het gebruiken om uw MySQL te implementeren hoe vaak u wilt. U kunt de software gebruiken om een ​​schrijver-lezer-replicatie of een schrijver-schrijver-replicatie in te stellen. Bekijk de onderstaande schermafbeelding:

Je hoeft alleen de bronhost/IP-adres van je gewenste MySQL op te geven servers.

ClusterControl-implementatieautomatisering voert een pre-check uit om te bepalen of de server klaar is om de taak te beheren die moet worden geïmplementeerd. Het gaat om toegankelijkheid, opslagbeschikbaarheid en hardwarecapaciteit. De controles worden afgestemd op de variabelen die moeten worden afgesteld zodra het klaar is om de taak uit te voeren. Bekijk de onderstaande schermafbeelding:

Op basis van het taakactiviteitenlogboek ziet u dat het de variabelen of parameters in de Linux-systemen die we ondersteunen. Als u ook naar het voorbeeldscherm kijkt dat we hieronder hebben, controleert het de geheugen- en schijfbeschikbaarheid en bereidt het zich voor op de MySQL-implementatie. Het installeert dus de vereiste pakketten, niet alleen om MySQL normaal te laten werken, maar ook voor ClusterControl om de server en zijn services die we verzamelen voor monitoring te bewaken en te registreren.

ClusterControl-ontwikkelaarstools

ClusterControl heeft een functie waarmee u uw eigen scripts kunt maken, speciaal voor adviseurs. Hoe belangrijk dit is voor de automatisering van de implementatie van uw MySQL-database, is dat u, zodra de database is geregistreerd en geïmplementeerd, uw eigen adviseurs verder kunt verbeteren of maken. Bekijk bijvoorbeeld onze vorige blog met de titel ClusterControl Advisor gebruiken om controles te maken voor SELinux en Meltdown/Spectre:Part One. Na de implementatie kunt u uw eerste adviseurs schrijven en vervolgens regelmatig controleren op exploits. Niet alleen dat, u kunt ook aangepaste parameters controleren die uniek zijn voor uw behoeften.

ClusterControl s9s CLI-tools

ClusterControl heeft CLI-tools die we s9s CLI-tools noemen, die je hier in onze github-repository kunt vinden. Met de s9s CLI-tools kunt u MySQL met slechts één opdracht implementeren. Bijvoorbeeld,

$ 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

Met de bovenstaande opdracht kunt u een MySQL-replicatiecluster implementeren met de volgende IP-adressen van de argumenten, of het nu een master of een slave is.

Deze tool biedt krachtigere en efficiëntere functies, afgezien van alleen automatische implementatie van uw favoriete database die we ondersteunen, zoals MySQL. Bekijk onze documentatie voor ClusterControl voor meer informatie over de s9s CLI-tools


  1. Oplossing voor:Store update-, insert- of delete-instructie beïnvloedde een onverwacht aantal rijen (0)

  2. De standaardtaal van een gebruiker vinden in SQL Server (T-SQL)

  3. ResultSet#getDate() semantiek

  4. Underscore werkt niet in orakelachtige clausule