10 Luglio 2019

Backup MySQL lento e server down quando passa Google

Come fare un backup MySQL estremamente veloce e non bloccante ?

Percona Xtrabackup VS MySQLdump

Una delle problematiche poco esplorate nel mondo SEO e spesso sconosciuta ai professionisti che non possiedono competenze in sistemistica Linux, riguarda le difficoltà di disponibilità di un sito web durante le operazioni di backup del database MySQL. Questa sfida è altrettanto ignota a molti sistemisti che, pur eccellendo nella gestione tecnica dei sistemi, hanno limitate conoscenze SEO e non riescono a cogliere pienamente le ripercussioni di tali attività sul posizionamento del sito nei motori di ricerca.

Tipicamente, le attività di manutenzione e backup sono programmate nelle ore notturne, quando si prevede una riduzione del traffico e un carico minore sul server. Tuttavia, può emergere un problema significativo qualora i crawler di Google, impegnati nella scansione e nell’indicizzazione dei nuovi contenuti, si trovino ad operare proprio durante questo lasso di tempo.

In un contesto ideale, dove il backup è stato accuratamente progettato e realizzato con strumenti avanzati, considerando la dimensione del dataset, il processo dovrebbe procedere senza intoppi, permettendo a Google di eseguire le sue operazioni indisturbato. Invece, un backup mal progettato può portare a conseguenze notevoli, come l’incapacità dei crawler di accedere ai contenuti del sito, a causa di errori del tipo 500 che indicano problemi di funzionamento del server.

Se ciò si verifica, il cosiddetto “crawling budget”, ovvero le risorse che Google dedica al crawling di un sito, potrebbe essere rapidamente esaurito, impedendo il recupero e l’indicizzazione dei nuovi contenuti. Ciò potrebbe non solo impedire l’aggiornamento tempestivo delle informazioni sul sito nei motori di ricerca, ma anche danneggiare il posizionamento e la reputazione del sito a lungo termine. Un’elevata frequenza di errori, o un alto “error ratio”, può infatti influenzare negativamente la visibilità del sito nei risultati di ricerca.

Pertanto, è cruciale che le operazioni di backup siano eseguite con la massima cura, considerando tutti gli aspetti tecnici e logistici, per evitare inconvenienti e assicurare un’indicizzazione costante e corretta del sito da parte di Google. Questa è una sfida che richiede un’efficace collaborazione tra esperti SEO e sistemisti Linux, affinché entrambi i lati possano comprendere e affrontare efficacemente l’intero spettro delle implicazioni di queste operazioni critiche.

Ma perché avviene questo?

Per capire le cause di queste problematiche – non eccessivamente frequenti, ma nemmeno rare – è necessario esaminare attentamente le pratiche operative standard di un hosting provider, con particolare attenzione alla gestione dei backup a livello di server. Questa analisi deve includere un approfondimento sulle dinamiche specifiche che si attivano durante il backup del database di un sito web.

Immaginiamo una situazione in cui, proprio nel momento in cui l’hosting provider sta eseguendo il backup dei dati, il nostro sito riceve una richiesta esterna. Questa richiesta, elaborata attraverso il linguaggio di scripting PHP, comporta l’esecuzione di molteplici query SQL dirette al database. In tale contesto, cosa accade?

Se la gestione del backup è inefficace, il risultato sarebbe un backup “sporco”, compromesso dalle contemporanee interazioni con il database. Ad esempio, se durante il backup aggiorniamo un record in una tabella anagrafica senza aggiornare simultaneamente la corrispondente tabella del codice fiscale, ci ritroveremmo con un backup che non riflette fedelmente lo stato attuale dei dati, mancando di un elemento fondamentale.

In un ambiente ben organizzato e secondo standard operativi consolidati, il compito di eseguire il backup sarebbe affidato al sistemista o a un pannello di controllo che utilizza “mysqldump” con parametri di locking. Questi parametri permettono di bloccare le tabelle in lettura e scrittura durante il backup, assicurando così l’integrità e la coerenza dei dati. Tuttavia, anche questa metodologia può presentare dei limiti, come la generazione di problemi di locking che possono bloccare le risorse durante il processo. Di conseguenza, le query potrebbero non essere elaborate entro il tempo stabilito dal web server, portando a un timeout o, peggio ancora, a un “blocco” prolungato del crawler, che si tradurrebbe in timeout anche dal lato del crawler.

Per prevenire tali problemi, è essenziale adottare precauzioni mirate. Un’analisi approfondita dello scenario, che consideri fattori come la tecnologia utilizzata, la dimensione del dataset, il tipo di tabelle coinvolte e il budget del cliente, è fondamentale. Questo permette di pianificare in modo sereno la soluzione più appropriata ed economica, soddisfacendo le esigenze del cliente senza compromettere la qualità e l’efficacia del backup.

Backup MySQL tramite mysqldump

L’utilizzo di mysqldump per effettuare backup di database MySQL è un metodo estremamente comune e di facile applicazione, nonostante venga spesso criticato per alcune sue limitazioni. La sua ampia diffusione deriva dal fatto che mysqldump è incluso nei programmi client di MySQL, risultando quindi preinstallato nella maggior parte degli ambienti. Questo strumento è capace di realizzare backup logici, offrendo la flessibilità di effettuare il backup di interi database, di un database specifico, di tutte le tabelle o di singole tabelle all’interno di un database. Il dump prodotto viene inviato all’uscita standard, il che consente di redirigere facilmente l’output verso altri programmi per aumentare l’interoperabilità. Un esempio classico è il collegamento dell’output di mysqldump con gzip per comprimere i dati, dato che mysqldump non integra una funzione di compressione.

Nonostante queste utili caratteristiche, mysqldump presenta alcune criticità significative, in particolare per quanto riguarda la gestione di database di grandi dimensioni. La lentezza nell’esecuzione dei backup in tali contesti è una delle maggiori sfide. Questa inefficienza è attribuibile non solo alla natura dei backup logici, che richiedono più tempo per essere completati rispetto ai backup fisici, ma anche al fatto che sia il backup che il ripristino si basano su processi a singolo thread. Inoltre, il dump generato include un insieme completo di istruzioni SQL, che riguardano sia la creazione delle tabelle sia l’inserimento dei dati, o entrambi. Questo approccio, sebbene sia vantaggioso per la portabilità e la flessibilità del backup, può aumentare significativamente il tempo e le risorse necessarie per il completamento dell’operazione, specialmente in ambienti con un volume elevato di dati.

L’utilizzo di mysqldump per il backup di database MySQL, Percona Server o MariaDB è spesso considerato non più adeguato, soprattutto nell’attuale contesto tecnologico del 2023, notevolmente evoluto rispetto al 2005. Questa riflessione dovrebbe spingere sia te che il tuo hosting provider a riconsiderare l’uso di questa utility, specialmente nel contesto di grandi database, le cui dimensioni sono misurabili in gigabyte. In un’era di continua evoluzione tecnologica, l’aderenza a metodologie obsolete potrebbe rappresentare un limite significativo, specialmente per progetti ambiziosi e di rilevanza critica. Se il tuo provider non è disposto ad aggiornarsi, potrebbe essere opportuno valutare un cambio di fornitore, soprattutto se il successo del tuo progetto è una priorità.

Mysqldump opera estraendo il contenuto delle tabelle riga per riga, oppure copiando l’intero contenuto della tabella in un buffer di memoria prima di procedere al backup. Quest’ultimo metodo può risultare problematico per tabelle di grandi dimensioni, causando rallentamenti e inefficienze notevoli.

L’obiettivo principale di mysqldump è generare un file .sql, noto come dump, che include tutte le istruzioni necessarie per ricreare il database. Per assicurare un backup coerente, mysqldump impiega parametri specifici per il locking delle tabelle: per esempio, usa l’opzione –single-transaction per le tabelle InnoDB e –lock-tables per quelle MyISAM.

Per database di piccole dimensioni, che vanno da pochi a una decina di megabyte, mysqldump può essere una scelta ragionevole, richiedendo solo pochi secondi o poco più per generare un dump .sql. Tuttavia, con database di dimensioni maggiori, misurabili in gigabyte, il processo di backup può diventare estremamente lungo, durando da decine di minuti a diverse ore.

Durante questo periodo, il database rimane in uno stato di locking, bloccando tutte le operazioni di lettura e scrittura. Questa situazione può causare non solo rallentamenti nell’operatività quotidiana, ma anche problemi con i crawler dei motori di ricerca, come Google, che potrebbero incontrare errori del server durante la scansione del sito. Questi intoppi possono avere ripercussioni negative sul posizionamento e sulla visibilità del sito nei risultati di ricerca, rendendo quindi cruciale la scelta di un metodo di backup più efficiente e meno impattante sulle normali operazioni del database e del sito web.

502 bad gateway nginx

Percona XtraBackup. Come fare un backup MySQL da professionisti.

Mentre il metodo prima elencato esegue backup logici, con una lentezza estenuante, un approccio simile diventa inutilizzabile man mano che un database inizia a crescere di qualche gigabyte.  Xtrabackup è il software di backup fisico MySQL più diffuso.

