Me gustaría escribir un script de shell (actualmente usando bash) para hacer una copia de seguridad automática del contenido de varios esquemas MySQL en un servidor remoto. El servidor remoto está bloqueado para permitir solo el acceso SSH, por lo que tengo que crear un túnel SSH antes de ejecutar mysqldump
contra los diversos esquemas.
Puedo crear un túnel sin ningún problema, sin embargo, me gustaría poder cerrarlo automáticamente una vez que se haya completado el volcado de la base de datos.
Actualmente mi script está haciendo esto:
/usr/bin/ssh -T -f -L 4444:127.0.0.1:3306 -l remoteuser 208.77.188.166 sleep 600
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db1 | gzip > /root/backups/snapshot/db1.sql.gz
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db2 | gzip > /root/backups/snapshot/db2.sql.gz
/usr/bin/mysqldump --compress -h 127.0.0.1 -P 4444 -u user -ppassword db3 | gzip > /root/backups/snapshot/db3.sql.gz
Cuando la conexión se mantiene abierta durante 600 segundos, obviamente, sin embargo, si uno de los primeros volcados tarda más que eso, la conexión se cierra antes de que se completen los otros volcados. Me gustaría conservar archivos separados para cada copia de seguridad del esquema (por lo que --databases
evitaré el de mysqldump por ahora).
¿Alguna sugerencia?