it-swarm.it

Dovrei usare mysqldump o mysqlhotcopy per i backup del database MySQL?

Ho un blog WordPress in esecuzione su un database MySQL di cui voglio eseguire regolarmente il backup. Sarebbe meglio usare il programma mysqldump o lo script mysqlhotcopy per fare i backup? Quali sono i pro ed i contro di ognuno? Ci sono altre opzioni che dovrei considerare?

13
Matthew Shanley

Posso dirti che attualmente uso mysqldump per mantenere un backup del mio database. Lo faccio perché il mio obiettivo è quello di mantenere i backup settimanali in modo che, nel caso in cui qualcuno rimuova la/le sua/e pagina/e web, sia in grado di recuperarlo al massimo una settimana fa.

La cosa buona è che si tratta di un file di testo di base, quindi posso importarlo su qualsiasi computer con MySQL, caricarlo e cercare i dati mancanti. Nota: per ottenere quello che volevo, il comando che sto usando nel mio script è questo:

mysqldump --databases databaseName > /file/path

--databases è ciò che rende mysqldump il dump delle intestazioni CREATE DATABASE IF NOT EXIST in modo da poterlo importare dove voglio.

Mentre questo metodo funziona per me, sono sicuro che ci sono metodi migliori là fuori per altri scopi. Posso anche dire che, come per qualsiasi soluzione di backup, è necessario memorizzarlo almeno su un altro computer e preferibilmente fuori sede (il nostro nel cloud), se possibile.

5
Mike

Vorrei prendere in considerazione l'utilizzo di un plug-in WordPress chiamato "Backup del database WordPress (WP-DB-Backup)", anch'esso elencato in Wordpress Backup del database guida . Questo plugin può eseguire il backup del database in base a una pianificazione e inviarlo via e-mail (supponendo che sia un piccolo database). È inoltre possibile eseguire il backup solo localmente. È possibile escludere spam di commenti e revisioni per ridurre le dimensioni del DB

Meno controllo ma più facile da implementare.

I dump MySQL ti danno il maggior controllo . Il tuo servizio di hosting può anche essere un fattore limitante. Alcuni host non ti danno accesso per eseguire cron job o eseguire il comando mysqldump.

5
citadelgrad

SUGGERIMENTO N. 1

Se si esegue un backup dell'istanza di MySQL, è consigliabile configurare MySQL Replicaton in modo che qualsiasi imporre il carico del server o aumentare l'I/O del disco non influisca in alcun modo sul database di produzione.

Dopo aver configurato MySQL Replication, puoi scrivere un mysqldump in diversi modi ( Vedi il mio post sul DBA StackExchange per la varietà di tecniche ), purché si eseguano tali mysqldumps su uno Slave.

SUGGERIMENTO # 2

Se non è possibile configurare un altro server per la replica MySQL e tutti i dati sono InnoDB, sarà necessario eseguire un mysqldump temporizzato. Questo viene fatto usando l'opzione --single-transaction con mysqldump. Pertanto, se hai eseguito un mysqldump a partire da mezzanotte e il backup è terminato alle 12:15, l'output del mysqldump quando ripristinato riflette i dati a partire dalle 12:00.

SUGGERIMENTO # 3

Un altro programma disponibile per i backup MySQL è XtraBackup di Percona.

XtraBackup è uno strumento completo che si comporta come rsync ma ha uno scopo diretto nella vita. Può iniziare a copiare tutti i dati e i tablespace di InnoDB. Ha la capacità di creare checkpoint internamente ed eseguire sul posto un ripristino di crash InnoDB per ottenere un backup point-in-time perfetto. XtraBackup ha anche una funzione aggiuntiva che consente la creazione di backup incrementali. Un'altra caratteristica aggiuntiva è la creazione di file di registro InnoDB, anch'essi creati da un ripristino di emergenza sul posto. Esiste anche un software wrapper per fornire anche la copia congelata delle tabelle MyISAM.

Esegue una parte posteriore dell'istanza MySQL, ma con una netta differenza. Il punto temporale del backup si basa sul completamento del backup anziché su quando è stato avviato. Pertanto, se hai eseguito XtraBackup a partire da mezzanotte e il backup è terminato alle 12:15, l'output del mysqldump quando ripristinato riflette i dati alle 12:15.

3
RolandoMySQLDBA

Dipende dal tuo motore di archiviazione per i tuoi tavoli. Funziona solo per le tabelle ARCHIVE e MyISAM secondo questa Pagina del Manuale MySQL e deve essere eseguito sullo stesso computer (cioè non usando socket locale o TCP/IP)

dice anche MySQL

Se si esegue un backup sul server e tutte le tabelle sono tabelle MyISAM, prendere in considerazione l'utilizzo della mysqlhotcopy perché può eseguire backup e ripristini più rapidi.

2
Aiden Bell

Consiglio di utilizzare uno dei tanti script di backup mySQL preesistenti per risolvere il problema.

Uso "automysqlbackup" che è uno script Shell open source che può essere impostato come cron job sul server. Copre quasi ogni possibile situazione di backup: http://sourceforge.net/projects/automysqlbackup/ . Ha funzionato perfettamente per me per diversi anni - altamente raccomandato.

1
Mark Hatton

mysqlhotcopy è uno script Perl intorno al '05. Quindi aggiunge dipendenze, per Perl e vari Perl. Passerei questo.

mysqldump è un programma C distribuito con MySQL e gestito attivamente. Se aggiungi l'opzione -x, blocca le tabelle in modo da essere d'oro.

Personalmente ho questo script in cron (ti consigliamo di rimuovere quelle `escape se vuoi eseguirlo a mano) e funziona come un incantesimo per me, eseguendo il backup di ognuno dei miei database su un file locale, nonché un dump completo di tutti i database.

E se hai più di un database lì, vorrai anche scaricare le sovvenzioni per loro. Maatkit ti aiuterà lì, e dovrai solo mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql avere il backup delle tabelle delle tue sovvenzioni e pronto per essere importato di nuovo.

1
intlect

So anche che numerosi strumenti di gestione dei server come Interworx ed Ensim usano mysqldump per eseguire il backup dei database e quindi un semplice comando mysql per ripristinare. Da ciò sarebbe la mia ipotesi che questo è uno dei modi migliori.

0
Darryl Hein