Sao lưu dữ liệu trên server Linux hoặc VPS là một bước quan trọng để bảo vệ và khôi phục cơ sở dữ liệu khi gặp sự cố. Trong bài viết này, chúng ta sẽ hướng dẫn bạn cách thiết lập sao lưu MySQL tự động hàng ngày, hàng tuần và hàng tháng bằng một đoạn script bash đơn giản, hiệu quả, không cần cPanel hay phần mềm phức tạp.

Tầm quan trọng của sao lưu database tự động
Sao lưu cơ sở dữ liệu tự động là một yếu tố thiết yếu để bảo vệ dữ liệu và đảm bảo hệ thống hoạt động ổn định. Dưới đây là những lý do quan trọng:
- Bảo vệ dữ liệu trước rủi ro: Ngăn chặn mất mát dữ liệu do sự cố phần cứng, lỗi hệ điều hành hoặc thao tác nhầm. Các bản sao lưu (backup) đảm bảo khả năng phục hồi nhanh chóng.
- Phòng chống tấn công mạng: Nếu trang web của bạn bị virus tấn công và chèn liên kết độc hại, sao lưu tự động sẽ giúp phục hồi dữ liệu nhanh chóng, giảm thiểu thiệt hại.
- Tiết kiệm thời gian: Loại bỏ nguy cơ quên sao lưu, giảm thiểu công việc thủ công và cho phép bạn tập trung vào những nhiệm vụ quan trọng hơn.
Chức năng của script bash sao lưu SQL
Đây là một script bash được viết để tự động backup MySQL Linux (Ubuntu/Debian). Nó bao gồm các chức năng chính quan trọng như:
- Sao lưu: Tạo bản sao lưu tất cả database theo ngày, theo tuần và theo tháng
- Quản lý sao lưu: Các bản sao lưu được lưu trong các thư mục riêng:
daily
,weekly
,monthly
. - Ghi log: Ghi lại log trong quá trình sao lưu, dễ dàng kiểm soát những hành động và dữ liệu đã sao lưu.
- Gửi báo cáo qua email: Gửi báo cáo đính kèm những file SQL đã sao lưu qua email
Cách sử dụng công cụ tự động backup MySQL Linux
Yêu cầu:
- Máy chủ đang sử dụng MySQL hoặc MariaDB. (Chắc chắn rồi, vì không sử dụng thì lấy gì sao lưu :D)
- Cần quyền
sudo
hoặcroot
- Cronjob, máy chủ phải có
cron
hoạt động - Máy chủ cần có dịch vụ gửi mail (exim, sendmail, hoặc postfix) nếu bạn muốn gửi báo cáo qua email.
- Máy chủ cần cài công cụ mutt để gửi đính kèm file (Tuỳ chọn nếu bạn cần gửi đính kèm file đã sao lưu đến mail của mình)
sudo apt install mutt
Cách cài đặt:
- Tải công cụ Auto-SQL-backups: https://github.com/itsmeit268/Auto-SQL-backups
- Đăng nhập vào máy chủ bằng SSH, sử dụng GIT hoặc tải xuống file zip và giải nén.
- Điều hướng đến thư mục Auto-SQL-backups
- Đặt quyền thực thi cho trình cài đặt:
sudo chmod +x install.sh
- Chạy lệnh
sudo ./install.sh
- Làm theo hướng dẫn trên màn hình trong terminal để hoàn tất quá trình thiết lập.

Cách chạy thử nghiệm:
Sau khi hoàn thành bước cài đặt, bạn có thể chạy thử nghiệm với lệnh:
sudo runsqlbackup

hoặc:
sudo /etc/cron.daily/runsqlbackup
Kết quả sẽ là các file SQL được lưu trong các thư mục daily
, weekly
, và monthly
. Từ bây giờ, tất cả cơ sở dữ liệu của bạn sẽ được sao lưu tự động mỗi ngày, tuần, và tháng mà không cần thao tác thủ công.

Khắc phục lỗi thường gặp khi cài đặt sao lưu SQL tự động
- Lỗi “Permission denied”, do bạn không có quyền tạo thư mục hoặc file, bạn cần có quyền root hoặc sudo khi chạy tệp tin install.sh
- Lỗi “Invalid directory”, Bạn cần chỉ định chính xác thư mục để lưu các file khi sao lưu.
- Lỗi “The server has no mail service”: Máy chủ chưa cài đặt gửi mail, bạn có thể tham khảo cài đặt các công cụ mail như: exim, sendmail SMTP hoặc postfix. Tuy nhiên nếu bạn không cần gửi thông báo email thì có thể bỏ qua cảnh báo này.
- Lỗi email không gửi file đính kèm: Bạn cần cài đặt công cụ mutt hoặc máy chủ mail có hỗ trợ tuỳ chọn
-A
khi gửi mail để có thể đính kèm.
Việc thiết lập sao lưu MySQL tự động trên server Linux không chỉ giúp giảm thiểu rủi ro mất mát dữ liệu, tiết kiệm thời gian mà còn đảm bảo khả năng phục hồi hệ thống khi xảy ra sự cố, tất cả chỉ với một script bash đơn giản, hiệu quả, mà không cần đến công cụ phức tạp hay phần mềm đắt đỏ.