Back it up and do it again
Colonna sonora del post:
Negli ultimi tempi, un po’ a caso e sporadicamente, i server database che sottendono Morpheu5.net e il MorphLog si schiantavano di notte durante il backup automatizzato. Negli ultimi due giorni in particolare mi sono svegliato due volte con entrambi i siti giù a causa dei database morti male.
Storicamente, le applicazioni web a base di PHP hanno preferito MySQL, supportando comunque altre soluzioni. La relativa facilità di gestione di un database MySQL l’ha reso la scelta automatica per moltissimi, incluso me. MySQL è stato nel tempo acquisito da Sun Microsystems e, in seguito, da Oracle che, per chi non lo sa, è uno dei giganti storici dei database. Per questioni di licenze ed altre considerazioni, MySQL è stato forkato in un nuovo progetto, chiamato MariaDB, che intende essere un drop-in replacement per MySQL, mantenendo un altissimo livello di compatibilità col database originale. Per farla breve, da un po’ di anni uso MariaDB con discreta soddisfazione. [1]
Il punto vero non è nemmeno MariaDB ma una cosa chiamata storage engine, cioè la parte del DB che si occupa di immagazzinare dati e renderli disponibili per analisi ed interrogazioni agli altri componenti del sistema. MySQL storicamente ha usato un motore chiamato MyISAM che ha rivelato col tempo una serie di falle di performance e sicurezza. In alternativa, InnoDB garantisce qualche sicurezza in più in termini di corruzione delle tabelle e cose del genere, ed è attualmente il motore predefinito sia in MySQL che in MariaDB. È un po’ più delicato da gestire ma non impossibile, basta fare attenzione, ma ha una discreta propensione a morire malissimo in caso di file corrotti ed altre evenienze spiacevoli. Normalmente, si raccomanda di implementare una certa ridondanza in un database, indipendentemente da tutto, ma nella gran parte dei casi questo non succede perché costa meno ed è più “facile.” A quel punto, quantomeno, si raccomanda di implementare una strategia di backup sensata, che è una cosa accessibile pressappoco a tutti con costi ridotti. Per un VPS multi servizio con risorse limitate come il mio, questa è probabilmente la scelta più sensata.
E infatti sono riuscito a recuperare facilmente il contenuto dei database di Morpheu5.net e MorphLog, che peraltro usavano un altro storage engine, Aria, invece di InnoDB, anche se francamente non ricordo perché ho fatto questa scelta.
Un po’ meno sono riuscito a fare per Matomo, il rimpiazzo open source di Google Analytics che sto usando da qualche tempo, che ha scelto in autonomia di usare InnoDB e infatti, di fronte ad una corruzione di alcuni file – che potrei aver sbadatamente toccato io, oppure no, non sono riuscito a ricostruire cosa sia successo – mi ha detto ciaone e costretto a reinstallare tutto da capo, perdendo oltre un anno di statistiche. Ora, pazienza per le statistiche dei miei siti personali. Un po’ meno pazienza per le statistiche di EduGames, ma tant’è, c’est la vie.
E quindi, dopo aver ripristinato tutto in maniera sensata, e messo Matomo sotto backup come tutti gli altri servizi, mi sono reso conto della quantità di altri servizi che non erano sotto backup.
Insomma, back it up or do it again.
E poi dovrò anche pensare a cosa fare di Morpheu5.net e MorphLog perché stanno perdendo sempre più colpi.
- Uso anche PostgreSQL dove posso e dove ha senso per una serie di motivi lunghi e complicati.[↑]