Tập lệnh Shell cho phép bạn dễ dàng tự động hóa các tác vụ và quy trình trong Linux. Khi bạn chạy một trang web, bạn có thể cần thường xuyên sao lưu cơ sở dữ liệu MySQL của mình. Bạn có thể dễ dàng thực hiện việc này bằng cách sử dụng shell script. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách tạo tập lệnh shell để sao lưu cơ sở dữ liệu MySQL.

1. Tạo Shell Script

Mở terminal và chạy lệnh sau để tạo tệp shell script trống.

2. Thêm shell script để sao lưu MySQL

Thêm đoạn code sau vào tệp tập lệnh shell của bạn. Thay thế dbname, dbuser và dbpass bằng tên cơ sở dữ liệu, tên người dùng và mật khẩu tương ứng của bạn.

Lưu và đóng tập tin.

Trong đoạn code trên, trước tiên chúng ta cần phải xác định môi trường thực thi cho shell script. Sau đó, lặp lại message để biết rằng quá trình sao lưu đã bắt đầu. Tiếp theo, tạo một biến day để lưu trữ tên ngày hiện tại (Chủ nhật, Thứ hai, v.v.). Ta sử dụng biến này để xác định tên tệp của tệp sao lưu cuối cùng (.sql) để sao lưu cơ sở dữ liệu. Kế tiếp, chúng ta chạy lệnh MySQL để sao lưu cơ sở dữ liệu và lưu trữ nó trong thư mục/home. Cuối cùng, ta lặp lại một message khác cho biết quá trình sao lưu cơ sở dữ liệu đã hoàn tất.

Trong trường hợp này, tập lệnh sẽ tạo mydb_Sunday.sql vào Chủ nhật, mydb_Monday.sql vào thứ Hai, v.v., cung cấp cho bạn bản sao lưu trong 7 ngày qua nếu bạn chạy tập lệnh hàng ngày.

Hãy chỉ ra đường dẫn đầy đủ của tệp sao lưu của bạn để bạn biết nó được tạo ở đâu và không gặp phải bất kỳ thông báo lỗi nào về “Permission Denied”.

Nếu bạn muốn nén dữ liệu sao lưu ở trên, bạn có thể sửa lại lệnh mysqldump như hình. Về cơ bản, chúng ta chuyển đầu ra của lệnh mysqldump sang lệnh gzip để tạo tệp gzip. Do đó, chúng ta có thể sửa đổi tên tệp cuối cùng để sao lưu thành tệp .gz thay vì tệp .sql.

3. Cách để thực thi Shell Script

Để thực thi tệp shell của bạn, hãy chạy lệnh sau:

4. Kiểm tra tập lệnh shell

Chạy shell script bằng lệnh sau:

5. Tự động sao lưu DB

Bạn thậm chí có thể thêm lệnh trên dưới dạng cronjob để thường xuyên sao lưu cơ sở dữ liệu hàng ngày/tuần/tháng theo yêu cầu của bạn. Dưới đây là một ví dụ. Mở tệp crontab bằng lệnh sau.

$ sudo crontab -e

Thêm dòng sau đây vào nó. Nó sẽ chạy tập lệnh db_backup.sh của bạn hàng ngày lúc 10 giờ sáng. Bạn có thể thay đổi tập lệnh đó theo yêu cầu của mình.

Lưu và đóng tập tin. Trong đó:

  • “0 10 * * *” chỉ ra rằng công việc định kỳ sẽ được chạy hàng ngày vào lúc 10 giờ sáng

  • “sudo /home/db_backup.sh” là lệnh được chạy cho công việc định kỳ. 

  • “> /dev/null 2>&1” chỉ ra rằng tất cả các thông báo lỗi và đầu ra tiêu chuẩn phải được gửi tới /dev/null, tức là không được hiển thị.

Hãy lưu ý rằng bạn sử dụng từ khóa sudo trong khi lên lịch cronjob, để tránh lỗi "Permission Denied". Ngoài ra, hãy chỉ ra đường dẫn đầy đủ đến tập lệnh shell của bạn để tránh lỗi "File not Found".

Trong bài viết này, chúng ta đã biết cách tạo shell script để sao lưu cơ sở dữ liệu MySQL, đồng thời tạo cronjob để chạy shell script hàng ngày. Điều này sẽ đảm bảo rằng bạn có thể thường xuyên sao lưu cơ sở dữ liệu của mình. Nếu bạn chạy tập lệnh shell ở trên hàng ngày dưới dạng cronjob, nó sẽ tạo 7 tệp sao lưu khác nhau, mỗi tệp tương ứng cho mỗi ngày trong tuần, do đó bạn sẽ có bản sao lưu trong 7 ngày qua. Hàng ngày, nó sẽ ghi đè lên tệp sao lưu tương ứng có cùng tên tệp của tuần trước, bạn sẽ nhận được 7 bản sao lưu gần đây nhất.

VietnamWorks inTECH