Giải pháp cho việc phòng chống mất dữ liệu cho website chạy trên VPS

Em vẫn giữ phong độ thấy bài hay em share lại, mong ad ủng hộ phong độ này ạ


Đa phần VPS chúng ta dùng đều là thuộc dạng unmanaged tức là mình phải tự quản lý và chịu trách nhiệm với dữ liệu của mình, nhà cung cấp chỉ đảm bảo uptime thôi chứ cũng không cam kết về dữ liệu. Vậy chúng ta có thể làm gì để đảm bảo dữ liệu không bị mất?

Backup thường xuyên

Cái này chắc ai cũng nghĩ ra nhưng liệu nó có thực sự hiệu quả?

  • Với những website có cơ sở dữ liệu lớn ví dụ chỉ 500MB khi gzip thôi thì cũng đã phải tốn rất nhiều tài nguyên cho việc chạy backup.

  • Với những website có lượng media (image, video,…) nhiều ví dụ tầm 10-20GB thì việc backup này cũng không khả thi cho lắm.

  • Với những website có dữ liệu thường xuyên thay đổi, ví dụ mỗi giờ sẽ có thêm 100 comments, 10 user đăng ký, 30 đơn hàng… thì kể cả chúng ta để backup hàng giờ thì khi gặp sự cố vẫn sẽ mất dữ liệu.

Thay đổi kiến trúc hệ thống, chạy HA (High availability)

Ngoài việc backup thường xuyên chúng ta có thể thay đổi website của mình 1 chút để chạy ở chế độ HA (tạm dịch là độ sẵn sàng cao)

  • Sử dụng replication cho CSDL: master-slave, master-master, hoặc group replication. Tức là CSDL sẽ được sao chép theo thời gian thực sang các VPS khác nhau, khi máy chủ chạy chính chết đột ngột thì ta vẫn có bản sao khác theo thời gian thực (tức là gần như không mất 1 tí dữ liệu nào). Nên làm master-slave vì dễ setup, cũng không có quá nhiều requirement đặc biệt.

  • Những dữ liệu dạng file upload lên sẽ được lưu ở cloudstorage (s3). Với giải pháp mount folder và url redirect. Tức là khi lưu file vào thư mục upload thì nó đc đẩy lên s3, khi truy cập url ảnh thì nó sẽ redirect về s3. Chức năng upload, chèn ảnh, sẽ chạy như bình thường mà không cần sửa code, tất nhiên nếu bản thân website hỗ trợ sẵn trong code thì vẫn là tốt nhất.

  • Phần code của website được lưu trên git (github, bitbucket,…)

Xong vậy là xong, giả sử giờ khi vps đang chạy web bị chết, ta chỉ cần làm các việc sau:

  1. Chuyển mysql ở vps dự phòng từ slave thành master

  2. Trỏ lại domain sang ip của vps dự phòng

Thế là website của bạn sẽ chạy tiếp ngay mà không mất 1 tí dữ liệu nào !

Với kiến trúc này bạn nên có khoảng 2 vps dự phòng, ở 2 region khác nhau (nhưng gần nhau: ví dụ VN, HK, Sing), việc cùng lúc chết cả 3 vps ở 3 region mà lại nằm ở 3 nhà cung cấp khác nhau nữa thì quá là khó xảy ra đi !

Còn về s3 thì thường nhà cung cấp cũng sẽ sao chép ra ít nhất 1 bản, hiện tại khả năng mất file trên s3 gần như là = 0

Giá cả của s3 thì ngoài s3 của aws ra thì còn có rất nhiều thằng khác rẻ hơn, như cloudflare r2, backblaze, idrive e2, Do Spaces, Vultr, Wasabi, Hetzner, Contabo, hầu hết các nhà cung cấp vps đều có dịch vụ object storage.

Như vậy trên đây mình đã chia sẻ giải pháp để khi vps chết đột tử thì bạn sẽ có thể có ngay website thay thế trong khoảng 1-2 phút. Ngầu hơn nữa ta có thể làm tự động !

Tất nhiên việc backup vẫn là không thể thiếu vì đôi khi chúng ta vẫn mất dữ liệu không phải do server chết mà do xóa nhầm chẳng hạn thì lúc này backup vẫn hữu ích.

Bài của Facebook Nguyễn Thanh (Group Kiến thức VPS)

2 Lượt thích