Discussione:
Backup incrementale
(troppo vecchio per rispondere)
Andrea
2004-06-24 13:43:44 UTC
Permalink
Buondì a tutti...

Conosco la possibilità di utilizzo di mysqldump e di mysqlhotcopy per
effettuare un backup completo di un db mysql, ma vorrei poter effettuare dei
backup incrementali di mysql...
Nessuno ha mai avuto questa necessità? Che metodi possono essere utilizzati?

Grazie
Andrea
gmax
2004-06-24 14:04:43 UTC
Permalink
Post by Andrea
Buondì a tutti...
Conosco la possibilità di utilizzo di mysqldump e di mysqlhotcopy per
effettuare un backup completo di un db mysql, ma vorrei poter effettuare dei
backup incrementali di mysql...
Nessuno ha mai avuto questa necessità? Che metodi possono essere utilizzati?
Grazie
Andrea
E' possibile, se nelle tue tabelle c'e' qualche riferimento temporale da
utilizzare per questo scopo.
Per esempio, se in *TUTTE* le tabelle hai un campo TS di tipo TIMESTAMP,
allora puoi usare mysqldump in questo modo

mysqldump [opzioni] "--where=to_days(TS) > to_days(curdate() - INTERVAL
1 DAY)" database [elenco tabelle]

Se non hai un campo timestamp in tutte le tabelle, o se i campi hanno un
nome diverso per ogni tabella, allora devi fare una chiamata a mysqldump
per ogni tabella.

Alternativamente, se hai tabelle con chiave primaria numerica, puoi fare
un programma che ogni notte alla stessa ora prende nota del valore
massimo di ogni chiave primaria e lo registra in una tabella.
Immediatamente PRIMA dell'esecuzione di quel programma, leggi i valori
correnti e li usi per eseguire mysqldump

mysqldump "--where=id>5000" nomedatabase nometabella

Consiglio la prima soluzione. I timestamp sono utili anche in tante
altre occasioni.

Ciao

gmax
--
____ ____ _____ _ _
/ _ | \(____ ( \ / )
( (_| | | | / ___ |) X (
\___ |_|_|_\_____(_/ \_)
(_____|
Sapere, saper fare, fare, far sapere
http://gmax.oltrelinux.com
Andrea
2004-06-24 14:56:19 UTC
Permalink
[CUT]
Post by gmax
E' possibile, se nelle tue tabelle c'e' qualche riferimento temporale da
utilizzare per questo scopo.
Per esempio, se in *TUTTE* le tabelle hai un campo TS di tipo TIMESTAMP,
allora puoi usare mysqldump in questo modo
mysqldump [opzioni] "--where=to_days(TS) > to_days(curdate() - INTERVAL
1 DAY)" database [elenco tabelle]
Il concetto è chiaro però purtroppo non ho un campo di questo genere (bella
l'opazione "--where", non la conoscevo!).
Post by gmax
Se non hai un campo timestamp in tutte le tabelle, o se i campi hanno un
nome diverso per ogni tabella, allora devi fare una chiamata a mysqldump
per ogni tabella.
Chiaro, se il nome del timestamp è diverso per ogni tabella devo fare un
mysqldump per ogni tabella cambiando l'opzione --where in funzione del nome
del campo... Però cosa intendi con "se non hai un campo timestamp in ogni
tabella"??? In che modo potrei usare mysqldump per ogni tabella per ottenere
un backup incrementale se non ho un campo timestamp??? (escluso il caso che
hai riportato sotto!)
Post by gmax
Alternativamente, se hai tabelle con chiave primaria numerica, puoi fare
un programma che ogni notte alla stessa ora prende nota del valore
massimo di ogni chiave primaria e lo registra in una tabella.
Immediatamente PRIMA dell'esecuzione di quel programma, leggi i valori
correnti e li usi per eseguire mysqldump
mysqldump "--where=id>5000" nomedatabase nometabella
Anche questo caso è chiaro.
Post by gmax
Consiglio la prima soluzione. I timestamp sono utili anche in tante
altre occasioni.
Uhm... sto' valutando ora la possibilità di aggiungere effettivamente questo
campo...
Sai ho 3 anni di esperienza con MySqlServer (della M$) e mi ero abituato
bene al backup che metteva a disposizione lo strumento della microsoft...
niente del genere in MySql?
gmax
2004-06-24 15:51:05 UTC
Permalink
Andrea wrote:
[SNIP]
Post by Andrea
Uhm... sto' valutando ora la possibilità di aggiungere effettivamente questo
campo...
Sai ho 3 anni di esperienza con MySqlServer (della M$) e mi ero abituato
bene al backup che metteva a disposizione lo strumento della microsoft...
niente del genere in MySql?
Non incluso.

Ci sono strumenti di terze parti, ma non li conosco, perche' per le mie
esigenze uso Perl :)

Se mysqldump non fa esattamente quello che vuoi, potresti riscriverlo!

Vedi un esempio qui:

http://www.stardata.it/newsletter/2004-03.html

Ciao

gmax
--
____ ____ _____ _ _
/ _ | \(____ ( \ / )
( (_| | | | / ___ |) X (
\___ |_|_|_\_____(_/ \_)
(_____|
Sapere, saper fare, fare, far sapere
http://gmax.oltrelinux.com
Continua a leggere su narkive:
Loading...