Redirigir la salida de mysqldump a scp

13

Trabajé con un Linux Pro hace años que hizo este ingenioso truco. Podría hacer un mysqldump pero redirigir la salida a una conexión scp / ssh en lugar de escribir en el disco . Utilizamos este silencio un poco donde solía trabajar, pero ya no recuerdo cómo hacerlo.

Ahora me enfrento al problema de que mi disco duro en mi servidor está en sus últimas etapas y, para fines intensivos, está montado permanentemente como solo lectura.

Esperaba utilizar este truco de la línea de comandos para poder hacer una copia de seguridad de mis bases de datos en un nuevo servidor, ya que escribir el volcado en el disco local y transferirlo está claramente fuera de discusión.

¿Es realmente posible este pequeño truco? Si es así, ¿cuál es la sintaxis?

Desde entonces me di cuenta debido al problema del sistema de archivos de solo lectura que tengo, ni siquiera puedo conectarme a mysql para hacer el volcado. Pero su retroalimentación fue excelente y, con suerte, será útil para otra persona en el futuro

xzyfer
fuente
1
"intenciones y propósitos"
Ignacio Vázquez-Abrams

Respuestas:

11

mysqldump nombrebd | ssh [email protected] "mysql -D nombrebd"

eso debería funcionar :-)

Configure las claves entre los sistemas también para que pueda hacerlo sin necesidad de iniciar sesión / pasar :-)

Glenn Kelley
fuente
Este es realmente ingenioso, canalizando el volcado directamente en mysql en el servidor remoto, esencialmente clonar la base de datos es un comando. ¿Estoy en lo correcto?
xzyfer
1
lo tienes ;-) por supuesto, siempre puedes simplemente empujar a un archivo, sin embargo, me gustan los volcados, ya que te permiten pasar a una copia de seguridad si es necesario :-) en tiempo real simplemente cambiando una IP en tus archivos de configuración ... ENORME beneficio. Hacemos esto de nuevo en nuestras cosas de linóleo todo el tiempo
Glenn Kelley
Siento que tal vez podría haber algunos problemas de amortiguación de tuberías aquí.
Phil Hollenback
10
mysqldump ... | ssh ... "cat > out.dmp"
Ignacio Vazquez-Abrams
fuente
Este funcionó muy bien para mí. Configuré la autenticación de clave pública en mi computadora portátil Mac OS X y ejecuté mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" exactamente lo que necesitaba.
Harperville
2

Me gusta la respuesta de @ GlennKelley, pero quería señalar lo siguiente:

Teníamos una base de datos de 450 GB, pero solo 500 GB aprovisionados en el host. No pudimos exportar localmente, así que exportamos de forma remota. Validamos la salida y hubo cientos de instancias en las que la salida estaba corrupta debido a problemas de almacenamiento en búfer.

La mejor solución aquí, es, desde el host de destino donde desea que termine su volcado, ejecute mysqldumppero use la -hopción para host. Apunte el host al servidor MySQL y exporte los datos usando a >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
Mike Mackintosh
fuente