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

Tú Cao Tác giả Tú Cao 21/08/2017 5 phút đọc

Đ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. script-to-auto-backup-database

Á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.
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.
mkdir /home/DB/
Tạo script backup toàn bộ database
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
#!/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 Lưu ý: Nếu VPS của bạn cài directadmin, bạn không biết pass mặc định của root là gì, bạn có thể sử dụng lệnh sau để xem
cat /usr/local/directadmin/scripts/setup.txt
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:
sh /root/script/backup.sh
Nếu không chạy thì gõ lệnh
/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.
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.
#!/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õ
./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 !

Tú Cao
Tác giả Tú Cao Admin

"Hạnh phúc không phải là nhận, hạnh phúc chính là sự cho đi" - đây là lý do Tú xây dựng Blog này. Bài viết trên dự dựa trên quan điểm, hiểu biết của cá nhân. Nó có thể đúng, cũng có thể sai tùy thời điểm, vì vậy bạn phải tự cân nhắc và chịu trách nhiệm khi làm theo. Nếu bạn thấy nội hữu ích với bạn, hãy Mời Tú Cao một tách CÀ PHÊ.

Bài viết trước [Tips] Để quản lý facebook comment không bị sót bình luận

[Tips] Để quản lý facebook comment không bị sót bình luận

Bài viết tiếp theo

Cách trỏ nhiều domains khác về cùng 1 domain qua Cloudflare ngon và miễn phí

Cách trỏ nhiều domains khác về cùng 1 domain qua Cloudflare ngon và miễn phí
Viết bình luận
Thêm bình luận

9 Bình luận

P
Minh Phương

Trên Centos em muốn đặt lịch tự động Backup Database đến 1 server khác thì làm sao ? Chỉ muốn Backup các file có thay đổi hoặc thêm mới để tránh tăng nhanh dung lưu trữ thì phải làm sao? Mong được chỉ giúp. Cám ơn

Trả lời
12:51 17/08/2020
T
Khanh Thong

Hi Tú Vi dụ server mà có nhiều database như MySQL; PostgreSQL; MariaDB; MongoDB thì mình backup ra sao, và thoi gian backup 0h và 23h thì script như Tú apply được không và sửa ra sao. Thanks

Trả lời
13:43 11/12/2020
C
Tú Cao

Một số bạn VPS sử dụng DirectAdmin do bên cho thuê VPS họ cài đặt, bạn có thể sử dụng lệnh sau để xem password mặc định cat /usr/local/directadmin/scripts/setup.txt

Trả lời
13:55 18/02/2018
P
Nhat Phuong

Em dùng VPSSIM cũng dùng code này được luôn ạ. Em toàn phải 1 tuần vào VPSsim để tạo backup

Trả lời
15:10 07/09/2017
N
Mai nam

Mình dùng script này cho easyengine vps nhưng bị lỗi . Chắc sai đường dẫn Tú nhỉ ?

Trả lời
17:18 07/09/2017
Popup image default

Bài viết liên quan

Thông báo

Zalo