Clone database MySQL

Ho database su un server con 120 tavole.

Voglio clonare l’intero database con un nuovo nome db e i dati copiati.

C’è un modo efficace per fare questo?

InformationsquelleAutor Vinod HC | 2011-04-05

 

6 Replies
  1. 95
    $ mysqldump yourFirstDatabase -u user -ppassword > yourDatabase.sql
    $ mysql yourSecondDatabase -u user -ppassword < yourDatabase.sql
    • Questo è veramente bello e facile. Grazie!
    • Probabilmente ovvia per la maggior parte, ma ho perso le prime volte che ho provato. Questo dovrebbe essere fatto da un normale riga di comando, non dal prompt di mysql. Inoltre, si potrebbe desiderare di aggiungere “-uroot” o qualunque sia il tuo nome utente è, subito dopo il “mysqldump” (linea 1) e dopo il “mysql” (linea 2).
    • Voterei questa risposta, se e ‘ incluso anche il utente/password opzione della riga di comando
    • Io, come la mia modifica.
    • Credo che -ppassword è la stessa --password=<password> (non so che opzioni di comando)… quindi, ecco il mio voto 😉
    • Va notato che questa non creare il nuovo Database. Innanzitutto è necessario creare un nuovo Database (in questo esempio ‘yourSecondDatabase’ ) e quindi eseguire i comandi di cui sopra.
    • Mi sento come questo è una caratteristica mancante in Mysql. Sarebbe comodo in tante occasioni.
    • grazie per il tuo commento. Non ho capito questo NON era un prompt di mysql. Ora che so che, user647772 la risposta sta lavorando per me… E con l’aggiunta di kevin-bradshaw commento.

  2. 11

    Accettato come risposta, ma senza .i file sql:

    mysqldump sourcedb -u <USERNAME> -p<PASS> | mysql destdb -u <USERNAME> -p<PASS>
  3. 5

    In caso di utilizzo di phpMyAdmin

    1. Selezionare il database che si desidera copiare (cliccando sul database da phpMyAdmin schermata home).
    2. Una volta all’interno del database, selezionare la scheda di Operazioni.
    3. Scorrere fino alla sezione in cui si dice “Copia del database per:”
    4. Digitare il nome del nuovo database.
    5. Selezionare “struttura e dati” per copiare il tutto. In alternativa, è possibile selezionare una Struttura “a solo” se si desidera che le colonne, ma non i dati.
    6. Selezionare la casella “CREA DATABASE prima di eseguire la copia” per creare un nuovo database.
    7. Controllare la casella “Aggiungi valore AUTO_INCREMENT.”
    8. Fare clic sul pulsante ” Go ” per procedere.
    • Proprio quello che cercavo.
  4. 3

    C’è mysqldbcopy strumento da MySQL pacchetto di Utilità.
    http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcopy.html

    • Ho provato ad usare il mysqldbcopy utilità, ma ha ottenuto tutti i tipi di problemi: e ‘ richiesto un sacco di privilegi (come SUPER privilegi ad un certo punto!), non si riescono a copiare le chiavi esterne, etc. Alla fine ho ripiegato per il mysqldump soluzione è molto più semplice e migliore.
  5. -1
    $newdb = (date('Y')-1);
    $mysqli->query("DROP DATABASE `".$newdb."`;");
    $mysqli->query("CREATE DATABASE `".$newdb."`;");
    
    $query = "
    SELECT
    TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA LIKE 'rds'
    ";
    $result = $mysqli->query($query)->fetch_all(MYSQLI_ASSOC);
    foreach($result as $val) {
        echo $val['TABLE_NAME'].PHP_EOL;
        $mysqli->query("CREATE TABLE `".$newdb."`.`".$val['TABLE_NAME']."` LIKE rds.`".$val['TABLE_NAME']."`");
        $mysqli->query("INSERT `".$newdb."`.`".$val['TABLE_NAME']."` SELECT * FROM rds.`".$val['TABLE_NAME']."`");
    }

Lascia un commento