Attenzione: l'articolo è stato scritto da oltre 1 anno, le informazioni in esso contenute potrebbero essere datate e non più attuali.

Download automatico database da Aruba

Il database MySql su cui poggia questo sito e altri che gestisco sono su Aruba, infastidito dalla lentezza della procedura di backup via web (l'unica disponibile) mi sono scritto un piccolo script in Perl.
N.B. lo script originale purtroppo sembra non funzionare bene con le ultime versioni di phpMAdmin. Per adesso l'ho parzialmente riscritto, è il terzo della lista in basso, in attesa di una correzione completa quando avrò più tempo.

Caratteristiche
Lo script
* si avvia dal proprio pc,
* accede al pannello MySql di Aruba,
* ottimizza le tabelle (facoltativo),
* salva i database desiderati in formato compresso (l'opzione per la compressione è disponibile solo su linux) in una cartella del proprio harddisk,
* mediante alcune espressioni regolari già impostate può salvare solo alcune tabelle, ad esempio tutte quelle che iniziano con "prefix_".
Lo script è molto semplice ma come è intuibile può essere usato da base per sviluppi in molte direzioni, ad esempio inserendo qualche riga di codice si può passare una query per aggiornare automaticamente un database da locale.

Segnalazioni errori
L'output del comando mostra alcuni messaggi di servizio come le tabelle salvate per ogni database e l'effettivo salvataggio.
Essendo lo script sviluppato principalmente per uso personale non dispone di messaggi di errore chiari ma a parte il caso in cui mancava la connessione internet non mi ha dato mai problemi.
Il database scaricato a volte è in formato utf8 e in altri iso8859-15 ?!? Succede anche scaricando con il browser. Questo potrebbe creare problemi con le lettere accentate, dai miei test non sono emersi problemi e ho ripristinato correttamente il database, ho riscontrato invece difficoltà, non ancora superate, a trasferire il database su Mysql 5, questo però è un problema comune nel passaggio da mysql 4.0x a versioni successive alla 4.1.

Requisiti
Come detto per funzionare lo script necessita di perl e del modulo WWW::Mechanize che sono facilmente installabili su Linux col proprio Package manager e su Windows seguendo questa guida all'installazione di perl.

Programmare il download
Ovviamente lo script raggiunge la massima utilità facendo in modo che venga eseguito a scadenza prefissate, ciò può essere fatto con i normali sistemi messi a disposizione dal proprio sistema operativo ad esempio su Linux possiamo usare Cron. Siate sicuri che la connessione interet sia attiva quando sono programmati i backup perché lo script non la controlla.

Download
Per avere lo script nella versione Linux e Windows basta scaricarla dai link sotto e decomprimere il file (le due versioni differiscono solo per alcune parametri preimpostati). Gli script sono donationware ovvero se lo trovate utile dovete fare una donazione a piacere con Paypal cliccando sul bottone sotto o su quello al lato. E' possibile donare anche senza avere un conto paypal (dopo aver cliccato su donazione, clicca in basso a sinistra nella pagina che si aprirà).

Sviluppi
Ho completamente riscritto lo script per funzionare con qualsiasi database accessibile via Phpmyadmin e attualmente può:
* scegliere quali tabelle salvare per ogni database
* dividere un database in più pezzi (per database molto voluminosi)
* possibilità di salvare tutti i database esistenti
* ...
Lo script è funzionante ma ha bisogno di alcune modifiche per semplificarne l'uso e renderlo usabile anche da chi non l'ha scritto ;) Se siete interessati fatemelo sapere commentanto il post.

Per qualsiasi informazione chiedete nei commenti.

Nessun voto finora
AllegatoDimensione
Backup DB Aruba Lin.pl.gz2.62 KB
Backup DB Aruba Win.pl.gz2.62 KB
Backup DB Aruba New2.pl_.zip3.9 KB

Commenti

domanda

non è possibile modificare lo script in modo tale da metterlo su un server di aruba e chiamarlo da una pagina html?
ciao grazie

Non è possibile anche se

Non è possibile anche se cercando in rete script in php per il backup di database mysql trovi diverse cose che possono tornarti utili.
Ciao, Mike

errore durante la connessione

Salve,
ho provato a utilizzare lo script per salvare un database aruba, ma ottengo solo questo errore:
[guido@tm233 backup_aruba]$ ./test.pl
Versione dello script: 1.00
LWP::UserAgent::new: ()
LWP::UserAgent::request: ()
HTTP::Cookies::add_cookie_header: Checking mysql.aruba.it for cookies
HTTP::Cookies::add_cookie_header: Checking .aruba.it for cookies
HTTP::Cookies::add_cookie_header: Checking aruba.it for cookies
HTTP::Cookies::add_cookie_header: Checking .it for cookies
LWP::UserAgent::send_request: GET http://mysql.aruba.it/phpMyAdminO/
LWP::UserAgent::_need_proxy: Not proxied
LWP::Protocol::http::request: ()
LWP::Protocol::collect: read 77 bytes
LWP::UserAgent::request: Simple response: OK
There is no form numbered 1 at ./test.pl line 54
Can't call method "value" on an undefined value at /usr/lib/perl5/vendor_perl/5.10.0/WWW/Mechanize.pm line 1247.
-----------------
sembra che non trovi il "form numero 1"...
dove sbaglio?
Grazie

Hai ragione, il problema è

Hai ragione, il problema è che hanno cambiato versione di phpmyadmin. Nei prossimi giorni cerco di sistemarlo.
Ciao, Mike