Tạo crontab lập lịch (schedule) database trong mysql ra từng file.

Database là nơi chứa nội dung của ứng dụng, web.. và tần xuất update cũng cao. Vì vậy việc thường xuyên backup database sẽ tránh được những trường hợp mất dữ liệu đáng tiếc.
Script bên dưới sẽ backup từng database, lưu ra từng file với tên file có kèm phần hậu tố là thời gian tạo file để thứ tự năm tháng ngày sẽ dể sort khi kiếm hơn.
Thêm giờ phút giây để tránh bị trùng tên nếu backup nhiều lần trong ngày.
File backup sẽ được nén lại, vì việc nén file text giúp tiết kiệm rất nhiều không gian lưu trữ.

Trong script bên dưới có một phần là optional, trường hợp chúng ta không muốn backup thông tin 3 database của bản thân mysql.
Mỗi dòng đều có comments vì vậy mình không giải thích thêm.

Step 1: Tạo file backup như bên dưới

Sau khi tạo xong file này thì lưu nó vào một nơi khác với nơi sẽ lưu file backup, vì chúng ta sẽ lập lịch xóa file cũ.
Notes: Mình không khai báo thông tin kết nối trong file này vì nó nên nằm trong /user/.my.cnf
Tránh việc chia sẻ file hoặc lưu ở những nơi public sẽ làm leak password.

Step 2: Viết file bash xóa dữ liệu cũ hơn 15 ngày.

Note: Có thể để command xóa này ở cuối cùng của file backup luôn để sau khi backup xong, nó kiểm tra và xóa file luôn.

Step 3: Tạo crontab backup và xóa file
Vào editor soạn thảo crontab (root là tên user)

Database backup mỗi ngày 2 lần vào 12h trưa và 12h đêm, cần chmod u+x /root/scripts/backup_mysql.sh để đảm bảo file có quyền thực thi. Xuất log nếu có lỗi để có thể kiểm tra lại.

Xóa file check vào mỗi 12h đêm.
cần chmod u+x /root/scripts/remove_old_dbbackup.sql để đảm bảo file có quyền thực thi. Xuất log nếu có lỗi để có thể kiểm tra lại.

The End!

Comments

comments