Hướng dẫn tự động backup code và database sang một server/VPS khác

June 11th, 2014 by 64 Comments | Last Modified: July 9th, 2015

Khi sử dụng VPSSIM  trên VPS , bạn có thể backup codemysql rất dễ dàng với tiện ích tích hợp sẵn nhưng tất cả những dữ liệu này đều nằm trên VPS đang sử dụng. Vì vậy, giải pháp này vẫn chưa an toàn khi VPS gặp sự cố dữ liệu backup vẫn có thể mất hết. Cách tốt nhất là bạn backup dữ liệu sang một VPS khác,và bạn có thể chọn nhà cung cấp VPS khác thì sẽ an toàn hơn nữa khi tránh được rủi ro với data center .

Sau đây mình sẽ hướng dẫn các bạn cách tự động backup hàng ngày code và database của VPS sang một VPS khác.
Bài viết cho VPS sử dụng VPSSIM để cài đặt PHP-FPM, Nginx và MariaDB nên folder chứa tất cả các website là home. Bạn thay đường dẫn cho phù hợp với VPS của mình nhé !

Về cách phục hồi lại VPS từ VPS backup, bạn có thể xem tại: Hướng dẫn phục hồi website và database trên VPS/Server từ VPS backup

1. Chuẩn bị VPS để lưu backup

Bạn có thể tận dụng các mã giảm giá của VULTR , Digitalocean, Ramnode, để mua cho mình một VPS mới để sử dụng làm VPS backup. VPS này không cần cấu hình cao mà chỉ cần dung lượng ổ cứng đáp ứng đủ nhu cầu của bạn là được.

Xem thêm:

Hướng dẫn tự động backup code và database sang một server/VPS khác

2. Cài đặt rsync cho cả hai VPS chính và phụ

Chúng ta cần có phần mềm rsync ở cả hai VPS để quá trình backup có thể thực hiện được.

Chúng ta sẽ cài rsync ở cả hai VPS bằng lệnh:

3.  Cho phép VPS đang sử dụng có thể đăng nhập vào VPS lưu backup mà không cần nhập mật khẩu

Với VPS lưu backup, bạn có thể chọn hệ điều hành ubuntu hoặc centos. Mình chọn centos và không cài đặt thêm một phần mềm nào khác ngoài CSF để chống hacker scan port và hack VPS này. Nếu VPS phụ cài đặt CSF thì Khi cài đặt CSF xong phải điền địa chỉ IP VPS chính vào csf.allow trong /etc/csf/ để VPS chính không bị csf chặn khi đăng nhập vào VPS phụ trong tất cả các trường hợp.

Bây giờ ta sẽ cho phép VPS chính có thể đăng nhập vào VPS phụ mà không cần nhập mật khẩu. Điều này giúp ta chuyển file backup sang vps phụ một cách tự động mà không cần login mỗi khi traffer file sang. Ta làm như sau:

Bạn đăng nhập vào VPS chính qua SSH và gõ lệnh sau:

Lệnh trên sẽ tạo một SSH-Key trên VPS chính. Sau đó ta sẽ copy ssh -key này sang VPS phụ

Nhập mật khẩu tài khoản root VPS phụ để hoàn thành việc copy ssh-key .
bạn thay IP_VPS_Phụ bằng IP chứa file backup của bạn nhé !

Ví dụ: IP VPS phụ là 123.456.789 thì ta dùng lệnh như sau:

Sau khi hoàn thành bước này, ta tiếp tục tới bước tiếp theo.

4. Tạo script backup Code và database

Chú ý:  Ta sẽ backup dữ liệu bên VPS chính sang VPS phụ vào thư mục backup trong home. Vì vậy trước khi backup, bên VPS phụ ta cần tạo foder backup trong home và chmod 777 cho folder này.

Ta dùng lệnh sau bên VPS phụ :

 

+ Trường hợp với MySQL engine là MyISAM

(xem thêm về MySQL engine và cách chọn engine tốt nhất cho website )
Với MySQL là MyISAM ta có thể sử dụng cách backup đơn giản dưới đây hoặc dùng cách backup dành cho innodb đều được

Với MyISAM bạn có thể backup database rât đơn giản bằng cách chuyển toàn bộ thư mục mdysql sang vps phụ là ta có thể backup xong database rồi. Khi cần restore, ta chỉ việc đưa folder mysql backup về vị trí cũ là xong.
Bây giờ ta sẽ tạo một script sử dụng rsync (một tiện ích có sẵn trên linux) để backup toàn bộ code, database, folder nginx (chứa các file vhost )

Tạo một file trên backup_VPS.sh với nội dung sau:

Khi script backup_VPS chay, nó sẽ sao lưu thư mục home, mysql , và nginx sang bên VPS phụ với các folder tương đương trong home/backup bên VPS phụ. Nếu bạn muốn backup từng website cụ thể, bạn có thể chỉnh sửa đoạn mã trên theo ý mình.

Nếu bạn sử dụng cache cho website của mình, ta có thể thêm lệnh clear cache trước khi backup. Ta thêm lệnh sau vào dưới dòng #!/bin/bash trong backup_VPS.sh :

Bạn thay đường dẫn folder cache cho chính xác với đường dẫn của bạn nhé !

