Mysql
 sql >> Database >  >> RDS >> Mysql

Automazione della distribuzione del database MySQL

L'automazione è in voga in questi giorni. La tecnologia si evolve rapidamente e sempre più persone contribuiscono alle piattaforme software di automazione di terze parti esistenti e disponibili. Essendo la stagione delle implementazioni frenetiche, l'automazione è ora necessaria e considerata de facto; non puoi sbarazzarti di automatizzare le cose ritenute necessarie. Queste necessità sono importanti per portare a termine le cose rapidamente ed eliminare le attività ridondanti. Una volta che questo è presente, le organizzazioni e le aziende possono concentrarsi sugli aspetti logici del business che lo rendono più interessante per la crescita. Questo blog tratta una breve panoramica degli strumenti e dei punti di considerazione per l'automazione del database, seguita da un argomento su come utilizzare ClusterControl per l'automazione del database.

Tecnologie per l'automazione della distribuzione di database

Strumenti sofisticati per Infrastructure as Code (IaC) come Puppet, Chef, Ansible, SaltStack e Terraform sono solitamente le tecnologie principali tra cui scegliere. Questi strumenti aiutano i DBA con attività facilmente replicabili, come la distribuzione di un MySQL. L'automazione dell'implementazione di MySQL consente di risparmiare molto tempo, soprattutto se si dispone di piattaforme estese per supportare e seguire i passaggi dei cicli di ingegneria del software da implementare per i propri ambienti di controllo qualità, staging o sviluppo.

L'uso dell'automazione rende queste cose più veloci e facili da gestire quando è necessario.

Scelta del software di automazione

In questo blog, proviamo a utilizzare Ansible. Come affermato in precedenza, l'utilizzo di software di terze parti rende più semplice e veloce fornire l'automazione soprattutto per la distribuzione del cluster MySQL. Ora utilizzeremo i moduli esistenti, in particolare i ruoli Ansible disponibili. Come affermato nel nostro blog precedente, possiamo utilizzare Ansible Galaxy (repository per raccolte e ruoli ansible).

Prima di ciò, è necessario dichiarare l'host che sarà interessato dalla distribuzione. Ad esempio, in questo blog ho quanto segue:

$ cat /etc/hosts
192.168.30.40 debnode4
192.168.30.50 debnode5

Quindi nel mio file /etc/ansible/hosts,

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

debnode4
debnode5

Quindi, crea il file main.yml proprio come di seguito,

[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

Dato che sto usando Ubuntu 16.04 per questa semplice distribuzione MySQL usando Ansible per la mia automazione, finisco per avere questo,

[email protected]:~/deploy-mysql# cat vars/main.yml
---
# vars file for deploy-mysql
mysql_root_password: "[email protected]"
mysql_python_package_debian: python-mysqldb

Ora, testare la distribuzione di MySQL mostra,

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

Automatizzare, quindi formulare

Come abbiamo mostrato sopra, è meglio automatizzare e sfruttare quelli esistenti. In questo blog, ho scelto Ansible perché è più facile sfruttare i moduli esistenti come i ruoli in questo esempio e solo pochi passaggi per distribuire un server MySQL.

Certo, non è così semplice. Esistono ruoli esistenti, come questo, che supportano la replica e più variabili da ottimizzare. Qualunque cosa possano fare i moduli esistenti, approfittane piuttosto che reinventarne uno tuo. Puoi semplicemente utilizzare quelli esistenti, quindi modificarli in base alle tue esigenze.

ClusterControl per l'automazione

ClusterControl automatizza la distribuzione di MySQL in modo efficiente. Invece di crearne uno, ClusterControl è scaricabile gratuitamente e puoi usarlo per distribuire il tuo MySQL quante volte vuoi. È possibile utilizzare il software per impostare una replica scrittore-lettore o un'impostazione di replica scrittore-scrittore. Guarda lo screenshot qui sotto:

Devi solo specificare l'host di origine/l'indirizzo IP del MySQL desiderato server.

L'automazione della distribuzione di ClusterControl esegue un controllo preliminare per determinare se il server è pronto per gestire il lavoro da distribuire. Ciò implica l'accessibilità, la disponibilità di archiviazione e la capacità dell'hardware. I controlli sono allineati alle variabili da ottimizzare una volta che è pronto per eseguire il lavoro. Guarda lo screenshot qui sotto:

In base al registro delle attività lavorative, vedrai che regola il variabili o parametri nei sistemi Linux che supportiamo. Se guardi anche lo screenshot di esempio che abbiamo di seguito, controlla la disponibilità di memoria e disco e si prepara per l'implementazione di MySQL. Pertanto, installa i pacchetti richiesti, non solo per il normale funzionamento di MySQL, ma anche per ClusterControl per monitorare e registrare il server e i suoi servizi che raccogliamo per il monitoraggio.

Strumenti per sviluppatori ClusterControl

ClusterControl ha la sua funzione in cui puoi creare i tuoi script specifici per gli advisor. Quanto è importante per l'automazione della distribuzione del database MySQL è che, una volta che il database è stato registrato e distribuito, è possibile migliorare ulteriormente o creare i propri Advisor. Ad esempio, dai un'occhiata al nostro blog precedente intitolato Utilizzo di ClusterControl Advisor per creare controlli per SELinux e Meltdown/Spectre:Part One. Dopo la distribuzione, puoi scrivere i tuoi primi Advisor e quindi controllare regolarmente la presenza di exploit. Non solo, puoi anche controllare parametri personalizzati unici per le tue esigenze.

Strumenti CLI ClusterControl s9s

ClusterControl ha strumenti CLI che chiamiamo strumenti CLI s9s che possono essere trovati qui nel nostro repository github. Gli strumenti CLI di s9s ti consentono di distribuire MySQL con un solo comando. Ad esempio,

$ 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

Il comando precedente consente di distribuire un cluster di replica MySQL fornito dei seguenti indirizzi IP con i relativi argomenti, sia esso un master o uno slave.

Questo strumento fornisce funzionalità più potenti ed efficienti oltre alla semplice distribuzione automatica del tuo database preferito che supportiamo, come MySQL. Consulta la nostra documentazione per ClusterControl per saperne di più sugli strumenti CLI di s9s