MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come distribuire MariaDB Cluster 10.5 per l'alta disponibilità

 

La distribuzione di MariaDB Cluster 10.5 è stata supportata in ClusterControl dalla versione 1.8.1.

MariaDB 10.5 è dotato di:

  • Più privilegi granulari

  • Miglioramenti delle prestazioni di InnoDB

  • Supporto GTID completo per Galera Cluster

  • Più metadati per replica e log binari

  • Altre istruzioni di sintassi SQL (istruzione RETURNING a INSERT, EXCEPT ALL e INTERSECT ALL, ...)

  • Aggiornamenti dello schema delle prestazioni per corrispondere a MySQL 5.7

  • Il motore di archiviazione S3

Puoi controllare ulteriormente il nostro blog precedente 

Per maggiori dettagli su questa particolare versione, dai un'occhiata alle novità di MariaDB 10.5? Alcune delle modifiche più significative dalla versione 10.4 alla 10.5 includono:

  • Coerenza GTID 

  • Incoerenza del cluster/votazione per errore 

  • operazioni DDL non bloccanti (disponibili solo su versione enterprise)

  • Black box (disponibile solo nella versione enterprise) 

  • Aggiornata la sua libreria Galera wsrep, di cui la 26.4.6 è l'ultima versione

Inizialmente, per questa versione era previsto il supporto per le transazioni XA (non confondere poiché le transazioni XA sono supportate da MariaDB Server ma non su Galera Cluster). Tuttavia, a causa di alcune implicazioni sulle prestazioni, MariaDB Galera Cluster non supporta le transazioni XA.

In questo blog parleremo di come distribuire MariaDB Cluster 10.5 per un'elevata disponibilità.

Cluster MariaDB per alta disponibilità

Il cluster MariaDB è essenzialmente un cluster Galera che utilizza l'implementazione MariaDB come livello di database per interfacciarsi con il motore InnoDB o XtraDB. MariaDB Galera Cluster è un cluster multimaster virtualmente sincrono per MariaDB. È disponibile solo su Linux e supporta i motori di archiviazione XtraDB/InnoDB (sebbene sia disponibile un supporto sperimentale per MyISAM, vedere la variabile di sistema wsrep_replicate_myisam). Quando viene utilizzato Galera Cluster, le letture e le scritture del database possono essere indirizzate a qualsiasi nodo. Qualsiasi singolo nodo può essere perso senza interruzioni nelle operazioni e senza l'utilizzo di complesse procedure di failover.

Con la natura di Galera adattata all'interno di MariaDB Cluster, è una soluzione ad alta disponibilità con replica sincrona, failover e risincronizzazione. Offre i vantaggi di nessuna perdita di dati, nessuno slave lag, scalabilità in lettura e scrittura e alta disponibilità in diversi data center.

Distribuzione del cluster MariaDB 10.5

MariaDB fornisce una configurazione semplice e diretta per l'installazione di MariaDB Cluster 10.5. Il processo manuale può essere noioso, ma con gli script automatici forniti da MariaDB, i repository possono essere impostati in base alla versione del database di destinazione, al tipo di sistema operativo e alla versione del sistema operativo.

Per questo esercizio, ho la seguente configurazione del cluster Galera a 3 nodi con i seguenti indirizzi IP:192.168.40.210, 192.168.40.220, 192.168.40.230.

Imposta il tuo repository

Come accennato in precedenza, MariaDB ha uno script chiamato mariadb_repo_setup ed è facile da usare. È possibile specificare la versione di destinazione del database, il tipo di sistema operativo e la versione del sistema operativo.

Ad esempio, sto installando utilizzando EL 8:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=rhel --os-version=8

o installandolo in Ubuntu Focal Fossa,

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  sudo bash -s -- --mariadb-server-version="mariadb-10.5" --os-type=ubuntu --os-version=focal

Tieni presente che quando usi lo script mariadb_repo_setup, richiede il pacchetto apt-transport-https come dipendenza. Quindi installa questo pacchetto prima di poter sfruttare lo script mariadb_repo_setup.

apt update

apt install apt-transport-https

Ora, esegui il comando sui tuoi tre nodi in base al loro sistema operativo. Ovviamente la versione di MariaDB deve essere la 10.5.

Imposta configurazione MySQL

Il file di configurazione dipende dalle risorse del server, dal tipo di ambiente server e dall'indirizzo IP assegnato. Per questo blog, puoi utilizzare questa configurazione di configurazione MariaDB Cluster/PXC pronta per la produzione che abbiamo utilizzato per distribuire nei nostri database Percona XtraDB Cluster/MariaDB Cluster utilizzando ClusterControl. Le variabili importanti di cui hai bisogno o sono soggette a modifiche sono le seguenti:

  • innodb_buffer_pool_size — Imposta il pool di buffer dal 70% all'80% della RAM disponibile del tuo server

  • wsrep_provider — Percorso della libreria compilata da Galera. Per Enterprise Linux, il percorso deve essere  /usr/lib64/galera-4/libgalera_smm.so. Mentre Debian/Ubuntu è in /usr/lib/galera/libgalera_smm.so.

  • wsrep_node_address — Questo è l'indirizzo IP del nodo

  • wsrep_sst_method — Puoi cambiarlo, ma ti consigliamo di usare mariabackup. I possibili valori che puoi scegliere sono rsync, mysqldump, xtrabackup, xtrabackup-v2, mariabackup.

  • wsrep_cluster_name — Il nome del cluster MariaDB. Deve essere identico a tutti i tuoi nodi in un singolo cluster MariaDB.

  • wsrep_cluster_address — Contiene gli indirizzi dei tuoi nodi all'interno del cluster. Deve essere un IP, un nome host o un FQDN valido.

  • wsrep_node_name — Il nome del tuo nodo. Il nome può essere utilizzato in wsrep_sst_donar come donatore preferito. Tieni presente che più nodi in un cluster possono avere lo stesso nome.

Per eseguire SST, l'utente e la password per le seguenti sezioni [mysqldump], [xtrabackup] e [mysqld] possono cambiare se lo si desidera. Per questo esercizio, manteniamolo semplice e puoi semplicemente lasciare i valori così come sono.

Ora, copia il file di configurazione e posizionalo in /etc/my.cnf. Fallo su tutti e tre i nodi Galera.

Installazione dei pacchetti richiesti

Installa i pacchetti per tutti e tre i nodi Galera. Segui il comando seguente in base all'ambiente del tuo sistema operativo di destinazione.

Per RHEL/Rocky/AlmaLinux:

sudo yum install MariaDB-server MariaDB-client galera-4 MariaDB-backup

Per Debian/Ubuntu:

sudo apt update

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Una volta completata l'installazione, arrestare il processo MariaDB e inizializzare il cluster come nodo singolo. Questo avvierà il tuo Cluster Galera. A questo punto, lo eseguo sul nodo 192.168.40.210.

$ /usr/bin/galera_new_cluster

Crea utente SST/IST

Crea l'utente di backup, che deve essere utilizzato per SST o IST. Eseguire le seguenti istruzioni SQL solo sul primo nodo in cui è stato avviato il cluster. A questo punto, l'ho eseguito nel nodo 192.168.40.210.

CREATE USER [email protected] IDENTIFIED BY 'backuppassword';

GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

A questo punto siamo già impostati e pronti per connettere i nodi rimanenti.

Avvia il server MariaDB

Ora abbiamo già impostato il primo nodo. Siamo pronti per collegare i nodi rimanenti. Semplicemente, avvia il servizio MariaDB. Basta eseguire il comando seguente:

systemctl start mariadb

Esegui il comando per i nodi rimanenti uno alla volta. A questo punto, tutti i nodi sono sincronizzati.

Aggiunta di steroidi per il cluster MariaDB 10.5 per un'elevata disponibilità

