Clon de base de datos MySQL

He base de datos en un servidor con 120 tablas.

Quiero clonar toda la base de datos con un nuevo nombre de base y los datos copiados.

¿Hay una manera eficaz de hacer esto?

InformationsquelleAutor Vinod HC | 2011-04-05

6 Kommentare

  1. 96
    $ mysqldump yourFirstDatabase -u user -ppassword > yourDatabase.sql
    $ mysql yourSecondDatabase -u user -ppassword < yourDatabase.sql
    • Esto es realmente agradable y fácil. Gracias!
    • Probablemente obvio para la mayoría, pero se me perdió el primer par de veces que he probado. Esto se debe hacer de los regulares de la línea de comandos, no de los comandos de mysql. También, es posible que desee agregar «-uroot» o cualquiera que sea tu nombre de usuario es, justo después de la «mysqldump» (1ª línea) y después de la «mysql» (2ª línea).
    • Yo iba a votar esta respuesta, si esto también incluye la usuario/contraseña opción de línea de comandos
    • Supongo que -ppassword es el mismo que --password=<password> (no sé que opciones de comando)… así que aquí está mi voto 😉
    • Cabe señalar que esta no es la de crear la nueva Base de datos. Primero necesita crear la nueva Base de datos (en este ejemplo ‘yourSecondDatabase’ ) y, a continuación, ejecute los comandos anteriores.
    • Siento que esta es una característica que falta en Mysql. Esto sería muy útil en muchas ocasiones.
    • gracias por tu comentario. No me di cuenta que esto NO era en una de comandos de mysql. Ahora que sé que, user647772 la respuesta es trabajo para mí… Y con la incorporación de kevin-bradshaw comentario.

  2. 12

    Aceptado como respuesta, pero sin .archivos de sql:

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

    En el caso de utilizar phpMyAdmin

    1. Seleccione la base de datos que desea copiar haciendo clic en la base de datos desde el phpMyAdmin de la pantalla de inicio).
    2. Una vez dentro de la base de datos, seleccione la pestaña Operaciones.
    3. Desplácese hacia abajo hasta la sección donde dice «Copiar la base de datos:»
    4. Escriba el nombre de la nueva base de datos.
    5. Seleccione «estructura de datos y» copiar todo. Alternativamente, usted puede seleccionar la «Estructura » sólo» si desea que las columnas, pero no los datos.
    6. Marque la casilla «CREAR BASE de datos antes de la copia» para crear una nueva base de datos.
    7. Marque la casilla «Agregar valor AUTO_INCREMENT.»
    8. Haga clic en el botón adelante para continuar.
    • Justo lo que yo busco.
  4. 3

    Hay mysqldbcopy herramienta de MySQL, el paquete de Utilidades.
    http://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcopy.html

    • Traté de usar la mysqldbcopy utilidad, pero tiene todo tipo de problemas: requiere un montón de privilegios (como SUPER privilegios en algún momento!), no administrar a copiar las llaves extranjeras, etc. En la final cayó de espaldas a la mysqldump solución – que es mucho más simple y mejor.
  5. -2
    $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']."`");
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea