Tự động hóa quá trình sao lưu một cơ sở dữ liệu MySQL
Bash script được trình bày trong bài viết này là một công cụ tự động hóa quá trình sao lưu một cơ sở dữ liệu MySQL. Việc sao lưu cơ sở dữ liệu là một trong những tác vụ quan trọng để bảo đảm dữ liệu không bị mất mát trong trường hợp hệ thống gặp sự cố. Script này giúp thực hiện việc sao lưu một cách đơn giản, hiệu quả và có thể dễ dàng tích hợp vào lịch trình công việc định kỳ (cron job).
Bash Script
#!/bin/bash
# Đặt tên người dùng để kết nối với MySQL
DB_USER="your_username"
# Đặt mật khẩu tương ứng cho người dùng MySQL
DB_PASSWORD="your_password"
# Đặt tên cơ sở dữ liệu cần sao lưu
DB_NAME="your_database_name"
# Đặt đường dẫn tới thư mục nơi lưu trữ các bản sao lưu
BACKUP_DIR="/path/to/backup/directory"
# Tạo biến chứa dấu thời gian hiện tại theo định dạng YYYYMMDDHHMMSS
# Biến này sẽ được sử dụng để đặt tên tệp sao lưu, đảm bảo tệp có tên duy nhất
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
# Kiểm tra và tạo thư mục sao lưu nếu thư mục chưa tồn tại
# Lệnh `mkdir -p` sẽ tạo thư mục nếu nó chưa tồn tại, bao gồm các thư mục cha
mkdir -p $BACKUP_DIR
# Thực hiện sao lưu cơ sở dữ liệu MySQL với mysqldump
# Kết quả sao lưu sẽ được lưu vào tệp .sql trong thư mục sao lưu
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# Nén tệp sao lưu bằng gzip để giảm dung lượng lưu trữ
# Tệp .sql sẽ được nén thành tệp .gz
gzip $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql
# Tùy chọn: Xóa các tệp sao lưu đã nén cũ hơn 7 ngày để tiết kiệm dung lượng ổ cứng
# Lệnh này được bình luận bằng ký hiệu #. Bạn có thể bỏ comment dòng này nếu muốn sử dụng tính năng này
# Lệnh `find` sẽ tìm các tệp nén (.gz) trong thư mục sao lưu với tuổi thọ lớn hơn 7 ngày (-mtime +7) và xóa chúng (rm {})
# find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;
# Hiển thị thông báo rằng quá trình sao lưu đã hoàn tất và chỉ định đường dẫn tới tệp sao lưu đã nén
echo "Backup completed: $BACKUP_DIR/$DB_NAME-$TIMESTAMP.sql.gz"
Bash script trên cung cấp một giải pháp đơn giản và hiệu quả để tự động sao lưu cơ sở dữ liệu MySQL. Người dùng có thể dễ dàng tích hợp script này vào các công việc định kỳ như cron job để tự động sao lưu dữ liệu theo lịch trình. Thêm vào đó, với một số tùy chỉnh nhỏ, script này có thể phù hợp với nhiều kịch bản sao lưu khác nhau trong môi trường thực tế.
Cảm xúc của bạn?