Probabilmente, la distribuzione di MariaDB Cluster 10.5 per l'alta disponibilità potrebbe non essere sufficiente per le tue esigenze in una configurazione di produzione. L'aggiunta di più steroidi, come l'installazione di HAProxy insieme a Keepalived per la tua ridondanza, porterà una maggiore disponibilità per il tuo ambiente di database.

La configurazione di HAProxy e Keepalived per ottenere la topologia e l'ambiente desiderati può aggiungere più problemi. Tuttavia, puoi automatizzarlo con ClusterControl. Utilizzando ClusterControl, puoi distribuire il tuo MariaDB Cluster 10.5 e aggiungere altre soluzioni per il bilanciamento del carico, come ProxySQL, MaxScale o garbd. Puoi aggiungere Keepalived al tuo cluster per aggiungere soluzioni di ridondanza e failover automatico in caso di emergenza.

Puoi scaricare una versione di prova gratuita di ClusterControl che ti consentirà di implementare queste soluzioni HA e gestire l'intera operazione del database da un unico pannello di controllo. Illustreremo come distribuire il cluster MariaDB 10.5 con ClusterControl.

Distribuzione del cluster MariaDB 10.5 con ClusterControl

Una volta installato ClusterControl, fai clic sull'icona nell'angolo in alto a destra e vedrai la procedura guidata di distribuzione proprio come di seguito.

Puoi configurarlo facilmente. Segui semplicemente la serie di passaggi in base al flusso dell'interfaccia utente.

Distribuire HAProxy per la gestione del bilanciamento del carico

A questo punto, suppongo che tu abbia il tuo MariaDB Cluster 10.5 tutto configurato. Ora, distribuiamo HAProxy:

In alternativa, puoi andare su Gestisci → Load Balancer → HAProxy.

Quindi selezionare o digitare l'indirizzo in cui installare HAProxy e selezionare i nodi Galera che verranno monitorati da HAProxy. Vedi l'esempio seguente:

Aggiungi almeno due distribuzioni di HAProxy per aggiungere maggiore disponibilità. Ogni volta che uno dei tuoi HAProxy si interrompe, l'applicazione verrà indirizzata all'altro nodo che è ancora disponibile o online. Questo è molto importante, soprattutto quando si gestiscono aggiornamenti di database o sistemi, a parte eventi catastrofici o disastri.

Distribuisci Keepalived

Utilizzerai la stessa procedura sopra per distribuire Keepalived, come mostrato di seguito:

Se hai notato, ho due istanze HAProxy per le quali installerò Keepalived , che deve essere presente in ogni nodo su cui è in esecuzione HAProxy.

Finalizzazione del cluster MariaDB 10.5 con disponibilità elevata

Ora che abbiamo impostato tutto, dovresti avere un ambiente simile a questo:

Conclusione

Questa configurazione per il cluster MariaDB 10.5 offre i vantaggi di ottenere un'elevata disponibilità con diversi nove. HAProxy offre maggiori capacità di bilanciamento del carico con la sua separazione di lettura e scrittura e Keepalived assicura che nel caso in cui uno dei tuoi HAProxy muoia, eseguirà il failover sul successivo nodo disponibile. La tua applicazione si connetterà solo all'indirizzo IP virtuale (che segue il VRRP) e non richiederà ulteriori configurazioni o configurazioni.

Per aggiungere ancora più flessibilità e separazione di lettura/scrittura giocando solo su una porta, potresti sostituire HAProxy con ProxySQL. Raggiungere una configurazione perfetta per un'elevata disponibilità può essere difficile e ognuno ha i suoi svantaggi. Tuttavia, ciò che conta di più è il raggiungimento di tempi di inattività bassi o nulli.

Per ulteriori suggerimenti sulla creazione di una configurazione MariaDB ad alta disponibilità, dai un'occhiata a questo articolo sulla distribuzione della replica MariaDB.

Se stai cercando di rimanere aggiornato sulle tendenze e le migliori pratiche del database, iscriviti alla nostra newsletter e seguici su Twitter e LinkedIn.