Chciałbym napisać skrypt powłoki (obecnie używający bash), aby automatycznie wykonać kopię zapasową zawartości kilku schematów MySQL na zdalnym serwerze. Serwer zdalny jest zablokowany, aby umożliwić dostęp tylko przez SSH, więc muszę utworzyć tunel SSH przed uruchomieniem mysqldump
w różnych schematach.
Mogę utworzyć tunel bez żadnego problemu, jednak chciałbym mieć możliwość automatycznego zamknięcia go po zakończeniu zrzutu bazy danych.
Obecnie mój skrypt robi to:
/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
Jeśli połączenie jest utrzymywane otwarte przez 600 sekund, oczywiście jeśli jedno z pierwszych zrzutów zajmie więcej czasu, wówczas połączenie zostanie zamknięte przed zakończeniem pozostałych zrzutów. Chciałbym zachować osobne pliki dla każdej kopii zapasowej schematu (więc na razie --databases
uniknę mysqldump).
Jakieś sugestie?