Việc sao lưu dữ liệu MySQL thường xuyên là một bước quan trọng để đảm bảo an toàn cho hệ thống và tránh mất mát thông tin. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách tạo shell script trên Ubuntu để backup dữ liệu MySQL theo lịch hàng tuần, sử dụng file cấu hình .env để dễ dàng quản lý thông tin. Với hướng dẫn chi tiết và dễ thực hiện, bạn sẽ có thể tự động hóa quá trình backup và bảo vệ dữ liệu của mình một cách hiệu quả.

Bước 1: Tạo file .env để lưu cấu hình

Trước tiên, bạn cần tạo file .env chứa thông tin cấu hình MySQL. File này sẽ nằm trong cùng thư mục với script của bạn. Mở terminal và tạo file .env:

nano .env

Nội dung file .env:

DB_NAME=engineer.net.sql   # Tên database
DB_USER=root               # Tên người dùng MySQL
DB_PASS=your_password      # Mật khẩu người dùng MySQL
BACKUP_DIR=/backup/mysql   # Thư mục lưu trữ file backup

Bước 2: Viết shell script để backup MySQL

Tạo file script backup_mysql_weekly.sh:

nano backup_mysql_weekly.sh

Chèn nội dung sau vào file:

#!/bin/bash

# Đọc cấu hình từ file .env
if [ -f .env ]; then
  export $(grep -v '^#' .env | xargs)
else
  echo ".env file not found!"
  exit 1
fi

# Kiểm tra các biến môi trường cần thiết
if [ -z "$DB_NAME" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASS" ] || [ -z "$BACKUP_DIR" ]; then
  echo "Missing required environment variables."
  exit 1
fi

# Tạo timestamp cho file backup
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME_$DATE.sql.gz"

# Tạo thư mục backup nếu chưa tồn tại
mkdir -p "$BACKUP_DIR"

# Thực hiện backup và nén file bằng gzip
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_FILE"

# Kiểm tra xem backup có thành công không
if [ $? -eq 0 ]; then
    echo "Backup thành công: $BACKUP_FILE"
else
    echo "Backup thất bại"
    exit 1
fi

Bước 3: Thiết lập quyền thực thi cho script

Sau khi đã lưu nội dung file, bạn cần cấp quyền thực thi cho script:

chmod +x backup_mysql_weekly.sh

Bước 4: Lên lịch backup hàng tuần với cron

Bạn có thể sử dụng cron để lên lịch chạy script hàng tuần. Mở trình chỉnh sửa cron bằng lệnh:

crontab -e

Thêm dòng sau để chạy script mỗi tuần một lần vào lúc 2 giờ sáng Chủ nhật:

0 2 * * 0 /path/to/backup_mysql_weekly.sh

Thay /path/to/backup_mysql_weekly.sh bằng đường dẫn đầy đủ tới file script của bạn.

Giải thích các phần chính của script:

  • .env: Đây là file chứa các cấu hình cần thiết như tên database, người dùng, mật khẩu, và thư mục lưu trữ.
  • export $(grep -v ‘^#’ .env | xargs): Dòng này đọc các biến môi trường từ file .env và xuất chúng ra môi trường hiện tại.
  • mysqldump: Sử dụng công cụ này để backup dữ liệu MySQL và nén file bằng gzip.
  • cron: Được dùng để lên lịch chạy script tự động hàng tuần.

Với các bước này, bạn đã tạo thành công một shell script để backup dữ liệu MySQL hàng tuần với cấu hình từ file .env.

Với hướng dẫn chi tiết trên, bạn đã có thể tạo một shell script đơn giản để tự động backup dữ liệu MySQL hàng tuần trên Ubuntu. Việc sử dụng file .env không chỉ giúp dễ dàng quản lý cấu hình mà còn nâng cao tính bảo mật khi không phải để lộ thông tin nhạy cảm trong script. Đảm bảo dữ liệu của bạn luôn an toàn bằng cách kết hợp cron để lên lịch backup định kỳ, giúp bạn yên tâm vận hành hệ thống mà không lo mất dữ liệu quan trọng.