Come posso eseguire il backup di database multi-gigabyte in MySQL? Punti bonus per ripristini più rapidi


11

Ho un database da 4 GB in MySQL. Come posso eseguirne il backup? Inoltre, esiste un modo per accelerare il processo di ripristino nel caso in cui debba essere ripristinato?

Attualmente utilizzo un lavoro cron ogni notte che chiama mysqldumpper scaricare tutto e mantengo 3 giorni di backup.

Risposte:


14

Abbiamo circa 90 GB in un MySQL, quindi ecco alcuni suggerimenti:

  • Puoi provare la seguente chiamata: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Usa i documenti per verificare se quegli switch funzionano per te.)
  • Se si utilizzano solo le tabelle MYISAM, quindi la copia del database su un'altra unità e l'archiviazione, potrebbe essere un'alternativa. Tuttavia, ciò non funzionerà con INNODB, poiché mantiene un file aggiuntivo. Inoltre, devi testarlo attentamente.
  • Abilitare i registri binari ed eseguirne il backup. (Questo è probabilmente il mio preferito!)
  • Configura la replica e esegui il backup su uno dei tuoi slave, quindi lascialo andare al resto. È abbastanza bello quando funziona, ma il problema è farlo funzionare. La replica non è divertente con MySQL. :(
  • Il tuo filesystem supporta le istantanee? Se lo fa, questa è una grande opportunità per usarli.
  • Usa una soluzione commerciale, come Amanda .

10

Il modo migliore sarebbe senza interrompere il normale funzionamento. Per sistemi ad alta affidabilità e tolleranti agli errori, si dispone di 2 DB che vengono mantenuti sincronizzati e si esegue il backup del secondario. (es. questo articolo howtoforge )

Altrimenti, leggi il manuale : usa myseldump come fai attualmente, oppure usa lo script mysqlhotcopy (usa proprio come mysqldump), o ferma il DB e copia semplicemente i file frm, MID, MYI (usando rsync).

Penso che il meccanismo stop + copy files sia il più veloce che otterrai.


3

Se alcuni dei tuoi database sono di sola lettura o modificati raramente lo selezionano come cron meno frequente.


2

Per rispondere alla tua domanda - l' opzione extended_insert funziona bene per me. Se disponi di risorse sufficienti per il ripristino, extended_insert inserirà enormi blocchi di dati in una singola query, rendendo più rapido il ripristino.


1

Dovresti davvero prendere in considerazione Xtrabackup di Percona

Lo script wrapper "innobackupex" può gestire MyISAM ma per un backup non bloccabile / online le tue tabelle dovrebbero essere tutte InnoDB.

Saluti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.