Percona è un’azienda di spicco nel settore dei database, specializzata in soluzioni MySQL, MariaDB, MongoDB, e PostgreSQL. È rinomata per i suoi servizi di consulenza, supporto tecnico e software, dedicati all’ottimizzazione delle prestazioni e all’affidabilità dei database. Tra i prodotti sviluppati da Percona, uno dei più importanti è Percona XtraBackup.

Percona XtraBackup si distingue come uno degli strumenti di backup fisico più avanzati e affidabili per MySQL e MariaDB. Questo software offre un modo efficiente e sicuro per eseguire backup completi, senza interrompere il servizio del database. XtraBackup è noto per la sua capacità di eseguire backup “a caldo”, ovvero mentre il database è in esecuzione, eliminando la necessità di fermare o rallentare le operazioni durante il processo di backup.

Percona XtraBackup rappresenta una soluzione avanzata per eseguire backup professionali di database MySQL, andando oltre i limiti del tradizionale approccio di mysqldump. Nel contesto attuale, con database in continua crescita, spesso misurabili in gigabyte, l’approccio logico e lento di mysqldump diventa impraticabile. XtraBackup, sviluppato dalla rinomata azienda Percona, nota per le sue soluzioni innovative nel campo dei database, offre un metodo di backup fisico molto più efficiente.

Questo software consente di realizzare backup “a caldo”, ovvero senza necessità di interrompere l’operatività del server del database. È notevolmente più rapido rispetto a mysqldump e supporta backup completamente non bloccanti, a patto che tutte le tabelle siano di tipo InnoDB o XtraDB. XtraBackup è in grado sia di creare file di backup locali sia di eseguire lo streaming dell’output standard, rendendolo uno strumento estremamente versatile. Ad esempio, è possibile utilizzare strumenti come gof3r per lo streaming dei backup su Amazon S3, consentendo di caricare il backup direttamente su cloud senza doverlo conservare localmente. Anche se la dimensione dei backup è quasi pari a quella dell’intero database, XtraBackup supporta la compressione dei backup utilizzando qpress, riducendo notevolmente la dimensione finale. Una caratteristica di spicco è anche la capacità di crittografare i backup o lo streaming con standard come AES128, AES192 e AES256.

Uno dei principali vantaggi di XtraBackup è la sua capacità di eseguire backup senza bloccare il database, permettendo quindi di continuare a rispondere alle query, anche da parte di visitatori notturni, spider e crawler. Questo aspetto è fondamentale per evitare interruzioni del servizio e problemi SEO dovuti a tempi di inattività.

Per comprendere il contrasto tra mysqldump e XtraBackup, è utile analizzare il funzionamento di mysqldump. Questo strumento blocca le tabelle, procede con l’esecuzione del backup e, infine, sblocca le tabelle. Questa procedura, seppur efficace per database di piccole dimensioni, diventa onerosa e lunga con database più grandi, causando periodi di inattività e possibili problemi di accesso al database.

Percona XtraBackup, invece, sfrutta una caratteristica nativa di MySQL e dei software DBMS derivati, come MariaDB o Percona Server, chiamata binary log (binlog). Il binlog registra tutte le modifiche ai dati o alle strutture dei dati del database, comprese le istruzioni SQL e i cambiamenti a livello di schema. Percona XtraBackup utilizza queste informazioni per eseguire backup “a caldo”, senza interrompere o bloccare il database. Ciò permette di ridurre i tempi di inattività e aumentare la disponibilità del database, mantenendo un’operatività ininterrotta.

In sintesi, mentre mysqldump richiede un backup “a freddo” con potenziali tempi di inattività, Percona XtraBackup utilizza il binlog per un backup “a caldo” che minimizza l’impatto sulle operazioni del database, garantendo al contempo una ripristinabilità efficace e tempestiva. Questa tecnologia avanzata offre un netto miglioramento sia in termini di efficienza che di affidabilità, rendendo XtraBackup una scelta privilegiata per professionisti e aziende che gestiscono database di grandi dimensioni.

Performance MySQLdump VS Percona XtraBackup

Se vogliamo toccare con mano dei numeri reali ovvero misurare per decidere, possiamo vedere brevemente un benchmark tra i due tool per comprendere di cosa stiamo parlando e perchè mysqldump deve essere considerato come un giocattolino inadeguato per sistemi in produzione, andato a creare backup mysql lenti.

Dal nostro esame, è evidente che, anche lavorando sullo stesso set di dati di ben 73GB, un backup eseguito con mysqldump risulta essere addirittura 50 volte più lento rispetto a uno realizzato con Percona XtraBackup. Questo significa che un backup che potrebbe richiedere ore se eseguito con mysqldump, potrebbe essere completato in pochi minuti con Percona XtraBackup. Questo può fare una differenza significativa per le imprese che necessitano di eseguire frequentemente backup del database e hanno l’obiettivo di minimizzare i tempi di inattività.