+ Trường hợp với MysSQL engine là Innodb hay bất kỳ Engine khác

Trong trường hợp này, bạn sử dụng mysqldump để backup database sau đó rsync file backup sang VPS phu. Xem thêm về mysqldump tại Sao lưu và phục hồi database dung lượng lớn bằng mysqldump

Cách thực hiện như sau:
Tạo một folder mới trong thư mục chứa tất cả các website – home. Ta đặt tên folder này là backupmysql chẳng hạn.

Bạn tạo một file tên là backup_VPS.sh với nội dung sau:

Mình giải thích đoạn mã trên nhé !

chúng ta sẽ backup tất cả các database với người dùng là root, nén nó lại và đưa về folder backupmysql trong thư mục home. File backup này đặt tên theo ngày tháng backup.
Nếu bạn backup từng database thì dùng lệnh sau thay cho lệnh trên:

ví dụ: ta backup tất cả các database với user là root, mật khẩu là 123456 ta được lệnh như sau:

file backup sẽ có dạng: 2014-06-10_dbbackup_.sql.gz nếu lệnh tự động chạy trong ngày 10/6/2014.

Sau khi tạo xong file nén backup database, toàn bộ folder chứa các file nén này cùng với tất cả website sẽ rsync sang VPS phụ.

Cũng như trên ta có thể thêm tùy chọn delete cache bằng cách thêm mã sau vào dưới dòng #!/bin/bash trong file backup_VPS.sh

thay đường dẫn đúng với đường dẫn cache website của bạn.

5. Upload file backup_VPS.sh lên VPS và Chmod

Ta upload backup_VPS lên thư mục home của VPS chính, sau đó sử dụng lệnh sau trong ssh để chmod file này

6. Tạo Cronjob để backup VPS tự động

Sau khi đã tạo xong backup_VPS.sh, upload lên vps, chmod xong. ta tạo một cronjob để nó run tự động theo thời gian định trước. Nếu bạn chưa có Cronjob nào đang chạy bạn có thể dùng lệnh dưới:

hoặc  bạn dùng lệnh dưới để thêm cronjob backup vào phía dưới dòng cronjob đang chạy:

Đoạn mã trên có nghĩa là hàng ngày vào lúc 3h30, script backup_VPS.sh sẽ tự động chạy để backup VPS cho bạn.

7. Kiểm tra cronjob đã add thành công chưa

Ta dùng lệnh sau để kiểm tra.

Nếu được kết quả như dưới là thành công

Để chọn thời điểm backup hàng ngày, hàng tuần hay các mốc thời gian khác một cách dễ dàng, bạn có thể sử dụng tiện ích tạo lệnh cronjob bằng GUi trên hostingaz.info. Bạn vào Tạo CronJob đơn giản cho VPS/Server bằng GUI nha.

Tất cả file backup sẽ đặt trong foler home bên VPS phụ nhé!

8. Cách phục hồi VPS từ VPS backup

Bạn xem cách phục hồi VPS từ VPS backup trong bài viết:  Hướng dẫn phục hồi website và database trên VPS/Server từ VPS backup

Xem thêm:

Chúc các bạn thành công.

64 Comments
  1. Posted by Hoang Phuc
  2. Posted by Việt Coding
    • Posted by Nguyễn Oánh
  3. Posted by Cường
    • Posted by Nguyễn Oánh
  4. Posted by Mr.Linh
    • Posted by Nguyễn Oánh
      • Posted by Mr.Linh
        • Posted by Nguyễn Oánh
  5. Posted by Mr.Linh
    • Posted by Nguyễn Oánh
      • Posted by Mr.Linh
        • Posted by Nguyễn Oánh
          • Posted by Mr.Linh
            • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
  6. Posted by Mr.Linh
    • Posted by Nguyễn Oánh
      • Posted by Mr.Linh
        • Posted by Nguyễn Oánh
          • Posted by Mr.Linh
            • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
              • Posted by Mr.Linh
                • Posted by Nguyễn Oánh
  7. Posted by Cường
    • Posted by Nguyễn Oánh
  8. Posted by Cường
  9. Posted by Minh bao
    • Posted by Nguyễn Oánh
      • Posted by Nguyen Xuan Giang
        • Posted by Nguyễn Oánh
  10. Posted by Minh bao
  11. Posted by Trọng
    • Posted by Nguyễn Oánh
  12. Posted by Trang
  13. Posted by Minh Bao
    • Posted by Nguyễn Oánh
  14. Posted by Trọng

Bình luận của bạn

Bạn vui lòng sử dụng tên thật hay nickname và không sử dụng từ khóa trong phần điền tên. Nếu vi phạm, mình xin phép không cho hiện comment trên site. Cảm ơn bạn.



:xauho: :roll: :oops: :nono: :mrgreen: :mofat: :macf: :data: :cry: :claps: :bye: :batfa: :ZZZM: :D ::tholoz: ::meney: ::kiss:: ::fulltime: ::cuoiroile:: ::chugun: ::chenhca: ::cave: ::bank: ::CRTTS: :-| :-D :-? 8)
KHUYẾN MẠI ĐẶC BIỆT ! VULTR Đang Tặng 52 USD Cho Tài Khoản Mới ! GET COUPON NOW
Hello. Add your message here.