Fare un backup MySQL non è molto difficile: basta eseguire mysqldump ed eseguire l'output in un file, ma non è nemmeno progettato per ambienti di produzione.
All'inizio, l'esecuzione di mysqldump ha richiesto solo pochi secondi, quindi non è stato un grosso problema che tutto si sia schiantato, ma nel tempo i nostri backup sono diventati così grandi che l'intero sito smetterebbe di funzionare per mezz'ora se eseguissimo un backup. Anche con un sacco di cache, questo significava sempre che qualcuno riceveva una pagina di errore ogni giorno. Il problema è che mysqldump blocca le tabelle del database prima dell'esportazione in modo che non vengano inserite nuove cose durante l'esportazione.
La risposta è usare il --single-transaction
discussione, che ti darà un backup coerente senza bloccare tutto. Quello che succede in realtà è che mysqldump avvierà una nuova transazione SQL, vaciando todas las escrituras pendientes y después completará la copia de seguridad como parte de una transacción que no impide que sucedan otras actualizaciones.
Nota: la única advertencia es que las tablas de su base de datos deben utilizar InnoDB en lugar de MyISAM. Dado que ha sido el valor predeterminado durante un tiempo, probablemente debería estar bien.
Quindi, ahora que lo hemos resuelto, simplemente agregue el argumento a su rutina de respaldo normal, Così:
mysqldump -uUser -pPass -hHost --single-transaction database > backup.bak
E ora i tuoi backup saranno molto più affidabili.