una tabla pagina otra formulario duplicar datos crear copiar consola conectar con columna mysql database linux

mysql - pagina - duplicar tabla sql



Duplicar toda la base de datos MySQL (8)

A veces hago un mysqldump y canalizo la salida en otro comando mysql para importarlo en una base de datos diferente.

mysqldump --add-drop-table -u wordpress -p wordpress | mysql -u wordpress -p wordpress_backup

¿Es posible duplicar una base de datos MySQL completa en un servidor Linux?

Sé que puedo usar exportar e importar pero la base de datos original es> 25MB, por lo que no es ideal.

¿Es posible usar mysqldump o duplicar directamente los archivos de la base de datos?


Aquí hay un archivo de Windows Bat que escribí que combina las sugerencias de Vincent y Pauls. Solicita al usuario los nombres de origen y destino.

Simplemente modifique las variables en la parte superior para establecer las rutas adecuadas a sus ejecutables / puertos de base de datos.

:: Creates a copy of a database with a different name. :: User is prompted for Src and destination name. :: Fair Warning: passwords are passed in on the cmd line, modify the script with -p instead if security is an issue. :: Uncomment the rem''d out lines if you want script to prompt for database username, password, etc. :: See also: http://.com/questions/1887964/duplicate-entire-mysql-database @set MYSQL_HOME="C:/sugarcrm/mysql/bin" @set mysqldump_exec=%MYSQL_HOME%/mysqldump @set mysql_exec=%MYSQL_HOME%/mysql @set SRC_PORT=3306 @set DEST_PORT=3306 @set USERNAME=TODO_USERNAME @set PASSWORD=TODO_PASSWORD :: COMMENT any of the 4 lines below if you don''t want to be prompted for these each time and use defaults above. @SET /p USERNAME=Enter database username: @SET /p PASSWORD=Enter database password: @SET /p SRC_PORT=Enter SRC database port (usually 3306): @SET /p DEST_PORT=Enter DEST database port: %MYSQL_HOME%/mysql --user=%USERNAME% --password=%PASSWORD% --port=%DEST_PORT% --execute="show databases;" @IF NOT "%ERRORLEVEL%" == "0" GOTO ExitScript @SET /p SRC_DB=What is the name of the SRC Database: @SET /p DEST_DB=What is the name for the destination database (that will be created): %mysql_exec% --user=%USERNAME% --password=%PASSWORD% --port=%DEST_PORT% --execute="create database %DEST_DB%;" %mysqldump_exec% --add-drop-table --user=%USERNAME% --password=%PASSWORD% --port=%SRC_PORT% %SRC_DB% | %mysql_exec% --user=%USERNAME% --password=%PASSWORD% --port=%DEST_PORT% %DEST_DB% @echo SUCCESSFUL!!! @GOTO ExitSuccess :ExitScript @echo "Failed to copy database" :ExitSuccess

Muestra de salida:

C:/sugarcrm_backups/SCRIPTS>copy_db.bat Enter database username: root Enter database password: MyPassword Enter SRC database port (usually 3306): 3308 Enter DEST database port: 3308 C:/sugarcrm_backups/SCRIPTS>"C:/sugarcrm/mysql/bin"/mysql --user=root --password=MyPassword --port=3308 --execute="show databases;" +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sugarcrm_550_pro | | sugarcrm_550_ce | | sugarcrm_640_pro | | sugarcrm_640_ce | +--------------------+ What is the name of the SRC Database: sugarcrm What is the name for the destination database (that will be created): sugarcrm_640_ce C:/sugarcrm_backups/SCRIPTS>"C:/sugarcrm/mysql/bin"/mysql --user=root --password=MyPassword --port=3308 --execute="create database sugarcrm_640_ce;" C:/sugarcrm_backups/SCRIPTS>"C:/sugarcrm/mysql/bin"/mysqldump --add-drop-table --user=root --password=MyPassword --port=3308 sugarcrm | "C:/sugarcrm/mysql/bin"/mysql --user=root --password=MyPassword --port=3308 sugarcrm_640_ce SUCCESSFUL!!!


Cree un archivo mysqldump en el sistema que tenga los datos y use pipe para proporcionar este archivo mysqldump como una entrada al nuevo sistema. El nuevo sistema se puede conectar usando el comando ssh.

mysqldump -u user -p''password'' db-name | ssh user@some_far_place.com mysql -u user -p''password'' db-name

no hay espacio entre -p [contraseña]


Esto funcionó para mí con el símbolo del sistema, desde OUTSIDE mysql shell:

# mysqldump -u root -p password db1 > dump.sql # mysqladmin -u root -p password create db2 # mysql -u root -p password db2 < dump.sql

Esto me parece la mejor manera. Si comprime "dump.sql", puede almacenarlo como una copia de seguridad comprimida. ¡Guay! Para una base de datos de 1 GB con tablas Innodb, alrededor de un minuto para crear "dump.sql", y unos tres minutos para volcar datos en el nuevo DB db2.

La copia directa del directorio db hole (mysql / data / db1) no funcionó para mí, supongo que debido a las tablas InnoDB.


Esto no funcionará para InnoDB. Utilice esta solución solo si está intentando copiar las bases de datos MyISAM.

Si bloquear las tablas durante la copia de seguridad y, posiblemente, pausar MySQL durante la importación de la base de datos es aceptable, mysqlhotcopy puede funcionar más rápido.

P.ej

Apoyo:

# mysqlhotcopy -u root -p password db_name /path/to/backup/directory

Restaurar:

cp /path/to/backup/directory/* /var/lib/mysql/db_name

mysqlhotcopy también puede transferir archivos a través de SSH (scp) y, posiblemente, directamente al directorio duplicado de la base de datos.

P.ej

# mysqlhotcopy -u root -p password db_name /var/lib/mysql/duplicate_db_name


Para servidor remoto

mysqldump mydbname | ssh host2 "mysql mydbcopy"

Para el servidor local

mysqldump mydbname | mysql mydbcopy


Primero crea la base de datos duplicada:

CREATE DATABASE duplicateddb;

Asegúrese de que el usuario y los permisos estén todos en su lugar y:

mysqldump -u admin -p originaldb | mysql -u backup -pPassword duplicateddb;


Hacer una copia de una base de datos

# mysqldump -u root -p password db1 > dump.sql # mysqladmin -u root -p password create db2 # mysql -u root -p password db2 < dump.sql