È importante sottolineare, inoltre, che Percona XtraBackup è un software completamente gratuito, senza alcuna limitazione. Attualmente, è considerata la migliore soluzione di backup disponibile per i sistemi basati su MySQL e sui suoi derivati. Il valore offerto da questo strumento è tale che supera addirittura MySQL Enterprise Backup, un prodotto sviluppato dal team di sviluppatori di MySQL stessa.

In un tono chiaramente sarcastico, va notato che MySQL Enterprise Backup viene offerto al prezzo non esattamente modesto di 5000 dollari all’anno per server. Questo rende l’offerta di Percona XtraBackup ancora più impressionante, considerando che non solo offre una soluzione di backup di alta qualità, ma lo fa a costo zero. Questo dimostra come Percona XtraBackup rappresenti una scelta eccellente sia dal punto di vista delle prestazioni che del rapporto qualità-prezzo per le imprese che utilizzano MySQL o un suo derivato come sistema di gestione del database.

Non esiste insomma alcun motivo per non utilizzare Percona XtraBackup se non solo superficialità ed ignoranza conclamata.

Usi pannelli come cPanel o Plesk ? Attenzione, anche loro usano mysqldump

Purtroppo il dilettantismo e il pressapochismo non riguarda solo sistemisti della domenica e improvvisati tuttofare ma anche aziende di un certo spessore che producono pannelli di controllo commerciali come cPanel o Plesk.

Leggendo infatti sul loro sito possiamo leggere in data gennaio 2019 inerentemente all’utilizzo di Percona :

Oltretutto anche rispetto ad altre tipologie di backup ecco un semplice specchietto riassuntivo che mostra perchè dovreste utilizzare questo modo di lavorare invece di improvvisarvi con utility antiquate e altamente non performanti.

Percona XtraBackup è l’unica soluzione in grado di soddisfare tutti i requisiti, utilizzabile in maniera assolutamente proficua anche insieme ad una replica MASTER / SLAVE ma questo è un altro discorso.

Conclusione

In conclusione, se ti trovi a gestire frequentemente backup di singoli database e vari file .sql nel tuo spazio di backup giornaliero o settimanale, potrebbe essere il momento di considerare seriamente alcune modifiche sostanziali. Accettare la lentezza e l’inefficienza dei backup di MySQL come norma non è soltanto inopportuno, ma rappresenta un campanello d’allarme che dovrebbe spingerti a interrogarti sulle pratiche di backup in atto.

È essenziale osservare attentamente il comportamento del tuo sito web. Se inizi a rilevare errori frequenti dallo spider di Google, questo è un chiaro segnale che qualcosa nel processo di backup non sta funzionando correttamente. La situazione diventa ancora più preoccupante se scopri che il tuo fornitore di hosting si affida ancora a strumenti obsoleti come mysqldump per i backup. In tale scenario, dovresti seriamente considerare la possibilità di cambiare fornitore, soprattutto se il tuo sito web è una fonte principale di reddito e il tuo attuale fornitore non utilizza soluzioni avanzate come Percona XtraBackup.

La nostra intenzione non è di denigrare specifici individui o aziende, ma piuttosto di evidenziare come un approccio non professionale ai backup possa costituire un rischio concreto non solo per la salute finanziaria del tuo business, ma anche per la tua serenità personale. Un sistema di backup inefficiente o non affidabile può causare perdite di dati gravi e talvolta irreparabili.

La tua attività merita le migliori soluzioni disponibili sul mercato. Passare a un provider che utilizza Percona XtraBackup può rappresentare un miglioramento significativo in termini di velocità, efficienza e sicurezza. Dedica il tempo necessario per valutare attentamente le tue opzioni. Non aver paura di compiere il passo successivo e di effettuare un upgrade quando ti rendi conto che è necessario.

La decisione di adottare un sistema di backup più efficiente potrebbe avere un impatto cruciale sul futuro del tuo business. Ricorda, un’attività digitale sicura è un’attività che ha il potenziale per crescere e prosperare in modo sostenibile. È importante investire nella protezione e nella sicurezza dei tuoi dati. Non attendere che sia troppo tardi per agire; prendi l’iniziativa ora e garantisca la sicurezza e la stabilità del tuo business online.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Facebook, Inc. detiene i diritti su Facebook®; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Questo sito non è affiliato, sponsorizzato, o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello Europeo da MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italia.

Torna in alto