Tôi đang cố gắng tạo một công việc cron để sao lưu cơ sở dữ liệu.Tạo một công việc cron cho mysqldump
Đây là những gì tôi có cho đến nay:
mysqldump.sh
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
echo "Finished mysqldump $(date)" >> dump.log
Cron công việc:
32 18 * * * /db-backup/mysqldump.sh
Vấn đề tôi đang gặp là công việc không được thực hiện thông qua cron hoặc khi tôi không có trong thư mục.
Ai đó có thể vui lòng thông báo. Đường dẫn của tôi có đúng không?
Ngoài ra, các dòng sau tôi không chắc chắn lỗi sẽ ra đến dump.log:
mysqldump -u root -ptest --all-databases | gzip > "/db-backup/backup/backup-$(date)" 2> dump.log
gì làm việc:
mysqldump -u root -ptest --all-databases | gzip > "../db-backup/backup/backup-$(date).sql.gz" 2> ../db-backup/dump.log
echo "Finished mysqldump $(date)" >> ../db-backup/dump.log
Ví dụ của bạn sẽ hoạt động. Làm cách nào để đảm bảo rằng * không thực thi *? – hek2mgl
Vâng, nếu tôi đang ở trong thư mục và gõ ./mysqldump.sh nó hoạt động; Tuy nhiên, nếu tôi cd .. và gõ nói ./db-backup/mysqldump.sh sau đó đăng nhập và trở lại không được thực hiện. Ngoài ra, công việc cron ở trên đã được thiết lập để 18:32 để kiểm tra. 18:32 thông qua một bản sao lưu không được thực hiện. – Brian
Bạn nên sử dụng đường dẫn tuyệt đối tệp nhật ký. Giống như '/ var/log/mysql.dump.log'. Đảm bảo rằng tệp có thể ghi được bởi người dùng cron. Lưu ý: Các công việc được liệt kê trong/etc/crontab hoặc /etc/cron.d* sẽ được thực thi dưới dạng root. Ngoài ra còn có một cơ chế crontab cho mỗi người dùng. Cronjobs như vậy sẽ chạy với các đặc quyền giống như người dùng mà crontab thuộc về – hek2mgl