Descargar el volcado de MySQL desde la línea de comandos

306

Me estoy alejando de Linode porque no tengo las habilidades necesarias de administrador de sistemas Linux; Antes de completar la transición a un servicio más amigable para los novatos, necesito descargar el contenido de una base de datos MySQL. ¿Hay alguna manera de hacer esto desde la línea de comando?

Phillip Copley
fuente
mysqldump es lo que estás buscando.
Faruk Sahin
1
@AZinkey Creo que encontrarás la respuesta aceptada de esa copia de la publicación y pegué el contenido de mi respuesta (palabra por palabra) en la primera parte de su respuesta meses después ...
nickhar

Respuestas:

656

Puede lograr esto utilizando la función de línea de comandos mysqldump .

Por ejemplo:

Si es un DB completo, entonces:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Si se trata de todos los DB, entonces:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

Si se trata de tablas específicas dentro de un DB, entonces:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Incluso puede llegar a autocomprimir la salida usando gzip (si su base de datos es muy grande):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Si desea hacer esto de forma remota y tiene acceso al servidor en cuestión, lo siguiente funcionaría (suponiendo que el servidor MySQL esté en el puerto 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Debería colocar el .sqlarchivo en la carpeta desde la que ejecuta la línea de comandos.

EDITAR: actualizado para evitar la inclusión de contraseñas en los comandos de la CLI, use la -popción sin la contraseña. Se lo pedirá y no lo grabará.

nickhar
fuente
1
Su respuesta junto con stackoverflow.com/questions/2989724/… - Debería hacer lo que está pidiendo, ya que sí incluyó que necesita descargarlo. Es eso o un wgeto scpserá necesario para recuperar dicho archivo una vez construido.
Zak
47
Pequeña nota de que es más seguro no ingresar la contraseña directamente en el comando. Solo usar la opción -p sin contraseña solicitará la contraseña cuando se ejecute, de esa manera la contraseña no se almacena en su historial de comandos (y posiblemente se recupere). Entonces, usando el siguiente comando: mysqldump -P 3306 -h [dirección_ip] -u [uname] -p nombre_bd> db_backup.sql
Pitt
3
En lugar de usar >para guardar, prefiero usar -rpara evitar problemas con caracteres extranjeros, o esa pesadilla con respecto a problemas de codificación, como se indica en este artículo .
Pathros
1
Para bases de datos grandes / actualizadas activamente, use el parámetro --single-transaction. Esto crea un punto de control y ayuda a garantizar la coherencia. Además, utilice modificadores --rutinas - activadores, si ha almacenado procedimientos / funciones / activadores
accord_guy
1
Deberías usar en --result-file=db_backup.sqllugar de > db_backup.sql. Cita de la documentación de MySQL : "UTF-16 no está permitido como un conjunto de caracteres de conexión (consulte Conjuntos de caracteres de clientes no permitidos ), por lo que el archivo de volcado no se cargará correctamente. Para solucionar este problema, use la --result-fileopción, que crea la salida en Formato ASCII ".
Martin Braun
13

En las últimas versiones de mysql, al menos en la mía, no puede poner su pase directamente en el comando.

Tienes que correr:

mysqldump -u [uname] -p db_name > db_backup.sql

y luego le pedirá la contraseña.

Lorenzo Lerate
fuente
2
eliminar el espacio entre la -popción y la contraseña real funciona
y2k-shubham el
8

Si descarga desde un servidor remoto, aquí hay un ejemplo simple:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

La -p indica que ingresará una contraseña, no se relaciona con el nombre_bd. Después de ingresar el comando, se le solicitará la contraseña. Escríbelo y presiona enter.

Andrés
fuente
5

En Windows, debe especificar el contenedor mysql donde reside mysqldump.exe.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

guárdelo en un archivo de texto como backup.cmd

drooh
fuente
o generalmente tener mysql en su variable PATH para que pueda ejecutar mysqlcomandos desde cualquier lugar sin estar en su directorio.
behz4d
2

Abra el símbolo del sistema y escriba directamente este comando. No entres en mysql y luego escribe este comando.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Nithin Raja
fuente
1
Copiar la primera línea de código de la respuesta aceptada en una pregunta de 5 años es una estrategia audaz para el cultivo de karma.
Phillip Copley
Probé este comando MySQLdump dentro del indicador de Mysql y no funcionó. así que solo respondí :-)
Nithin Raja
2

Vaya al directorio de instalación de MySQL y abra cmd desde allí. Luego ejecute el siguiente comando para obtener una copia de seguridad de su base de datos.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
usuario8376416
fuente
1

Simplemente escriba mysqldumpo mysqldump --helpen su cmd mostraráhow to use

Aquí está mi resultado de cmd

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Suganthan Madhavan Pillai
fuente
1

Si está ejecutando MySQL que no sea el puerto predeterminado:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql
Anand Raj
fuente
1

Para aquellos que quieran escribir contraseña dentro de la línea de comando. Es posible, pero se recomienda pasarlo entre comillas para que el carácter especial no cause ningún problema.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Tara Prasad Gurung
fuente
-1

Use esto Si tiene la base de datos con el nombre archiedb, use esto mysql -p --databases archiedb> /home/database_backup.sql

Suponiendo que se trata de Linux, elija dónde se guardará el archivo de copia de seguridad.

Nabaasa Archie
fuente
shell> mysqldump -p mypassword --databases mydb> /home/backup.sql.
Nabaasa Archie
-1

Para usuarios de Windows, puede ir a su carpeta mysql para ejecutar el comando

p.ej

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql
Narayan P
fuente
1
La pregunta sugería que MySQL se está ejecutando en Linux.
gmauch
-1

Nota: Este paso solo viene después de volcar su archivo MySQL (que la mayoría de las respuestas anteriores han abordado).

Se supone que tiene dicho archivo de volcado en su servidor remoto y ahora desea llevarlo a su computadora local.

Para descargar el .sqlarchivo volcado de su servidor remoto a su computadora local, haga

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Ruto Collins
fuente