Duplicar toda la Base de Datos MySQL
¿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, así que eso no es ideal.
¿Es posible usar mysqldump o duplicar directamente los archivos de la base de datos?
8 answers
Primero cree 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;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-21 13:21:56
Al servidor remoto
mysqldump mydbname | ssh host2 "mysql mydbcopy"
Al servidor local
mysqldump mydbname | mysql mydbcopy
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-11 13:12:09
A veces hago un mysqldump y canalizo la salida a otro comando mysql para importarla a una base de datos diferente.
mysqldump --add-drop-table -u wordpress -p wordpress | mysql -u wordpress -p wordpress_backup
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-11 13:10:22
Cree un archivo mysqldump en el sistema que tenga los datos y use pipe para dar este archivo mysqldump como 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]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-07 09:52:09
Aquí hay un archivo de Windows bat que escribí que combina Vincent y Pauls sugerencias. 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://stackoverflow.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
Salida de muestra:
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!!!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-07 02:28:38
Esto no funcionará para InnoDB. Utilice esta solución solo si está intentando copiar bases de datos MyISAM.
Si es aceptable bloquear las tablas durante la copia de seguridad y, posiblemente, pausar MySQL durante la importación de la base de datos, mysqlhotcopy puede funcionar más rápido.
Por ejemplo
Copia de seguridad:
# 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 a la base de datos duplicada directorio.
Por ejemplo
# mysqlhotcopy -u root -p password db_name /var/lib/mysql/duplicate_db_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-04 13:19:46
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-19 08:53:23
Esto funcionó para mí con el símbolo del sistema, desde FUERA de 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 " volcado.sql " puede simplemente almacenarlo como una copia de seguridad comprimida. ¡Órale! Para una base de datos de 1 GB con tablas Innodb, aproximadamente un minuto para crear " volcado.sql", y unos tres minutos para volcar los datos en la nueva DB db2.
Copiar directamente el directorio hole db (mysql/data/db1) no funcionó para mí, supongo que debido a las tablas InnoDB.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-18 18:31:13