La diffusione di MySQL, congiuntamente alle vicissitudini aziendali che l'hanno portato a diventare parte dell'universo Oracle, hanno stimolato la nascita di fork e derivati di questo potente DBMS. Dopo avere brevemente presentato MariaDB, l'altro fork maggiormente diffuso è Percona Server, che vedremo in questa lezione.
Percona è un'azienda californiana che si è specializzata nell'offerta di prodotti legati a tecnologie di database particolarmente diffuse: ruota da sempre attorno a MySQL, ma ha anche sviluppato, ad esempio, un server per l'interfacciamento con MongoDB, il DBMS NoSQL più usato al mondo.
Percona Server nasce come sostituto di MySQL, più rapido da installare ed in grado di lavorare su dati preesistenti senza necessità di adattamento, offrendo al tempo stesso migliori performance nonchè maggiori stabilità e sicurezza.
Una delle peculiarità più note di Percona è XtraDB, lo storage engine che è, nell'essenza, InnoDB (storage engine di default di MySQL) ma migliorato nelle prestazioni.
Installare Percona Server
Percona Server è disponibile per tutte le principali distribuzioni Linux. Spesso è incluso nei repository ufficiali dei principali sistemi Linux, pertanto, seguendo questa via, se ne può ottenere una versione funzionante in maniera piuttosto agevole. A titolo dimostrativo, prendiamo qui in esame l'installazione di Percona Server su una macchina Ubuntu 16.04.
Con il comando wget
, eseguiamo il download del pacchetto .deb:
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
Ottenuto il file, possiamo installarlo così:
dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
Con lsbrelease
non faremo altro che ottenere il nome della distribuzione Ubuntu che usiamo - xenial
, nel nostro caso - e ciò permetterà di comporre l'indirizzo corretto per il pacchetto da scaricare. Fatto ciò, troveremo il risultato nella cartella /etc/apt/sources.list.d/, consistente nel file percona-release.list. Richiedendo l'aggiornamento della lista di pacchetti a nostra disposizione, troveremo tutte le versioni più aggiornate di Percona Server:
sudo apt-get update
A questo punto, sarà sufficiente installare la più nuova:
sudo apt-get install percona-server-server-5.7
Durante l'installazione verrà chiesta una password per l'account di amministratore e, una volta inserita e confermata questa,
non sarà necessario immettere altri dati fino alla fine del processo.
In alternativa a questo percorso, si potrà scaricare l'insieme dei pacchetti .deb che costituiscono la release, tramite la pagina dedicata ai Downloads. In questo caso, si potrà scegliere tra l'acquisizione di un grosso archivio .tar (circa 270 MB), composto da tutti i pacchetti, o il download singolo di quelli che ci interessano. I comandi da utilizzare a questo punto saranno al massimo due:
- estrazione dei pacchetti .deb dall'archivio .tar con
tar -xvf nome_archivio.tar
, ma solo se si è optato per il download completo; - installazione di tutti i pacchetti ottenuti (digiteremo il comando dalla cartella che li contiene):
sudo dpkg -i *.deb
Primo approccio
Il server viene gestito come servizio di sistema e, nonostante sulla nostra macchina non sia installato MySQL, possiamo invocare il suo client mysql utilizzando la parola chiave scelta durante l'installazione di Percona:
mysql -u root -p
Oosservando il risultato nel terminale, notiamo che il server che ci ha risposto è proprio quel Percona Server che abbiamo installato poco prima:
Possiamo verificare lo stato del servizio MySQL come segue:
sudo service mysql status
Possiamo quindi utilizzare i database MySQL, nel modo in cui siamo abituati, sfruttando però le innovazioni di Percona Server che, in buona parte, saranno per noi trasparenti. Creando una tabella, ad esempio, ci verrà assegnato lo storage engine di default che, sebbene sia InnoDB, sarà in realtà gestito come XtraDB. Per avere una rapida dimostrazione di ciò, possiamo interrogare il server con il comando (stile MySQL) SHOW ENGINES
che fornirà le pricipali informazioni sugli storage engine a nostra disposizione. Questo il
risultato:
L'impostazione di default, come si vede, l'implementazione di InnoDB fornita da Percona, ovvero XtraDB (come si evince dal commento).
Questo è il primo punto di forza di Percona: sfruttare i suoi potenziamenti mantenendo la "retrocompatibilità" con MySQL.
Cluster e monitoraggio
Percona spicca per le utilità di manutenzione e monitoraggio che mette a disposizione. Di notevole importanza è
Percona XtraBackup, con cui si può eseguire la copia "a caldo" del database. In pratica, sarà possibile eseguire non un salvataggio dei dati in stile mysqldump, bensì una copia dei file contenenti il database mentre questo è in esecuzione.
Ciò sarà pienamente possibile per tabelle InnoDB e XtraDB, ma anche per quelle gestite con MyISAM o altri storage engine seppure, in questi ultimi casi, con brevi interruzioni delle operazioni di scrittura. Lo strumento è in grado di lavorare su database Percona, MySQL e MariaDB, offrendo sicurezza e alte performance grazie, rispettivamente, a crittografia e compressione.
Percona XtraBackup Cluster, infine, è una soluzione basata su Galera, interessante per fornire alta disponibilità e scalabilità, che permette di ridondare un database su più nodi (almeno tre nella configurazione raccomandata). Ognuno di questi nodi sarà in possesso di una copia integrale del database, caratteristica cruciale del sistema: ciò, infatti, garantisce l'indipendenza di ogni nodo nel fornire risposte, nonchè l'assenza di un coordinamento centrale (che però comporta alcuni sovraccarichi di lavoro nel caso dell'ingresso di un nuovo nodo nel cluster). La soluzione offre il meglio di sè per la parallelizzazione delle query, mentre le operazioni di scrittura richiedono necessariamente di essere replicate su ogni nodo.