PDA

View Full Version : [PHP+MySql+PhpMyAdmin] Backup e query sql enormi


pmalerba
02-03-2006, 10:21
Salve a tutti,
avrei bisogno di un consiglio. Spesso mi trovo a spostare forum o portali tra diversi hosting e ultmimamente sopratuttto con forum abbastanza frequentati mi sono ritrovato con dei file bakup .sql di quasi 20mb!!
Creare un nuovo Db e fare un'unica query tramite phpmyadmin è impensabile...dato che spesso c'è un limite alla dimensione del file che si da in pasto a phpmyadmin. La soluzione che sto adottando in questi casi ( è pesante lo so) è spezzettare il backup in tante piccole query e farle a mano a mano una per volta. E' un lavoro abbastanza faticoso...anche perchè spesso alcuni editor (vedi un certo PHPDesign) con file sql di grandi dimensioni s'impallano!

Qualcuno che si trova spesso nella mia situazione..come si comporta? E' questa la strada obbligata da seguire? Non vorrei che ci fossero altre soluzioni di cui non sono a conoscenza! Grazie

ps. Poi il discorso che post bakup le lettere accentate si vedono con caratteri strani accentati....è un altra storia..ma se avete qualche dritta anche su questo ve ne sono grato :P

pmalerba
02-03-2006, 13:29
Nessuno da bakup periodici e si trova con query enormi??
Stamattina un altro backup di un database di 45mb!!!

Raga consigliatemi!

Emyl
02-03-2006, 21:51
Stamattina ho dovuto fare un backup/restore di 1 giga e 4 circa.

Per l'export mysqldump, per l'import mysql < dump.sql. La cosa piu' semplice di questo mondo :)

pmalerba
03-03-2006, 11:34
Spetta spetta..fammi capire meglio! Perdona la newbbiezza! Mi sto informando meglio e ho trovato qualche info sull'accesso all'host via telnet. e' dalla shell che si danno questi comandi a sql? Sbaglio? Il problema è proprio che non riesco ad accedere all'host via telnet!

Me la daresti una mano? Te ne sarei grato!

pmalerba
03-03-2006, 12:21
... Il problema è proprio che non riesco ad accedere all'host via telnet! ...

Confermo...non riesco ad accedere all'host via telnet o ssh sulle porte 22 e 23.
Ho contattato il provider per maggiori info...staremo a vedere. Cmq in generale, vediamo se ho capito bene. In questi casi si provede così: si "butta" il file sql da importare sull'host via ftp. Poi si accede via ssh o telnet all'host e da li si passano i comandi a mysql per importare il nuovo db. Per grandi linee dovrebbe essere così giusto?

Cmq nel caso non dovessi avere l'accesso via ssh..avevo trovato tempo fa uno scriptino che ovviava a questo problema. Faceva l'mport di un db generato con il comando mysqldump. Avevo le traveggole? Oppure l'avevo trovato davvero?

Grazie per l'aiuto!

pmalerba
06-03-2006, 21:52
Girovagando sul web ho trovato questo script che dovrebbe servire a fare un import di un db sql generato con il comando mysql dump caricato in una cartella del proprio spazio ftp. Il problema è che non riesco a farlo funzionare.
Questo è lo script trovato sul forum di html.it:

<?php
// connessione a mysql
$host="localhost";
$utente="user";
$passwut="password";
// connessione al db
$link=mysql_connect($host,$utente,$passw
ut);
if(!$link) die("Impossibile connettersi al database MYSQL. <b>Errore</b>: ".mysql_error());
$file_db="/var/tmp/dumpdb.sql"; // file proveniente dal dump (ometto la parte di upload per semplificare lo script)
$db_name="NOME_DB";
if(file_exists($file_db)){
// cancellazione vecchio db
$query1="DROP DATABASE $db_name";
mysql_query($query1,$link) or die("Impossibile eseguire la query <b>$query1</b><br><b>Errore</b>:".mysql_error());
// creazione nuovo db
$query2="CREATE DATABASE $db_name";
mysql_query($query2,$link) or die("Impossibile eseguire la query <b>$query2</b><br><b>Errore</b>:".mysql_error());
$system_query="mysql --user=".$utente." --password=".$passwut." ".$db_name." < ".$file_db;
// $percorso_mysql="C:/Programmi/mysql/MySQL Server 4.1/bin"; // percorso mysql: solo per windows (cambiare se necessario). Commentare su linux
// DUMP
// system("\"$percorso_mysql\$system_query"); // per windows. commentare se su linux
$sr=system( $system_query ); // per linux. commentare se su win
print "<p>Database aggiornato! $sr</p>";
print "<p>".$system_query."</p>";
}
else print "file non presente";
?>

Quello che non ho capito è la parte in cui dice:

/ $percorso_mysql="C:/Programmi/mysql/MySQL Server 4.1/bin"; // percorso mysql: solo per windows (cambiare se necessario). Commentare su linux
// DUMP
// system("\"$percorso_mysql\$system_query"); // per windows. commentare se su linux
$sr=system( $system_query ); // per linux. commentare se su win

E poi io via ftp non ho la cartella /var/tmp/ che dovrebbe contenere il backup del file sql come si evince da qui:

$file_db="/var/tmp/dumpdb.sql"; // file proveniente dal dump (ometto la parte di upload per semplificare lo script)

Ho provato a modificare il percorso facendolo puntare ad un altra cartella del mio host tipo /host/home/public_html/database

Infatti in messaggio è ottengo è : file non presente

Qualcuno mi aiuta a farlo funzionare?

Emyl
10-03-2006, 21:48
Scusami mi ero perso l'evoluzione del thread :)

Al di la' del fatto che ti funzioni o meno, il problema degli script lanciati dal browser e' il timeout di php/apache/entrambi.

Un import di un db anche di 20/30Mb difficilmente finira' in tempo, percio' o lo dividi in piu' parti oppure ti fai aprire ssh.

E comunque l'import via web lo si puo' fare anche da phpmyadmin (immagino tu ne abbia accesso se sei in hosting)

Ciao