MySQL: Database Open Source per le Tue App
Assistenza e Manutenzione MySQL: scopri come sfruttare al meglio il più popolare sistema di gestione di database relazionali disponibile.

In questo articolo
Cos'è MySQL e a cosa serve

MySQL è il sistema di gestione di database relazionali più popolare ed utilizzato al mondo basato (come si può facilmente intuire) sul linguaggio SQL (Structured Query Language).
Si tratta di una soluzione grazie alla quale è possibile archiviare i dati e gestirli in modo efficace, molto apprezzata grazie al fatto di essere open source e compatibile con tutti i principali sistemi operativi.
Per capire bene il funzionamento di MySQL è necessario identificare le caratteristiche di un database, che si propone come una raccolta di dati strutturata organizzata in modo che questi dati possano essere recuperati e usati con facilità.
Nel caso di un sito Wordpress, i dati in questione non consistono solo nei contenuti testuali degli articoli, ma anche nelle configurazioni di impostazioni, nei dati a caricamento automatico, e così via.
La storia di MySQL

MySQL è un’applicazione che è stata rilasciata per la prima volta nella metà degli anni ’90 e che dal 2009 fa parte della galassia di Oracle Corporation.
Attualmente le piattaforme LAMP (di cui abbiamo parlato in questo articolo) e WAMP (di cui parleremo nei prossimi giorni) incorporano MySQL per l'implementazione di server per gestire siti web dinamici.
Inoltre, molti dei CMS di successo come WordPress, Joomla e Drupal nascono proprio con il supporto predefinito a MySQL; in ogni caso parliamo di un software open source e, di conseguenza, può essere usato e modificato senza vincoli di alcun genere.
L’approccio che viene adoperato da questa applicazione per l’archiviazione delle informazioni in una banca dati è noto come "database relazionale".
In pratica, i dati sono distinti in diverse aree di archiviazione, che prendono il nome di tabelle, e non raccolti in una sola unità di archiviazione di grandi dimensioni.
Se si decidesse di raggruppare una mole notevole di dati in un contenitore solo, ci si ritroverebbe a fare i conti con diversi potenziali inconvenienti: per esempio il rischio di duplicazione dei dati, ma anche la mancanza di organizzazione.
Ecco che un database relazionale prova a risolvere tali problemi!
Perché si parla di database relazionale nel caso di MySQL
Il database viene definito "relazionale" perché si fa riferimento ad una chiave grazie a cui i dati delle tabelle possono essere collegati affinché le informazioni possano essere (se necessario) manipolate e combinate in varie tabelle.
Una chiave può essere paragonata a un ID numerico, nel senso che è un’entità unica, non ripetibile.
I siti Wordpress si basano su questo modello relazionale, ma MySQL si fonda anche su un modello client server: per ottenere i dati dei quali ha bisogno, il client trasmette al server del database una richiesta ad hoc.
Php, Perl e Phyton
Cosa sono e come funzionano Php, Perl e Phyton? Ne abbiamo parlato in questo articolo...
Comandi di base per l'amministrazione
Al di là della teoria, il lavoro quotidiano con MySQL si riduce a una manciata di comandi usati di continuo. Per collegarsi al server da terminale:
mysql -u root -p
Una volta collegati, questi sono i comandi più utili per esplorare cosa c'è sul server:
SHOW DATABASES;
USE nome_database;
SHOW TABLES;
DESCRIBE nome_tabella;
Creare un nuovo database insieme a un utente dedicato — invece di far collegare ogni applicazione come root — è buona prassi:
CREATE DATABASE app_produzione;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'password_sicura';
GRANT ALL PRIVILEGES ON app_produzione.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
Limitare ogni account al solo database (e ai soli privilegi) di cui ha davvero bisogno è uno dei modi più semplici per contenere il danno se una singola applicazione dovesse essere compromessa.
Backup e ripristino con mysqldump
mysqldump è lo strumento standard per il backup logico di un database MySQL. Per fare il backup di un singolo database:
mysqldump -u root -p nome_database > backup.sql
Per il backup di tutti i database presenti sull'istanza in un unico file:
mysqldump -u root -p --all-databases > full_backup.sql
Il ripristino è lo stesso comando al contrario:
mysql -u root -p nome_database < backup.sql
Per qualsiasi database che non sia piccolo e a basso tasso di scrittura, questo export va pianificato (tipicamente via cron) e affiancato al backup regolare del resto del server: un dump .sql che risiede sullo stesso disco del database che dovrebbe proteggere non è un backup, è solo una copia.
Gli errori che si incontrano davvero
Alcuni errori ricorrono abbastanza spesso in ambienti reali da valere la pena conoscerli in anticipo:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket— il servizio MySQL/MariaDB non è attivo, oppure l'applicazione punta al percorso socket sbagliato. Prima di toccare la configurazione, controlla lo stato del servizio.ERROR 1045 (28000): Access denied for user— utente, password o host sbagliati nella grant (un utente creato come'app_user'@'localhost'non potrà collegarsi da un host diverso).- "Too many connections" — è stato raggiunto il limite
max_connectionsimpostato inmy.cnf, solitamente perché un'applicazione non chiude correttamente le connessioni, non perché il traffico sia davvero cresciuto. Alzare il limite è una toppa temporanea; trovare la connessione che non si chiude è la soluzione vera. - Corruzione InnoDB dopo uno spegnimento non pulito — è il caso che vediamo più spesso sui server dei clienti, e raramente è un bug di MySQL: segue quasi sempre un blackout o un guasto RAID che ha tolto corrente ai dischi a metà scrittura. Al riavvio, InnoDB normalmente riapplica in automatico il proprio redo log; quando invece è il tablespace stesso a essere danneggiato e il recovery automatico fallisce, la soluzione pratica è avviare l'istanza con
innodb_force_recoveryimpostato a un valore crescente (da 1 a 6) inmy.cnf, esportare i dati conmysqldumpin questa modalità degradata e reimportarli su un'istanza nuova. È anche l'argomento più concreto per un gruppo di continuità (UPS) su qualsiasi server che ospita un database, e per backup che non risiedono sullo stesso array dei dati. - Disco pieno (
Error writing file ... Errcode: 28 - No space left on device) — i log binari e gli slow query log lasciati senza rotazione sono una causa frequente; prima di dare per scontato che siano i dati stessi a essere cresciuti, controlla/var/log/mysqle la cartella dei binlog.
Qualche nota sul tuning
Su un server dedicato a MySQL, innodb_buffer_pool_size — la quantità di RAM che InnoDB usa per mettere in cache dati e indici — è di solito il singolo parametro con l'impatto maggiore sulle prestazioni, e viene generalmente impostato a circa il 60-70% della RAM disponibile. Attivare lo slow query log (slow_query_log = 1, con una soglia long_query_time in secondi) è il modo più rapido per scoprire quali query specifiche stanno effettivamente rallentando un'applicazione, invece di procedere per tentativi.
MySQL o MariaDB: quale scegliere
MariaDB è un fork di MySQL creato nel 2009 da parte del team di sviluppo originale di MySQL, subito dopo l'acquisizione di MySQL da parte di Oracle, e resta un sostituto compatibile nella grande maggioranza dei casi: stessi comandi del client mysql, stesso dialetto SQL, stesso formato dei file InnoDB. Nella pratica, la maggior parte delle distribuzioni Linux attuali (Debian, Ubuntu) installa MariaDB di default sotto i nomi di pacchetto e comando mysql-*. TN Solutions lavora con entrambi i motori; la scelta dipende di solito da cosa certifica ufficialmente un determinato CMS o applicativo (WordPress e la maggior parte delle applicazioni PHP funzionano bene con entrambi) e da quale dei due è già lo standard nell'infrastruttura esistente del cliente.
Assistenza supporto e manutenzione Mysql

