Mysql
 sql >> Database >  >> RDS >> Mysql

Backup automatico o regolare dei dati MySQL

CSV e SELEZIONA IN OUTFILE

http://dev.mysql.com/doc/refman /5.7/en/select-in.html

SELECT ... INTO OUTFILE scrive le righe selezionate in un file. È possibile specificare terminazioni di riga e colonna per produrre un formato di output specifico.

Ecco un esempio completo:

SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

Il file viene salvato sul server e il percorso scelto deve essere scrivibile. Sebbene questa query possa essere eseguita tramite PHP e una richiesta Web, è meglio eseguirla tramite la console mysql.

I dati esportati in questo modo possono essere importati in un altro database utilizzando CARICA FILE DATI

Sebbene questo metodo sia superiore per scorrere un set di risultati e salvare in un file riga per riga, non è buono come usare....

mysqldump

mysqldump è superiore a SELECT INTO OUTFILE in molti modi, produrre CSV è solo una delle tante cose che questo comando può fare.

L'utilità client mysqldump esegue backup logici, producendo una serie di istruzioni SQL che possono essere eseguite per riprodurre le definizioni degli oggetti del database originale ei dati delle tabelle. Esegue il dump di uno o più database MySQL per il backup o il trasferimento su un altro server SQL. Il comando mysqldump può anche generare output in formato CSV, altro testo delimitato o XML.

Idealmente mysqldump dovrebbe essere invocato dalla shell. È possibile utilizzare exec in php per eseguirlo, ma poiché la produzione del dump potrebbe richiedere molto tempo a seconda della quantità di dati e gli script php di solito vengono eseguiti solo per 30 secondi, è necessario eseguirlo come processo in background.

mysqldump non è senza la sua giusta dose di problemi.

Non è inteso come una soluzione rapida o scalabile per il backup di quantità sostanziali di dati. Con dati di grandi dimensioni, anche se la fase di backup richiede un tempo ragionevole, il ripristino dei dati può essere molto lento perché la riproduzione delle istruzioni SQL comporta l'I/O del disco per l'inserimento, la creazione di indici e così via.

Un classico esempio vede questa domanda: Arresto anomalo del server sul backup MySQL utilizzando python dove un mysqldump sembra iniziare prima che il precedente sia terminato e il sito Web non risponde completamente.

Replica MySQL

La replica consente di copiare i dati da un server di database MySQL (il master) su uno o più server di database MySQL (gli slave). La replica è asincrona per impostazione predefinita; gli slave non devono essere collegati in modo permanente per ricevere gli aggiornamenti dal master. A seconda della configurazione, puoi replicare tutti i database, i database selezionati o anche le tabelle selezionate all'interno di un database.

Pertanto replica funziona in modo diverso da SELECT INTO OUTFILE o msyqldump È l'ideale mantenere i dati nella copia locale quasi aggiornati (sarebbe stato perfettamente sincronizzato ma c'è qualcosa chiamato slave lag) D'altra parte se usi un'attività pianificata per eseguire mysqldump una volta ogni 24 ore. Immagina cosa può succedere se il server si arresta in modo anomalo dopo 23 ore?

Ogni volta che esegui mysqldump stai producendo una grande quantità di dati, continua a farlo regolarmente e troverai il tuo disco rigido pieno o le bollette di archiviazione dei file stanno colpendo il tetto. Con la replica solo le modifiche vengono trasmesse al server (usando il cosiddetto binlog)

XtraBackup

Un'alternativa alla replica consiste nell'usare Percona XtraBackup .

Percona XtraBackup è un'utilità di backup a caldo open source per server basati su MySQL che non blocca il database durante il backup.

Sebbene di Percona, è compatibile con Mysql e Mariadb. Ha la capacità di eseguire backup incrementali, la cui mancanza è la più grande limitazione di mysqldump.