2010-10-26 39 views
5

Tôi mới làm công việc cron và tôi cần khôi phục cơ sở dữ liệu (mysql) cứ 30 phút một lần. Có lệnh cron job có thể khôi phục cơ sở dữ liệu từ tệp .sql đã được nén không?Tôi cần khôi phục cơ sở dữ liệu (mysql) sau mỗi 30 phút sử dụng lệnh cron

Hoặc tôi có cần phải tạo tập lệnh php để thực hiện việc này và tạo cron job để gọi tập lệnh này sau mỗi ba mươi phút không?

Ngoài ra, và đây là một câu hỏi riêng biệt nhưng vẫn liên quan đến công việc cron, tôi đang sử dụng công việc cron để sao lưu cơ sở dữ liệu khác nhau một lần một ngày, gzip và đặt nó vào thư mục phía trên thư mục gốc. Có cách nào để (tự động) xóa bất kỳ thứ gì cũ hơn một tháng không? Hoặc, ít nhất, giữ 20 bản sao lưu gần đây nhất và xóa phần còn lại?

Không có nhiều hướng dẫn hay về chủ đề này mà các bài đăng trên diễn đàn ngẫu nhiên khác. Bất kỳ trợ giúp được đánh giá cao.

Trả lời

7

Về cách nhập một tập tin dump, chỉ cần đặt một

mysql -u user -ppassword databasename < /path/to/dump.sql 

vào công việc định kỳ.

Chi tiết khác: How do I restore a MySQL .dump file?

+0

nhiều đánh giá cao. – Johnny

+0

Tôi hiểu lịch sử trong Pekka này, nhưng nó sẽ thực hiện hiệu quả hơn phương pháp này trên 'cat /path/to/file.sq/ | mysql -u root -ppassword'? –

+1

@Daryl Tôi biết quá ít về cách thức các đường ống Unix/Linux thông qua dữ liệu tệp để nói cách nào hiệu quả hơn! Nó cũng có thể là đề xuất của bạn là tốt hơn. –

1

Bạn có thể viết tập lệnh bash để thực hiện việc này.

mysql -uPutYourUserHere -pPutYourPasswordHere PutYourUserHere_databaseName < database.sql 

Không có gì để tự động xóa nội dung nào đó. Nhưng bạn có thể làm trong công việc định kỳ của bạn:

find /path/to/files -mtime +30 -exec rm {}\; 
+0

Tôi có nghĩa là một công việc định kỳ để xóa các bản sao lưu cũ. Tôi nghĩ "tự động" đã gây hiểu nhầm. Sẽ thử đề xuất của bạn. Không thực sự quen thuộc với kịch bản bash tôi sợ. – Johnny

+0

find là một công cụ thực sự mạnh mẽ. đôi khi nếu bạn chỉ google "tìm xóa tháng cũ" bạn sẽ tìm thấy câu trả lời đúng. –

+0

Tôi nhận được một lỗi gửi đến cho tôi mà nói tìm: thiếu đối số để '-exec ' – Johnny

1

MySQL không thể xử lý các dữ liệu đã giải nén trực tiếp, nhưng nó tầm thường để ống thông qua gzcat và sau đó ống đó để mysql:

gzcat name_of_file.sql.gz | mysql -u.... 
Các vấn đề liên quan