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
:
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:
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.