[Script] Hướng dẫn Backup Database trên VPS tự động

Điểm mạnh nhất của VPS là chúng ta có thể toàn quyền thực thi những gì chúng ta muôn. Khỏi phải nói tới tầm quan trọng của việc Backup dữ liệu nữa, trong bài viết này mình sẽ hướng dẫn các bạn cách chúng ta tạo lệnh backup dữ liệu trên VPS bằng một đoạn script đơn giản.

Áp dụng với Server sử dụng Cenos:

Bước 1: Tạo danh sách database cần backup.

Đầu tiên bạn tạo ra 1 danh sách các database bạn cần backup. (Bạn có thể tùy biến nó bằng cách tạo ra nhiều file database khác nhau và có thể backup với nhiều thời điểm khác nhau), VD website quan trọng thì daily backup, còn website ít thay đổi dữ liệu thì weekly backup…

Đầu tiên bạn chạy dòng lệnh này, nhớ thay chữ MATKHAUPHPMYADMIN bằng mật khẩu phpmyadmin khi bạn cài đặt VPS.

Source code    
mysql --user=root --password=MATKHAUPHPMYADMIN -e "SHOW DATABASES;" | tr -d "| " | grep -v Database > /root/list_DBs.txt

Khi chạy lệnh này, bạn sẽ tạo ra 1 file /root/list_DBs.txt chứa toàn bộ danh sách database có trong VPS của bạn.

Bước 2: Tiếp tục chúng ta sẽ tạo ra 1 script chứa câu lệnh backup.

Tạo 1 thư mục chứa Database của bạn.

Source code    
mkdir /home/DB/

Tạo script backup toàn bộ database

Source code    
vi /root/backup.sh

Tiếp đến hãy copy đoạn script bên dưới vào file backup.sh

Chú ý: Sau khi Copy vào bạn phải sửa lại MATKHAUPHPMYADMIN bằng mật khẩu root của phpmyadmin, cũng như đường dẫn lưu file DBs, ở đây mình ví dụ là /home/DB

Source code    
#!/bin/bash

USER="root"
PASSWORD="MATKHAUPHPMYADMIN"
OUTPUT="/home/DB"
 
rm "$OUTPUT/*gz" > /dev/null 2>&1
 
databases=`cat /root/list_DBs.txt`
 
for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] ; then
        echo "Dumping database: $db"
        mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
        gzip $OUTPUT/`date +%Y%m%d`.$db.sql
    fi
done

Nhấn :wq để lưu lại script trên, chúng ta có file backup.sh

Bước 3: Kiểm tra xem file này chạy được chưa.

Nếu chạy được chúng ta sẽ có các file database trong /home/DB

Gõ lệnh:

Source code    
sh /root/script/backup.sh

Nếu không chạy thì gõ lệnh

Source code    
/root/backup.sh

Bước 4: Đặt lịch backup tự động cho VPS.

Bây giờ chúng ta sẽ sử dụng crontab  có sẵn trong hệ điều hành Linux. Ở trong Ví dụ này Tú sẽ backup hàng ngày và vào lúc 03:15 phút sáng hàng ngày.

Source code    
15 3 * * 0 sh /root/script/backup.sh

Vậy là xong, chúng ta đã có 1 script chất lượng, tự động backup database mỗi ngày mà không có mất tiền thuê đơn vị cung cấp host backup.

Áp dụng với Server sử dụng Ubuntu

Với server chạy ubuntu thì đoạn script trên có thể bị lỗi bash code. Vì thế bạn thay đoạn script trên bằng đoạn script này.

Source code    
#!/bin/bash

USER="root"
PASSWORD="MATKHAUPHPMYADMIN"
BACKUP_PATH="/home/DB"
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
 
for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
        echo "Dumping database: $db"
        mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/`date +%Y%m%d`.$db.sql
    fi
done

Với Ubuntu thì để kiểm tra xem backup.sh này có hoạt động hay không, bạn sẽ gõ

Source code    
./backup.sh

Vậy bạn đã hoàn tất những gì cần làm.

Chúc bạn thành công !

4 Responses to “[Script] Hướng dẫn Backup Database trên VPS tự động”
  1. Nhat Phuong 07/09/2017
  2. Mai nam 07/09/2017

Trả lời Mai nam Hủy

Nhận tuyệt chiêu Marketing

Nhận tuyệt chiêu Marketing

Đừng bao giờ để đối thủ của bạn biết điều này.

 

Hãy là những người đi đầu và cập nhật xu hướng, cách làm hiệu quả nhất.



Xin hãy kiểm tra email để hoàn tất