pasar - Clonación de una base de datos MySQL en la misma instancia de MySql
exportar base de datos mysql consola (14)
Usando las utilidades de MySQL
Las Utilidades MySQL contienen la bonita herramienta mysqldbcopy
que copia un DB por defecto incluyendo todos los objetos relacionados ("tablas, vistas, disparadores, eventos, procedimientos, funciones y concesiones de nivel de base de datos") y datos de un servidor de bases de datos al mismo o al otro servidor de bases de datos Hay muchas opciones disponibles para personalizar lo que realmente se copia.
Entonces, para responder la pregunta del OP:
mysqldbcopy /
--source=root:your_password@localhost /
--destination=root:your_password@localhost /
sitedb1:sitedb2
Me gustaría escribir un script que sitedb1
mi base de datos actual sitedb1
a sitedb2
en la misma instancia de base de datos mysql. Sé que puedo volcar el sitedb1 a un script sql:
mysqldump -u root -p sitedb1 >~/db_name.sql
y luego importarlo a sitedb2
. ¿Hay una manera más fácil, sin volcar la primera base de datos a un archivo sql?
Además de la respuesta de Greg.
la manera más fácil y rápida si el new_db_name
aún no existe.
echo "create database new_db_name" | mysql -u <user> -p <pwd>
mysqldump -u <user> -p <pwd> db_name | mysql -u <user> -p <pwd> new_db_name
Como dice el manual en Copia de bases de datos , puede canalizar el volcado directamente en el cliente mysql:
mysqldump db_name | mysql new_db_name
Si está utilizando MyISAM, puede copiar los archivos, pero yo no lo recomendaría. Es un poco dudoso.
Integrado de varias otras buenas respuestas
Ambos comandos mysqldump
y mysql
aceptan opciones para configurar detalles de conexión (y mucho más), como:
mysqldump -u <user name> --password=<pwd> <original db> | mysql -u <user name> -p <new db>
Además, si la nueva base de datos aún no existe, debe crearla de antemano (por ejemplo, con echo "create database new_db_name" | mysql -u <dbuser> -p
).
Es mejor usar el comando mysqldbcopy
para copiar la base de datos de uno a otro servidor o el mismo servidor.
mysqldbcopy --source=root:root@localhost --destination=root:root@localhost database-name:database-name-clone
Esta declaración se agregó en MySQL 5.1.7 pero se descubrió que era peligrosa y se eliminó en MySQL 5.1.23. Su objetivo era permitir la actualización de bases de datos pre-5.1 para utilizar la codificación implementada en 5.1 para mapear nombres de bases de datos a nombres de directorios de bases de datos. Sin embargo, el uso de esta declaración podría resultar en la pérdida de contenido de la base de datos, razón por la cual fue eliminada. No use RENAME DATABASE en versiones anteriores en las que esté presente.
Para realizar la tarea de actualizar los nombres de las bases de datos con la nueva codificación, utilice ALTER DATABASE db_name ACTUALIZAR NOMBRE DEL DIRECTORIO DE DATOS en su lugar: http://dev.mysql.com/doc/refman/5.1/en/alter-database.html
La mejor y más fácil manera es ingresar estos comandos en su terminal y establecer permisos para el usuario raíz. Funciona para mi..!
:~$> mysqldump -u root -p db1 > dump.sql
:~$> mysqladmin -u root -p create db2
:~$> mysql -u root -p db2 < dump.sql
Necesita ejecutar el comando desde la terminal / símbolo del sistema.
mysqldump -u <user name> -p <pwd> <original db> | mysql -u <user name> <pwd> <new db>
por ejemplo: mysqldump -u root test_db1 | mysql -u root test_db2
mysqldump -u root test_db1 | mysql -u root test_db2
Esto copia test_db1 a test_db2 y otorga el acceso a ''root'' @ ''localhost''
No creo que haya un método para hacer esto. Cuando PHPMyAdmin hace esto, vuelca el DB y lo vuelve a insertar con el nuevo nombre.
Podrías usar (en pseudocódigo):
FOREACH tbl IN db_a:
CREATE TABLE db_b.tbl LIKE db_a.tbl;
INSERT INTO db_b.tbl SELECT * FROM db_a.tbl;
La razón por la que no estoy usando la sintaxis CREATE TABLE ... SELECT ... es para conservar los índices. Por supuesto esto solo copia tablas. Las vistas y los procedimientos no se copian, aunque se puede hacer de la misma manera.
Ver CREAR TABLA .
Primero crea la base de datos duplicada:
CREATE DATABASE duplicateddb;
Asegúrese de que los permisos, etc. estén todos en su lugar y:
mysqldump -u admin -p originaldb | mysql -u backup -p password duplicateddb;
Puedes hacer algo como lo siguiente:
mysqldump -u[username] -p[password] database_name_for_clone
| mysql -u[username] -p[password] new_database_name
Una forma sencilla de hacerlo si instaló phpmyadmin :
Vaya a su base de datos, seleccione la pestaña "operación" y podrá ver el bloque "copiar base de datos a". Úselo y puede copiar la base de datos.
Use ''mysqldbcopy'' en la terminal. Este caso se menciona muy bien [MySQL] . Ejemplo: Inicie el comando cmd. Navegue a la carpeta bin de mySql Server. Activa la siguiente consulta:
C:/Program Files/MySQL/MySQL Server 5.7/bin>mysqldbcopy --source=root:root@localhost --destination=root:root@localhost master:master_clone
aquí estoy tratando de copiar mi ''master'' db a ''master_clone'' en localhost.
$ mysqladmin create DB_name -u DB_user --password=DB_pass && /
mysqldump -u DB_user --password=DB_pass DB_name | mysql -u DB_user --password=DB_pass -h DB_host DB_name