Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766

    Script per esportare tutti i db di mysql in un colpo

    Esiste uno script che mi esporta in un colpo tutti i database che ho in mysql con relative strutture e dati?
    Visto che ne sono tanti mi serviva uno script che facesse questo in un solo click.

    Potete aiutarmi?
    Per ora sto usando phpmyadmin, ma come detto prima non è veloce come sistema

    Inoltre, e forse puo' servire a qualcuno, utilizzo un server dedicato e i database sono abbastanza grandi

  2. #2
    ci provo eh.....potrebbe anche essere una cavolata...ma intanti ci provo, hai visto mai.

    codice:
    <?php
    
    set_time_limit(0); //Se i db sono grossi eviti il timeout dello script, fallo anche sulla config di apache
    mysql_connect("localhost", "root", "");
    $sql = "SHOW DATABASES;";
    $rst = mysql_query($sql);
    while ($r = mysql_fetch_array($rst)) {
        $db = $r[0];
        exec("mysqldump $db > /catella_di_esportazione/$db.sql");
    }
    
    ?>
    se non funziona prova a passare il path completo di mysqldump, ad esempio:
    exec("/usr/bin/mysqldump $db > /catella_di_esportazione/$db.sql);
    sostituisci /usr/bin/mysqldump con il tuo reale persorso.

    potrebbero anche esserci problemi di permessi utente per eseguire i comandi unix da php...verifica.

    ricordo che per utilizzare shell_exec in una mia applicazione dovettero intervenire sul server per dare i permessi.

    fai sapere se puo' andare e se funziona.
    ciao

  3. #3
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da yqy
    ci provo eh.....potrebbe anche essere una cavolata...ma intanti ci provo, hai visto mai.

    codice:
    <?php
    
    set_time_limit(0); //Se i db sono grossi eviti il timeout dello script, fallo anche sulla config di apache
    mysql_connect("localhost", "root", "");
    $sql = "SHOW DATABASES;";
    $rst = mysql_query($sql);
    while ($r = mysql_fetch_array($rst)) {
        $db = $r[0];
        exec("mysqldump $db > /catella_di_esportazione/$db.sql");
    }
    
    ?>
    se non funziona prova a passare il path completo di mysqldump, ad esempio:
    exec("/usr/bin/mysqldump $db > /catella_di_esportazione/$db.sql);
    sostituisci /usr/bin/mysqldump con il tuo reale persorso.

    potrebbero anche esserci problemi di permessi utente per eseguire i comandi unix da php...verifica.

    ricordo che per utilizzare shell_exec in una mia applicazione dovettero intervenire sul server per dare i permessi.

    fai sapere se puo' andare e se funziona.
    ciao
    ma questo mi fa esportare tutti i database o solo uno????
    Mi spiego, ho mysql centralizzato e quindi quando vado su phpmyadmin posso visualizzare tutti i database di tutti siti miei.
    Per questo ti chiedevo se me li fa esportare tutti o uno per volta!!

  4. #4
    Originariamente inviato da Tr|k`Tr4k
    ma questo mi fa esportare tutti i database o solo uno????
    tutti !
    uno per uno ti crea i dump dei files:
    database1 > database1.sql
    database2 > database2.sql
    ecc..ecc..

    ciao

  5. #5
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    ok
    mi spieghi solo come devo settare questo:
    Codice PHP:
    mysql_connect("localhost""root"""); 
    nel senso che io generalmente metto host, user e pass per collegarmi al database di un sito specifico
    qua essendo piu' database cosa devo mettere??
    Nome utente e password per entrare in phpmyadmin??

    e poi
    Codice PHP:
    exec("mysqldump $db > /catella_di_esportazione/$db.sql"); 
    che ci metto al posto di cartella di esportazione??
    cioe' il dump me lo fa in remoto oppure riesco a salvarmi tutto anche sul desktop del mio computer?

  6. #6
    Originariamente inviato da Tr|k`Tr4k
    ok
    mi spieghi solo come devo settare questo:
    Codice PHP:
    mysql_connect("localhost""root"""); 
    nel senso che io generalmente metto host, user e pass per collegarmi al database di un sito specifico
    qua essendo piu' database cosa devo mettere??
    Nome utente e password per entrare in phpmyadmin??
    localhost è il server dove risiedono i tuoi database, non un database.
    phpmyadmin lavora sullo stesso server, con piu database sulla stessa postazione.
    con "localhost" fai riferimento al MySQL server sul tuo server locale

    e poi
    Codice PHP:
    exec("mysqldump $db > /catella_di_esportazione/$db.sql"); 
    che ci metto al posto di cartella di esportazione??
    cioe' il dump me lo fa in remoto oppure riesco a salvarmi tutto anche sul desktop del mio computer?
    lavora tutto sul server, niente salvataggi nel tuo desktop.
    se il tuo desktop (il tuo pc) fa da server...stai a cavallo

    hai accesso al server in FTP o tramite console?
    o sei su un hosting come ad esempio aruba?
    se sei su aruba (o simili) quindi puoi SOLO E PER FORZA usare phpmyadmin, con la procedura che utilizzi ora. niente programmino da un solo clic e via per capirci.

    ciao

  7. #7
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    Originariamente inviato da yqy
    localhost è il server dove risiedono i tuoi database, non un database.
    phpmyadmin lavora sullo stesso server, con piu database sulla stessa postazione.
    con "localhost" fai riferimento al MySQL server sul tuo server locale


    lavora tutto sul server, niente salvataggi nel tuo desktop.
    se il tuo desktop (il tuo pc) fa da server...stai a cavallo

    hai accesso al server in FTP o tramite console?
    o sei su un hosting come ad esempio aruba?
    se sei su aruba (o simili) quindi puoi SOLO E PER FORZA usare phpmyadmin, con la procedura che utilizzi ora. niente programmino da un solo clic e via per capirci.

    ciao
    si ok, ma non ho capito qua come devo settarlo:

    mysql_connect("localhost", "root", "");
    lascio cosi' senza mettere niente a posto di root e della password (suppongo che tra quelle virgolette ci vada la password)
    Non sono su aruba, ho un mio server dedicato, quindi dovrei mettere un percorso tipo

    Poi quest'altra riga dovrei scriverla cosi? :
    exec("mysqldump $db > /var/user/siti/nomesito.it/httpdocs/cartella_dove_salvare_il_file/$db.sql");

  8. #8
    Utente di HTML.it L'avatar di Tr|k`Tr4k
    Registrato dal
    Jul 2002
    Messaggi
    2,766
    up

  9. #9
    Oggi mi sono trovato lo stesso problema e h trovato la soluzione e coretto un po lo scrpt precedente:

    Codice PHP:

    <?php

    set_time_limit
    (0); //Se i db sono grossi eviti il timeout dello script, fallo anche sulla config di apache
    mysql_connect("localhost""root""");
    $sql "SHOW DATABASES;";
    $rst mysql_query($sql);
    while (
    $r mysql_fetch_array($rst)) {
        
    $db $r[0];
        
    exec("[perscorso]/mysqldump -u[utente] -p [password] $db > /catella_di_esportazione/$db.sql");
    }

    ?>

    Quello appena postato fa la copia di tutte le tabelle di un database e crea un file.sql per ognuna.

    ora vediamo per creare un unico file .sql con il backup completo di tutte le tabelle

    Codice PHP:

    <?php
        exec
    ("[perscorso]/mysqldump -u[utente] -p [password]  --all-database > server.sql");
    ?>
    Ed ora vediamo come fare il backup di diversi database


    Su piu file ... (uno per tabella )
    Codice PHP:
    <?php

    set_time_limit
    (0); 
    mysql_connect("localhost""root""psw");
    $sql "SHOW DATABASES;";
    $rst mysql_query($sql);
    while (
    $r mysql_fetch_array($rst)) 
    {
        
    $db $r[0];
        
    exec("[perscorso]/mysqldump -u[utente] -p [password] $db > /catella_di_esportazione/$db.sql");
    }

    mysql_connect("localhost2""root2""psw2");
    $sql "SHOW DATABASES;";
    $rst mysql_query($sql);
    while (
    $r mysql_fetch_array($rst)) 
    {
        
    $db $r[0];
        
    exec("[perscorso]/mysqldump -u[utente] -p [password] $db > /catella_di_esportazione/$db.sql");
    }

    ?>
    ed ora su un unico file ogni database

    Codice PHP:
    <?php

    set_time_limit
    (0); 
    mysql_connect("localhost""root""psw");
    $sql "SHOW DATABASES;";
    $rst mysql_query($sql);
    while (
    $r mysql_fetch_array($rst)) 
    {
        
    $db $r[0];
       
    exec("[perscorso]/mysqldump -u[utente] -p [password]  --all-database > server.sql");
    }

    mysql_connect("localhost2""root2""psw2");
    $sql "SHOW DATABASES;";
    $rst mysql_query($sql);
    while (
    $r mysql_fetch_array($rst)) 
    {
        
    $db2 $r[0];
        
    exec("[perscorso]/mysqldump -u[utente2] -p [password2]  --all-database > server2.sql");
    }

    ?>
    3/6/2003 è morto l'angelo della mia vita..
    www.markwebinformatica.net
    My BLOG

  10. #10
    io ho il problema inverso, ho già il file .sql e vorrei installarlo direttamente dal web all'apertura di una pagina, è possibile?
    Prima o poi anch'io vi insegnerò qualcosa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.