Hiện nay khi sử dụng VPS/Server riêng thì việc backup hầu hết chỉ thực hiện và lưu trữ lại trực tiếp trên máy chủ, điều này sẽ gặp vấn đề nếu như máy chủ gặp sự cố hoặc khi thao tác không cẩn thận lỡ tay xóa nhầm thì sẽ khiến dữ liệu của bạn mất đi vĩnh viễn. Để hạn chế tình trạng này, nhiều người sẽ thực hiện backup lên máy chủ khác/download file backup về máy cá nhân/backup lên các dịch vụ lưu trữ trung gian v.v... Trong các hình thức trên thì bài viết này sẽ hướng dẫn bạn việc thực hiện tự động hóa hoàn toàn việc backup database trên VPS/Server của mình lên dịch vụ lưu trữ của Dropbox.com
2. Các bước thực hiện
2.1 Đầu tiên cần đăng ký một tài khoản dropbox tại: https://www.dropbox.com/ Với tài khoản miễn phí bạn sẽ có 2Gb dung lượng lưu trữ.
#mkdir /home/dropbox
#cd /home/dropbox
#wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
#chmod 755 dropbox_uploader.sh
#./dropbox_uploader.sh
Khi khởi chạy scripts sẽ được hỏi một số thông tin, đầu tiên là App Key và App Secret, cách lấy 2 thông tin này như sau:
2.3.1 Truy cập vào https://www.dropbox.com/developers/apps
2.3.2 Chọn “Create Apps” => Tick chọn “Dropbox API” => Chọn tiếp “Full Dropbox” ( tùy chọn này để có thể tùy chỉnh thư mục muốn lưu trữ ở dropbox trong đoạn scripts backup ở bước sau) => Name your app: giá trị này tùy chọn
2.3.3 Trang mới sẽ được mở ra khi tạo app thành công, ở đây sẽ có 2 giá trị là App key và App secrets
2.3.4 Nhập các thông tin đã có để tiếp tục cấu hình kết nối với dropbox. Sau khi nhập xong các thông tin thì scripts sẽ trả về 1 đường link để xác thực ngược lại, tiến hành truy cập đến link trên và quá trình setup hoàn tất.
2.4 Tiến hành tạo thêm scripts mới để backup toàn bộ cơ sở dữ liệu và upload lên dropbox:
#vi backupmysql.sh
Tạo thêm thư mục chứa các file backup sẽ tạo ra để chuẩn bị cho việc upload lên dropbox:
#mkdir /home/backuptodropbox
Sau đó chèn đoạn scripts sau vào:
TMP_DIR="/home/backuptodropbox" DATE=$(date +"%d-%m-%Y_%H%M") BKP_FILE="$TMP_DIR/MYSQL_$DATE.tar" DROPBOX_UPLOADER=/home/dropbox/dropbox_uploader.sh dblist=`mysql -u root -p[password] -Bse 'show databases'` array_db=( $dblist ) for((i=0;i<${#array_db[@]};i++)) do dbname=${array_db[$i]} mysqldump -u root -p[password] --complete-insert $dbname | gzip -9 > $TMP_DIR/$dbname.`date +"%Y-%m-%d"`.sql.gz done tar cf "$BKP_FILE" $TMP_DIR gzip -9 "$BKP_FILE" $DROPBOX_UPLOADER upload "$BKP_FILE.gz" "/backup" rm -rf $TMP_DIR/* |
Lưu ý:
+ [password] là password root mysql
+ Phần “/backup” là thư mục nơi chứa file backup trên dropbox, thư mục này sẽ tự được tạo ra nếu chưa có sẵn (do đã chọn Full Dropbox ở bước kết nối)
2.5 Tiến hành chạy scripts để kiểm tra. Sau khi hoàn tất, tiến hành set crob job để chạy backup, thêm vào sau các cron có sẵn (chạy backup vào 00:00 hàng ngày):
#crontab -e
Sau đó chèn thêm dòng sau vào
0 0 * * * sh /home/dropbox/scripts.sh
Lưu ý:
+ Nếu VPS của bạn đang sử dụng Control Panel là Direct Admin, bạn có thể sử dụng đoạn lệnh sau để lấy password root mysql:
#grep ^mysql= /usr/local/directadmin/scripts/setup.txt | cut -d\= -f2
+ Scripts backup trên VPS với mục đích chính là upload database đã backup lên dropbox.com vì thế sẽ xóa toàn bộ các bản backup tạo ra phục vụ cho việc upload để không làm chiếm thêm đĩa cứng. Nếu bạn muốn lưu trữ lại trên VPS/Server thêm một bản, bạn có thể kiểm tra trong đoạn scripts backupmysql.sh và xóa bỏ dòng sau:
#rm -rf $TMP_DIR/*