Quiero mantener una copia de seguridad de todas mis bases de datos MySQL. Tengo más de 100 bases de datos MySQL. Quiero exportarlos todos al mismo tiempo y nuevamente importarlos a mi servidor MySQL al mismo tiempo. ¿Cómo puedo hacer eso?
mysql
database-backups
mysql-backup
Nuevo Usuario
fuente
fuente
Otra solución:
Realiza una copia de seguridad de cada base de datos en un archivo diferente
fuente
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[línea siguiente]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
y elimine las líneasif
yfi
completamente. En la variableExcludeDatabases
se almacenan los nombres de las bases de datos que no se deben volcar [normalmente las bases de datos del sistema].-Bse "show databases"
para evitar la salida de formato adicional y, por lo tanto, puede eliminar| tr -d "| " | grep -v Database
. En mi script de exportación, esta línea esdatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
entre la "c" y la "h" de la palabra "esquema" . Esto rompe la copia y pegando ese bit. Más discusión sobre este tema aquí: meta.stackexchange.com/questions/170970/…Todas las respuestas que veo en esta pregunta pueden tener problemas con los juegos de caracteres en algunas bases de datos debido al problema de redirigir la salida
mysqldump
a un archivo dentro del operador de shell>
.Para resolver este problema, debe hacer la copia de seguridad con un comando como este
Para hacer una buena restauración de BD sin ningún problema con los juegos de caracteres. Obviamente, puede cambiar el conjunto de caracteres predeterminado según lo necesite.
fuente
En base a estas respuestas, hice un script que respalda todas las bases de datos en archivos separados, pero luego los comprime en un archivo con la fecha como nombre.
Esto no pedirá contraseña, se puede usar en cron. Para almacenar la contraseña,
.my.cnf
verifique esta respuesta https://serverfault.com/a/143587/62749Hecho también con comentarios para aquellos que no están muy familiarizados con los scripts de bash.
fuente
¿Por qué analizar la salida formateada mientras el comando mysql puede hacer directamente lo que quieres?
Enumera los nombres de las bases de datos y solo esto.
fuente
Tenga cuidado al exportar e importar a diferentes versiones de MySQL, ya que las tablas mysql pueden tener diferentes columnas. Los privilegios de concesión pueden no funcionar si no tiene suerte. Creé este script (mysql_export_grants.sql) para volcar las concesiones para importar a la nueva base de datos, por si acaso:
fuente
Cuando está volcando toda la base de datos. Obviamente está teniendo grandes datos. Entonces puede preferir a continuación para mejorar:
Crear copia de seguridad:
Si error
- Advertencia: omitiendo los datos de la tabla mysql.event. Especifique la opción --events explícitamente.
Utilizar:
Restaurar copia de seguridad:
Espero que ayude :)
fuente
Escribí este comentario hace más de 4 años y decidí responderlo.
El script de jruzafa se puede simplificar un poco:
Nota:
ExcludeDatabases
fuente
mysqldump -uroot -proot --todas las bases de datos> allDB.sql
nota: -u "tu nombre de usuario" -p "tu contraseña"
fuente
Exportar todas las bases de datos en Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
O
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
fuente