Eu gostaria de escrever um script de shell (atualmente usando o bash) para fazer backup automático do conteúdo de vários esquemas do MySQL em um servidor remoto. O servidor remoto está bloqueado para permitir apenas o acesso SSH, então eu tenho que criar um túnel SSH antes de executar mysqldump
nos vários esquemas.
Posso criar um túnel sem nenhum problema, mas gostaria de poder fechá-lo automaticamente após a conclusão do dump do banco de dados.
Atualmente, meu script está fazendo isso:
/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
Onde a conexão é mantida aberta por 600 segundos, obviamente, se um dos primeiros despejos demorar mais que isso, a conexão será fechada antes que os outros despejos sejam concluídos. Eu gostaria de reter arquivos separados para cada backup do esquema (para evitar o --databases
mysqldump por enquanto).
Alguma sugestão?