- Tham gia
- 11/11/2008
- Bài viết
- 9.440
Sao lưu (backup) tự động cơ sở dữ liệu (database) MySQL là việc làm cực kỳ quan trọng đối với các quản lý trang. Bởi chúng ta không thể biết trước những nguy cơ nào có thể xảy ra với trang của mình: xóa nhầm, hỏng ổ cứng, bị ha.ck.... nên có những bản backup sẽ giúp chúng ta rất nhiều trong việc xử lý rủi ro.
Bài sau đây sẽ hướng dẫn bạn sao lưu tự động cơ sở dữ liệu trên VPS/Server riêng chạy trên nền tảng Linux.
Bước 1: Tạo một Shell Script tên "db-backup.sh" (hoặc tên gì tùy bạn đặt)
Nội dung:
Chỉnh sửa các thông tin cấu hình ở những dòng đầu theo đúng thông tin của bạn và lưu nó vào 1 đường dẫn cụ thể trên server.
Bước 2: Thêm nó vào Crontab
Chúng ta cần thêm shell script trên vào lịch chạy để vào đúng thời điểm hệ thống sẽ tự chạy backup.
Xem lịch chạy hiện thời bằng lệnh:
Bắt đầu hiệu chỉnh lịch chạy:
Nhấn A để bắt đầu thêm vào và sau khi hoàn thành nhấn ESC để thoát khỏi chế độ edit, gõ :wq để lưu lại và thoát.
Bạn có thể quy định chính xác phút, giờ, ngày trong tháng, tháng, ngày trong tuần chạy tương ứng với các dấu * * * * *
Hoặc cũng có thể dùng kiểu ký hiệu:
@reboot : Chạy mỗi khi khởi động lại server.
@yearly : Chạy mỗi năm 1 lần, tương ứng với "0 0 1 1 *".
@annually : Tương tự @yearly
@monthly : Chạy mỗi tháng một lần, tương ứng "0 0 1 * *".
@weekly : Chạy mỗi tuần một lần, tương ứng "0 0 * * 0".
@daily : Chạy mỗi ngày một lần, tương ứng "0 0 * * *".
@midnight : tương tự [USER=610087]daily[/USER]
@hourly : chạy mỗi giờ 1 lần, tương ứng "0 * * * *".
Thêm script vào crontab:
2 2 * * * * /path/to/backup-script.sh (có nghĩa là backup vào lúc 2 giờ 2 phút mỗi ngày)
Hoặc:
@weekly /path/to/backup-script.sh (có nghĩa là backup vào hàng tuần)
Lưu lại là xong.
Bạn cũng có thể chạy ngay tức thì bằng lệnh:
Bài sau đây sẽ hướng dẫn bạn sao lưu tự động cơ sở dữ liệu trên VPS/Server riêng chạy trên nền tảng Linux.
Bước 1: Tạo một Shell Script tên "db-backup.sh" (hoặc tên gì tùy bạn đặt)
Nội dung:
PHP:
# Backup mysql databases into seperate files
USER="mysql-username"
PASSWORD="mysql-password"
OUTPUTDIR="/path/to/db/backup/dir"
MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"
NOW=$(date +"%m-%d-%Y")
MSG="Just to let you know that a full backup of db has been made onto the VPS.Kind Regards"
# Remove previous backups
rm "$OUTPUTDIR/*bak" > /dev/null 2>&1
# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
# dump each database in turn
for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db > "$OUTPUTDIR/$db.bak"
done
# emaili reminder of backup
echo $MSG | mail -s "VPS Server Backup - Backup Created on $NOW" your@kenhsinhvien.net
Chỉnh sửa các thông tin cấu hình ở những dòng đầu theo đúng thông tin của bạn và lưu nó vào 1 đường dẫn cụ thể trên server.
Bước 2: Thêm nó vào Crontab
Chúng ta cần thêm shell script trên vào lịch chạy để vào đúng thời điểm hệ thống sẽ tự chạy backup.
Xem lịch chạy hiện thời bằng lệnh:
PHP:
crontab -l
Bắt đầu hiệu chỉnh lịch chạy:
PHP:
crontab -e
Nhấn A để bắt đầu thêm vào và sau khi hoàn thành nhấn ESC để thoát khỏi chế độ edit, gõ :wq để lưu lại và thoát.
Bạn có thể quy định chính xác phút, giờ, ngày trong tháng, tháng, ngày trong tuần chạy tương ứng với các dấu * * * * *

Hoặc cũng có thể dùng kiểu ký hiệu:
@reboot : Chạy mỗi khi khởi động lại server.
@yearly : Chạy mỗi năm 1 lần, tương ứng với "0 0 1 1 *".
@annually : Tương tự @yearly
@monthly : Chạy mỗi tháng một lần, tương ứng "0 0 1 * *".
@weekly : Chạy mỗi tuần một lần, tương ứng "0 0 * * 0".
@daily : Chạy mỗi ngày một lần, tương ứng "0 0 * * *".
@midnight : tương tự [USER=610087]daily[/USER]
@hourly : chạy mỗi giờ 1 lần, tương ứng "0 * * * *".
Thêm script vào crontab:
2 2 * * * * /path/to/backup-script.sh (có nghĩa là backup vào lúc 2 giờ 2 phút mỗi ngày)
Hoặc:
@weekly /path/to/backup-script.sh (có nghĩa là backup vào hàng tuần)
Lưu lại là xong.
Bạn cũng có thể chạy ngay tức thì bằng lệnh:
PHP:
chmod +x /path/to/backup-script.sh
sh /path/to/backup-script.sh
Hiệu chỉnh: