Tôi muốn viết một tập lệnh shell (hiện đang sử dụng bash) để tự động sao lưu nội dung của một số lược đồ MySQL trên máy chủ từ xa. Máy chủ từ xa bị khóa để chỉ cho phép truy cập SSH, vì vậy tôi phải tạo một đường hầm SSH trước khi chạy mysqldump
với các lược đồ khác nhau.
Tôi có thể tạo một đường hầm mà không gặp vấn đề gì, tuy nhiên tôi muốn có thể tự động đóng nó sau khi kết xuất cơ sở dữ liệu hoàn tất.
Hiện tại kịch bản của tôi đang làm điều này:
/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
Trong trường hợp kết nối được giữ mở trong 600 giây, tuy nhiên rõ ràng nếu một trong những lần đầu tiên mất nhiều thời gian hơn thì kết nối sẽ bị đóng trước khi các bãi khác hoàn thành. Tôi muốn giữ lại các tệp riêng biệt cho mỗi bản sao lưu lược đồ (vì vậy sẽ tránh được --databases
mysqldump ngay bây giờ).
Bất kỳ đề xuất?