Hướng dẫn backup hàng ngày Mysql lên Dropbox

1 năm trước

Việc sao lưu dữ liệu hàng ngày của 1 ứng dụng web, native app... là quan trọng trong bất kì hệ thống nào. Hôm nay ViCloud sẽ giúp bạn 1 phương thức đơn giản và hiệu quả để backup Mysql lên Dropbox hàng ngày.

Bước 1: đăng kí hoặc đăng nhập tài khoản Dropbox

Phần này ViCloud sẽ không hướng dẫn bạn. Bạn có thể thực hiện trên trang: http://dropbox.com

Bước 2: sau khi đăng nhập vào Dropbox bạn vào theo link https://www.dropbox.com/developers/apps/create để tạo 1 ứng dụng backup MYSQL lên.

 

 

 

 

 

 

 

 

Bạn chọn kiểu là Dropbox API, có thể tuỳ chọn ứng dụng này chỉ truy nhập folder của app hoặc toàn bộ folder trên Dropbox của bạn. Sau cùng bạn cần đặt tên cho app này.

Bước 3: Khi tạo xong, Dropbox trả cho bạn 1 đường dẫn vào app bạn mới tạo theo dạng: https://www.dropbox.com/developers/apps/info/id_ứng dụng

Tại trang này, bạn kéo xuống dưới  sẽ có mục Generated access token. Click vào Generate ra 1 key mới. Copy lại và chuyển sang thao tác trên centos.

Bước 4: Chúng ta sẽ dùng 1 đoạn bash file tham khảo tại đây: 

https://github.com/andreafabrizi/Dropbox-Uploader

cho việc upload file từ centos server lên dropbox

Login vào centos server bằng ssh, lưu ý bạn cần chạy dưới quyền root. 

Bước 5: Tải bash file bằng lệnh: 

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

Thành công, tại thư mục hiện tại sẽ xuất hiện file dropbox_uploader.sh. 

Bạn cần set quyền cho file này bằng lệnh: chmod +x dropbox_uploader.sh

Tiếp đó add key có được ở bước 3 vào ứng dụng bằng lệnh: ./dropbox_uploader.sh

* Lưu ý: muốn thay đổi key này. Bạn chỉ cần vào sửa key dropbox bạn dùng vi edit theo lệnh: ~/.dropbox_uploader hoặc mở file dropbox_uploader.sh để biết được file lưu thông số cấu hình này ở đâu

Bước 6: Chúng ta đã hoàn tất thiết lập để upload file bất kì lên Dropbox. Bước tiếp theo ta tạo Cron job để dump sql định kì hàng ngày. Trước hết ta cần tìm hiểu về lệnh dump của mysql.

Cấu trúc: mysqldump -u db_user -p  db_name> /path_to_file/file_name.sql

Sau khi gõ lệnh trên, hệ thống hỏi password của mysql, bạn gõ đúng câu lệnh được thực hiện. Tuy nhiên có 1 vấn đề, khi ta dump bằng cron job thì ta ko thể ngồi nhập password được. Rất may Mysql đã hỗ trợ chúng ta extend tiện ích đọc password cho lệnh dump từ 1 file. Để thực hiện việc này ta qua bước 7.

Bước 7: Tại thư mục hiện tại ta tạo 1 file để lưu password của mysql ví dụ: tên file .my.cnf

vi .my.cnf với nội dung
[client]
user=username db
password=password db

Lưu lại, bây giờ lệnh dump của ta sẽ là 

mysqldump -u db_user --defaults-file=/path_to_file/.my.cnf -u db_user db_name > /path_to_file/file_name.sql

Để tối ưu về kích thước file sql, ta nén file này lại. Vậy command cuối cùng của chúng ta sẽ là:

mysqldump --defaults-file=path_to_file/.my.cnf -u db_user db_name | gzip > /path_to_file/file_name.gz

Bước 8: thiết lập Cron job chạy lệnh tự động upload file lên Dropbox 

Tìm hiểu về cron job bạn có thể tham khảo bài hướng dẫn khác trên ViCloud theo liên kết: http://vicloud.vn/community/huong-dan-su-dung-cron-job-tren-centos-278.html

Có 1 lưu ý là Dropbox hỗ trợ bạn việc versioning phiên bản của 1 file. Tài khoản miễn phí mặc định giữ lại 30 ngày. Điều đó có nghĩa 1 file bạn có thể ghi đè mỗi ngày 1 lần trong 30 ngày, Dropbox vẫn lưu trữ đầy đủ các ngày cho bạn

 

 

 

 

 

 

 

 

Do đó, ta chỉ cần lưu 1 file cho 1 tháng (ta sử dụng file name theo tháng) là đủ! 

Ta cần thiết lập 2 lệnh để hoàn tất việc backup.

- Lệnh 1 tạo file sql backup đã nén

- Lệnh 2 đẩy file lên dropbox app

Cronjob (gõ lệnh crontab -e để show ra) của chúng ta bây giờ sẽ có 2 dòng

0 2 * * * mysqldump --defaults-file=/path_to_file/.my.cnf -u db_user db_name | gzip > /path_to_file/file_name_`date +\%y\%m`.gz
5 2 * * * /path_to_file/dropbox_uploader.sh upload /path_to_file/file_name_`date +\%y\%m`.gz new_file_name_on_dropbox_`date +\%y\%m`.gz

Giải thích ý nghĩa cấu hình Cron Job:

Job dump db file chạy hàng ngày lúc 02h00 sáng. Để đảm bảo file dump được hoàn tất, ta để Job upload lên Dropbox thực hiện lúc 02h05 phút sáng.

Cuối cùng, bạn đừng quên khởi động lại dịch vụ Cron Job
service crond restart

Cám ơn bạn đã đọc bài viết, vui lòng comment bên dưới để cho nhận xét!