- MySQL e WordPress.
- Gli aggiornamenti tecnologici costano tempo o denaro, ma quanto costa non farli?
- La sintesi delle novità introdotte in MySQL 8 rispetto a MYSQL 5.7.
- Conviene passare a MySQL 8.0 se si usa WordPress?
- Migrazione del database da MySQL 5.7 a MySQL 8.0.
- I rischi nel passare a MySQL 8.
1. MySQL e WordPress
Oracle MySQL Community Edition è il database server open-source più diffuso a livello mondiale, la versione più recente è MySQL 8. Oggi l’83% dei siti WordPress usano MySQL Community Edition. Anche se c’è stato un calo (erano oltre il 93% i siti WordPress che utilizzavano MySQL Community Edition nel 2019) rimane il leder incontrastato.
I database sono usati in molte applicazioni, anche WordPress, il più famoso e diffuso strumento per sviluppare siti web ha bisogno di un DBMS. Nel 2011 WordPress era usato da circa il 13% dei siti web, oggi viene usata da circa il 38% dei siti web, e la sua diffusione continua ad aumentare. Quasi sempre i siti WordPress usano MySQL ma le versioni di MySQL possono variare.
Quando sviluppo applicazioni WordPress per i miei clienti utilizzo e aggiorno sempre le ultime versioni di MySQL ma mi rendo conto di essere un’eccezione. Chi ha ragione?
Le statistiche ci dicono che circa il 94% dei siti WordPress usa ancora vecchie versioni di MySQL o di MariaDB. I siti WordPress che usano l’ultima versione di MySQL sono pochi. Infatti, analizzando dal 2019 a Luglio 2023 le statistiche di WordPress.org, ho potuto appurare che:
La versione MySQL 8 con WordPress è ancora poco utilizzata
La versione 8 è l’ultima versione di MySQL, disponibile da aprile 2018. La versione MySQL 8.0 cesserà di essere supportata ad aprile 2026.
Il 7,7% dei siti WordPress gira con la versione del database MySQL 8.0. A giugno 2022 erano il 5,2%, ad agosto del 2021 il 2,2%, a dicembre 2020 la percentuale era l’1,3% e nel 2019 solo lo 0,5%. Quindi, c’è stata finalmente una accelerazione della diffusione di MySQL 8 nei siti che usano WordPress.
MySQL 5.7 con WordPress è incredibilmente ancora in crescita
Oggi il 36,9% dei siti WordPress utilizza la versione MySQL 5.7. A giugno 2022 erano il 33,4% dei siti WordPress utilizzava MySQL 5.7. Quindi, la sua diffusione è in crescita. Infatti, ad agosto 2021 era al 34%, a dicembre 2020 era al 28,9% e a dicembre 2019 solo il 20,1% dei siti WordPress la utilizzavano.
Purtroppo, in molti si fermano alla versione 5.7 anche se la versione 8.0 è nettamente migliore. Questo succede perché, come vedremo, il passaggio dalla versione 5.7 alla 8.0 non è semplice. Inoltre, il supporto alla versione 5.6 è terminato, quindi, molti sono costretti a passare alla 5.7 per ricevere gli aggiornamenti di sicurezza. Tuttavia, l’End of Life della versione MySQL 5.7 è ottobre 2023.
MySQL 5.6 con WordPress sta scomparendo
Oggi solo il 6,1% dei siti WordPress usa ancora MySQL 5.6. A giugno 2022 erano il 15,4% dei siti WordPress che utilizzavano ancora MySQL 5.6, che non è più supportata da febbraio 2021. Ad agosto 2021 erano il 19,9%. Questa versione a gennaio 2019 era la versione più usata, infatti c’erano circa il 36,2% dei siti WordPress che la utilizzavano.
Invece, MySQL 5.5 con WordPress resiste molto bene, oltre ogni logica
La versione MySQL 5.5, anche se non è più supportata da anni, è ancora installata sul 31,6% dei siti WordPress. Quindi, incredibilmente è ancora la seconda versione di database più usata con WordPress, A giugno 2022 era usata dal circa il 37% dei siti WordPress, ed era cresciuta di 2 punti percentuali rispetto a dicembre 2020. La buona notizia per la scurezza di internet e forse anche per il consumo di elettricità è che finalmente sta iniziando a calare.
MySQL 5.1 e 5.0 con WordPress
Ormai solo l’0,4% dei siti WordPress usa ancora le vecchissime versioni MySQL 5.1 o 5.0. A dicembre 2019 erano il 3,6%.
MariaDB con WordPress rimane marginale
MariaDB rimane poco utilizzata con WordPress, tutte le sue versioni messe insieme sono usate da circa il 17% dei siti WordPress. La versione più usata di MariaDB è la 10.5 e la usano solo il 5,6% dei siti WordPress. La versione 10.6 è ferma al 5%.
Tuttavia, l’utilizzo di MariaDB con WordPress è in crescita. Infatti, nel 2019 solo il 6,6% dei siti WordPress utilizzava una delle versioni di MariaDB. Questa è una buona notizia perché è positivo avere un’alternativa credibile.
Conclusioni
Si potrebbe pensare che, visti questi dati, sia superfluo passare a MySQL 8.0, ma non è così. Invece, questi dati confermano, anno dopo anno, che il futuro di WordPress è legato a MySQL. Quindi, MySQL 8 è, per ora, la scelta, migliore.
2. Gli aggiornamenti tecnologici costano tempo o denaro, ma quanto costa non farli?
I siti web italiani spesso sono tecnicamente arretrati. Non parlo solo di piccoli blog ma anche di grandi siti web.
Molti pensano quasi solo ai contenuti e alla grafica dei siti web. Invece, gli utenti e i motori di ricerca notano le differenze tra un sito tecnicamente avanzato e uno che ha curato principalmente testi e grafica.
Un sito web deve avere un’infrastruttura tecnica di qualità, altrimenti, anche se bello, resta lento e poco affidabile. Di conseguenza, la SEO non può che essere penalizzata da queste carenze. Bastano dei software obsoleti e dei protocolli di comunicazione datati per rovinare il lavoro fatto sul sito. Inoltre, se il sito web non ha un’infrastruttura tecnologica aggiornata, non solo perde visitatori ma aumentano le probabilità che venga hackerato.
Paradossalmente, più un sito web ha successo e più aumentano i danni di un’infrastruttura tecnica datata, insufficiente o mal gestita.
Certo, il mio passaggio a MySQL 8, già nel 2018, è stato forse un po’ prematuro e rischioso. Però, spesso si scopre solo dopo quanto ci sono state utili le innovazioni tecnologiche introdotte.
Ad esempio, per me è stato relativamente facile e sicuro fare l’upgrade a MySQL 8 perché ho una mia soluzione di cloud hosting. Le tecnologie disponibili sul cloud hosting mi permettono di provare facilmente tutte le novità. Infatti, ho la massima libertà e, quando qualcosa va male, posso tornare indietro velocemente. Inoltre, posso ottimizzare meglio WordPress e il LAMP, ottenendo così un ulteriore aumento di performance e affidabilità.
Se mi fossi accontentato starei ancora gestendo i siti web su hosting condivisi lenti, con MySQL 5,6 o 5.5 e con gli snapshot che costano un occhio della testa. Ovviamente, questo sarà un vantaggio anche per i miei clienti che potranno beneficiare dell’hosting con MySQL 8.
3. La sintesi delle novità introdotte in MySQL 8 rispetto a MYSQL 5.7
- MySQL 8.0 dovrebbe essere fino a due volte più veloce di MySQL 5.7.
- Affidabilità dei comandi DDL. Con le Atomic DDL gli statement sono diventati atomici e a prova di crash, questo permette alle transazioni fatte con le DDL di essere più affidabili.
- Offre una maggiore facilità ed efficacia nel difendersi dagli attacchi informatici: miglioramento dell’OpenSSL, nuova autenticazione di default, ecc.
- Supporto nettamente migliore per il formato JSON, un formato NoSQL, con una ventina di nuove funzioni SQL.
- Supporto per i database NoSQL, che permettono maggiore flessibilità quando si devono memorizzare dei dati senza rispettare le regole dei database relazionali. Ad esempio, sfruttando il nuovo X Protocol, si può usare facilmente MySQL 8.0 come archivio di documenti senza dover usare il DBMS non relazione MongoDB.
- Il set di caratteri di default è ora utf8mb4.
- Facilita l’utilizzo dei database MySQL con i GIS (Geographic information system).
- Come in parte visto nei punti precedenti, sono state introdotte molte nuove funzionalità utili e che semplificano la vita ai programmatori, riducendo i rischi delle fasi di test.
- Sono state deprecate alcune funzionalità della versione MySQL 5.7.
Tutti i dettagli delle novità di MySQL 8.0 li trovi direttamente sul sito ufficiale.
4. Conviene passare a MySQL 8.0 se si usa WordPress?
Prestazioni
Se il database utilizzato da WordPress è molto grande o se il sito ha molto traffico ci sono sicuramente dei vantaggi in termini di performance nel passare a MySQL 8.
Chi usa MySQL 5.7, e ha già il database con il set di caratteri utf8mb4, avrà un maggiore incremento di performance passando a MySQL 8.0.
Infatti, come si vede dal grafico fatto da Oracle, usando utf8mb4 con MySQL 8.0, a parità di tempo si eseguono molte più operazioni. Quindi, si hanno prestazioni molto migliori rispetto allo stesso database con il set di caratteri utf8mb3.
Le eventuali condizioni che determinano delle performance inferiori del database con set di caratteri utf8mb4, rispetto al formato utf8mb3, sono considerate un bug temporaneo di MySQL 8.0 da risolvere nelle successive versioni. Quindi, anche se utf8mb4 richiede un byte in più rispetto utf8mb3, e quindi occupa più spazio, sarà sempre più veloce.
Tuttavia, per un sito WordPress di piccole dimensioni credo che i vantaggi in termini di performance siano trascurabili. Ci sono altre strategie più efficaci per rendere molto più veloce un sito web.
Anche volendo solo ottimizzare le performance del database, la prima cosa da fare è ripulirlo da tutti i dati inutili che spesso contiene. Utilizzare il più possibile i dati in cache invece di prenderli dal database, ecc.
Sicurezza
Con MySQL 8.0 ci sono dei miglioramenti in termini di sicurezza, però nei siti WordPress la maggior parte degli attacchi arrivano da altre direzioni. Comunque, più è alto il livello di sicurezza meglio è, non si sa mai dove arriveranno i nuovi attacchi.
La maggioranza dei siti WordPress usa vecchie versioni di MySQL, gli attacchi informatici saranno più probabili e facili nel gregge più grande e indifeso. Quindi, passare a MySQL 8.0 aumenta notevolmente il livello di sicurezza del database.
Sviluppi futuri
Visto che la nuova versione introduce molte nuove funzionalità, gli sviluppatori WordPress non tarderanno a sfruttarle. Con MySQL 8 ci saranno sicuramente nuove applicazioni, miglioramenti ulteriori della sicurezza e delle performance dei siti WordPress.
5. Migrazione del database da MySQL 5.7 a MySQL 8.0
Nonostante sia passato a MySQL 8.0 nel lontano luglio 2018, la migrazione da My SQL 5.7 a MySQL 8.0 non è ancora semplice e forse mai lo sarà. La prima cosa da fare è portare il database MySQL alla versione 5.7. Questo per molti sarà già un problema. Prima vanno fatti dei test per trovare eventuali incompatibilità con MySQL 8. Il primo prerequisito è l’utilizzo di InnoDB per il salvataggio dei dati. Qui ci sono le istruzioni dettagliate per fare la migrazione da MySQL 5.7 a MySQL 8.0.
Come ho migrato i siti WordPress su MySQL 8,0 in un nuovo server Linux
Ho preferito fare una nuova istanza Linux su un nuovo server virtuale privato (VPS) partendo da zero. Ho così installando il LAMP: Ubuntu, MySQL Community server 8.0, Apache2 e PHP.
Per ora, MySQL 8 si deve caricare direttamente dall’APT Repository di Oracle MySQL Community Edition. Forse, quando MySQL 8 arriverà nell’APT ufficiale di Ubuntu, l’upgrade sarà più semplice.
Il trasferimento dei database è iniziato esportando, con mysqldump, i database dal server MySQL 5.7. Dopo ho caricato i file che avevo esportato nel nuovo VPS. Alla fine, sempre con mysqldump, ho importato i database in MySQL 8.0.
I miei siti WordPress, da molti anni, funzionato perfettamente con MySQL 8. Anche con l’ultima versione non ho riscontrato nessun problema, infatti da luglio 2023, utilizzo MySQL 8.0.34.
Insieme alla migrazione da MySQL 5.7 a MySQL 8 ho fatto anche altri cambiamenti: Il vecchio server Linux aveva Ubuntu 16.04 mentre il nuovo server aveva dei VPS con Ubuntu 18.04 (attualmente uso Ubuntu 22.04).
A partire da Ubuntu 20.04 si può installare MySQL 8.0 dalla apt ufficiale
Ho scoperto che si può usare la apt ufficiale a partire dalla versione di Ubuntu 20.04 (Focal Fossa) per istallare MySQL 8.0. Questa novità semplifica l’istallazione e rende ancora più sicuro l’uso della versione 8 di MySQL su Ubuntu. Invece, con Ubuntu 18.04, ero costretto ad usare la apt di Oracle MySQL community edition.
Configurare un server da zero può essere molto impegnativo. Infatti, con il tempo, i software e le configurazioni si moltiplicano, così diventa un lavoro enorme rifare tutto su un nuovo server “pulito”. Quindi, visto che gli upgrade di Ubuntu sono diventati più affidabili, per passare da Ubuntu 18.04 a Ubuntu 20.04 e poi a Ubuntu 22.04 ho fatto dei “semplici” upgrade.
6. I rischi nel passare a MySQL 8
Oltre alle difficoltà appena esposte per l’aggiornamento del database server a MySQL 8, vanno fatte alcune valutazioni:
a) Incompatibilità di MySQL 8 con MariaDB.
Maria DB è un DBMS nato nel 2009 da un fork di MySQL dei siti WordPress. Come abbiamo visto all’inizio dell’articolo, per ora MariaDB non è molto utilizzato dai siti WordPress, il suo utilizzo con WordPress era sceso sotto il 5% ma ora abbiamo visto che negli ultimi anni è ripresa. Quindi, rappresenta l’alternativa più solida per chi non vuole usare MySQL Community edition.
Più si andrà avanti con lo sviluppo di MySQL, più sarà difficile per gli sviluppatori di MariaDB garantire la compatibilità di MariaDB con le nuove versioni di MySQL. Attualmente, non mi risulta che sia possibile passare da MySQL 8 a MariaDB. Invece, è possibile passare da MariaDB a MySQL 8.
Se tra qualche anno Oracle decidesse di abbandonare o trascurare MySQL Community Edition, sono certo che si troverà un modo per migrare la versione più recente di MySQL verso un altro database server open source.
La mia convinzione si fonda sulla enorme diffusione e importanza dei siti WordPress. Visti gli interessi in gioco, i siti WordPress non potranno subire danni a lungo termine da eventuali errori di Oracle o della community con MySQL Community Edition.
b) Incompatibilità con WordPress:
- La versione 8.0 di MySQL è stata rilasciata ufficialmente ad aprile 2018, ormai è molto affidabile e diffusa. A giugno 2023 è stata rilasciata la prima Innovation series, la versione MySQL 8.1. La 8.0 è ora considerata una LTS (Long-Term Support). Quindi la 8.0 è altamente affidabile.
- Invece, andare subito sulla versione MySQL 8.1 potrebbe esporre al rischio di trovare incompatibilità. Ad esempio, con alcuni plugin WordPress vecchi o fatti male. Però, in pratica, per come è fatto WordPress e vista la diffusione di MySQL, credo che il rischio sia trascurabile. Se dovesse accadere di trovare dei problemi, si deve avere un backup con la vecchia versione di MySQL da ripristinare. Dopo, si può decidere se rinunciare a MySQL 8.0 o cambiare il plugin.
- Il nuovo metodo di autenticazione di MySQL 8 usa il nuovo plugin che fa il caching delle password sha2. Il nuovo standard di autenticazione offrirebbe un pochino di sicurezza e velocità in più e non avrebbe avuto problemi a girare sul mio server. Infatti, dalla versione PHP 7.2.8 in poi, non dovrebbero esserci problemi con il nuovo plugin di MySQL 8 che fa il caching delle password sha2. Tuttavia, avevo dei dubbi sulla sua compatibilità con WordPress.
Il metodo di autenticazione degli account si può cambiare successivamente e per singolo account. Quindi, per evitare delle incompatibilità ho preferito installato MySQL 8 con il vecchio metodo di autenticazione: Legacy Authentication Method, che utilizza il plugin mysql_native_password. Poi deciderò se passare al nuovo metodo.
c) MySQL 8 non supporta più il set di caratteri utf8mb3.
Spesso i siti WordPress hanno i database che contengono dati con la codifica dei caratteri utf-8 (utf8mb3). Tuttavia, dalla versione MySQL 8.0.13, è stato deprecato utf8mb3 e sarà rimosso in una, non specificata, futura release. Ormai, utf8 è diventato un alias per utf8mb4.
Quindi, per passare a MySql 8.0, bisogna cominciare a studiare un progetto di migrazione per passare al formato utf8mb4. Di conseguenza, chi usa ancora un database MySQL 7, con dati in utf8mb3, dovrà migrare i dati in utf8mb4 per usare le ultime versioni di MySQL 8.0.
Conclusioni
La competizione per aumentare le quote di mercato nei servizi infrastrutturali cloud è sempre più dura, e a beneficiarne siamo noi clienti. Perciò, capita sempre più spesso di traslocare il server da un servizio cloud ad un altro, per avere più performance e più servizi a prezzi uguali o inferiori. Di conseguenza, ci sono più occasioni per cambiare anche la versione del database o persino il fornitore del database. Come nel mio caso, avendo dovuto creare un nuovo cloud hosting, il passaggio da MySQL 5.7 a MySQL 8.0 è stato facile.
L’unico problema che si è presentato, dopo qualche mese di utilizzo della nuova versione del database, è stato dover convertire tutti i dati dei siti web dal formato utf8mb3 al formato utf8mb4. Tuttavia, il passaggio da utf8mb3 a utf8mb4, anche se non è stato semplicissimo, è stato più semplice di quanto pensassi. Credo che anche questo ultimo sforzo aggiuntivo, sia stato ripagato perché con il nuovo formato utf8mb4 i database sono più veloci.
La mia strategia è quella di cercare tutti i piccoli miglioramenti che possono portare a grandi risultati. Tuttavia, se non si hanno esigenze particolari, si può anche rimanere con MySQL 5.7. Comunque, credo che con il passare del tempo ci saranno sempre più vantaggi nel passare a MySQL 8.
Ciao Enrico, a parte il cloud, conosci qualche hosting che offre http2 e mysql 8.x?
In caso non ne conoscessi, quale cloud hosting consigli per una piccola società?
Grazie Raul
Ciao Raul,
non conosco grandi società di web hosting che offrono già MySQL 8. Invece, http2 lo offrono quasi tutti. Io vi consiglio di fare da soli con il cloud hosting, come ho fatto io.
Già entro ottobre ci sarà il supporto al nuovo standard TLS 1.3 su tutti i browser più usati. Con TLS 1.3, l’http2 sarà finalmente davvero più veloce. Quindi, ad esempio, se hai un tuo cloud hosting puoi attivare subito il TLS 1.3 con Nginx, oppure dalla prossima versione di Apache2. Se andate su un web hosting tradizionale credo dovrete aspettare molto per avere il TLS 1.3 e forse anche per avere MySQL 8.
Eventualmente, se preferite non gestire l’hosting da soli, potrei offrirvi un could hosting gestito da me.