La soluzione a portata di click
Sei in procinto di installare MySQL o sei alle prese con un problema di altro genere ed hai bisogno di una assistenza informatica? Che tu sia un privato o a capo di una azienda, contattaci senza impegno!
T&N Solutions offre soluzioni su misura per qualsiasi tipo di esigenza o consulenza ti tipo tecnico ed informatico, che siano in ambito software, hardware, ma anche per ciò che concerne la sistemistica, i server, e così via.
Domande frequenti
Cos'è MySQL?
È il sistema di gestione di database relazionali open source più popolare al mondo, basato sul linguaggio SQL, compatibile con tutti i principali sistemi operativi e usato per archiviare e gestire i dati in modo efficace.
Perché si dice che MySQL è un database "relazionale"?
Perché i dati sono organizzati in tabelle distinte collegate tra loro tramite chiavi uniche, invece di essere raccolti in un unico contenitore, evitando duplicazioni e mantenendo l'organizzazione delle informazioni.
Quali CMS utilizzano MySQL?
I CMS più diffusi come WordPress, Joomla e Drupal nascono con supporto predefinito a MySQL, così come le piattaforme LAMP e WAMP per la gestione di siti web dinamici.
MySQL funziona secondo un modello client-server?
Sì, per ottenere i dati necessari il client invia una richiesta al server del database, che elabora la richiesta e restituisce le informazioni memorizzate nelle tabelle relazionali.
Partner tecnologici
Vuoi parlarne con un nostro tecnico?
Analizziamo gratuitamente la tua infrastruttura e ti proponiamo la soluzione più adatta.







