Oct 5, 2014
95 Views

Backup định kỳ Database và Web Source từ OpenShift lên Dropbox

Written by

backup openshift to dropbox

Bài này sẽ hướng dẫn thiết lập sao lưu tự động mã nguồn và database trang web đăng ký tại Openshift lên Dropbox.

Chú ý: ở đây tôi backup cả mã nguồn vì tất cả các file media (nhạc, ảnh…) tôi để trên máy chủ khác nên mã nguồn của tôi rất nhẹ, nếu các bạn sử dụng với forum, blog mà không dùng CDN riêng (tức lưu trữ file media luôn trên Host) thì tôi e rằng sau khi backup thì khối dữ liệu của bạn sẽ tương đối lớn, về thời gian dài sẽ phát sinh rắc rối do việc upload 1 file quá lớn là không khả thi.

Cập nhật: Những Application gần đây (khoảng tháng 5-2014 trở về hiện tại) thì thư mục chứa mã nguồn đã không còn là /repo/php nữa mà chuyển về /repo luôn. Vì thế mà cần phải chỉnh sửa 1 chút về đường dẫn trong file script. Việc cập nhật này mình đã update lại trong file tải về.

Bước 1. Cài đặt CRON 1.4 cho Openshift Application của bạn.

Đăng nhập vào Openshift, vào ứng dụng của bạn và cài đặt CRON 1.4 trong danh mục các ứng dụng có sẵn.

Nếu bạn đã cài rồi thì bỏ qua bước này.

Bước 2. Tạo 1 cái App trên tài khoản Dropbox của bạn.

Đầu tiên, hãy đăng nhập tài khoản của bạn tại Dropbox.

Tạo 1 thư mục có tên “BackupMyWebsite” trong thư mục chính của bạn tại Dropbox.

Sau khi đăng nhập Dropbox, vào phần dành cho các nhà phát triển tại đây(https://www.dropbox.com/developers/apps/create)

– Chọn DROPBOX API APPS

What type of data does your app need to store on Dropbox?

– Chọn Files and Datastores

Can your app be limited to its own, private folder?

– Chọn No

What type of files does your app need access to?

– Chọn All File Types

Sau đó gõ tên App Dropbox của bạn vào.

Sau khi nhấn Create thì bạn sẽ có AppkeyAppSecret code Chúng ta sẽ sử dụng 2 code này để điền vào khi khởi tạo kết nối xác thực từ Openshift.

Bước 3. Upload mã nguồn Backup lên Openshift và xác thực kết nối đến Dropbox

Bạn tải file mã nguồn tôi đã làm sẵn về và chỉnh sửa nó theo thông số cụ thể của bạn.

Dropbox-Openshift Source

Sau khi giải nén, bạn sẽ có 3 file (autobackup.sh, dropbox_uploader.sh, backup.sh)

Dùng WinSCP kết nối đến Openshift, ban tạo 1 folder có tên “dropboxbackup” tạ:

$HOME/app-root/runtime/ cùng cấp với folder repo.

Upload file dropbox_uploader.sh lên folder mới tạo.

*Tạo kết nối đến Dropbox để xác thực với App Dropbox

Mở terminal có trên WinSCP, di chuyển đến thư mục $HOME/app-root/runtime/dropboxbackup

Gõ lệnh:

Sau đó hệ thống sẽ hỏi đến Appkey và AppSecret

Điền 2 code mà ta đã có vào sau đó nhấn F và Y để đồng ý.

Sau khi chạy xong, trong Folder chứa autobackup.sh và dropbox_uploader.sh sẽ có thêm file .dropbox_uploader ở dạng ẩn. => Đã kết nối OK. File .dropbox_uploader này chứa token để máy chủ Openshift có thể access file trên máy chủ Dropbox của bạn.

Mở file autobackup.sh và chỉnh sửa những thông số sau:

Các thông số về MySQL bạn có thể tra tại đường dẫn /var/lib/openshift/[yourID]/.env/mysql/OPENSHIFT_MYSQL_DB_URL

Trong file này sẽ chứa toàn bộ các câu lệnh tương tác với hệ thống, xuất dữ liệu từ mysql, zip folder… (nếu bạn hiểu về câu lệnh hệ thống Linux thì có thể thêm bớt tùy ý)

Sau khi chỉnh sửa xong, upload tập tin autobackup.sh này lên cùng thư mục với file dropbox_uploader.sh.

Rồi! Xong! Bạn có thể test tại chỗ bằng cách chạy câu lệnh:

(sau khi đã chuyển đến folder $HOME/app-root/runtime/dropboxbackup)

Tại đây bạn sẽ thấy quá trình đóng gói, xuất dữ liệu và upload lên Dropbox. Khá nhanh!

Bước 4. Bước cuối cùng để có thể cho phép hệ thống tự động 1 cách hoàn toàn.

Nhớ rằng để có thể chạy autobackup thì các bạn phải add thêm vào Openshift App của mình bộ CRON 1.4 (thời điểm hiện tại)

Trong thư mục $OPENSHIFT_REPO_DIR/.openshift/cron sẽ có 5 loại: – theo phút – theo giờ – theo ngày – theo tuần – theo tháng

Bạn muốn hệ thống thực hiện tự động sau thời gian bao lâu thì upload file backup.sh lên folder tương ứng.

Video cho sinh động (Đây là của bác Admin bên Congthuong.net – của bác ấy chỉ backup database thôi)

Update:

Cập nhật thêm phần tùy chỉnh Cron:

Mặc định OpenShift chỉ hỗ trợ cronjob vào các mốc thời gian: minutely, hourly, daily, weekly, monthly

Vấn đề đặt ra: nếu chúng ta cần chạy chương trình ở thời điểm khác thì sao? Ví dụ: vào 10AM mỗi ngày, sau 5 – 10 – 15 phút thì sao?

Vậy, cách giải quyết sẽ theo hướng cho chương trình chạy liên tục, nhưng có các lệnh điều kiện để có thể khớp với yêu cầu.

Ví dụ:

Chạy lệnh lúc 5AM

Chạy lệnh sau mỗi 15 phút

Article Tags:
· · · · · · ·
Article Categories:
Code/Web
    http://linholiver.com

    https://linholiver.com/diary/about/