Snapshot là gì ở đây
Một bản sao tại một thời điểm của đĩa instance, được tạo ở lớp lưu trữ và ghi vào một nơi lưu trữ khác với nơi instance chạy. Các slot được bán theo gói; một slot giữ một snapshot và được sử dụng lại khi bạn ghi đè lên nó. Việc tạo snapshot không tạm dừng instance, và chi phí copy-on-write trong vài phút sau đó đủ nhỏ để hiếm khi xuất hiện trên biểu đồ độ trễ.
Đây không phải là bản sao lưu (backup). Một snapshot nằm cùng vị trí với instance, nó bảo vệ bạn khỏi sự cố của chính bạn (rm) chứ không phải khỏi sự cố của hạ tầng. Sao lưu ngoài nút (off-node) là một tiện ích bổ sung riêng, được mã hóa ở phía bạn, ghi vào một thành phố khác.
Tạo snapshot
curl -s -X POST https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"label":"pre-upgrade"}'curl -s https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" | jq -r '.[] | .id + " " + .label + " " + .created'Crash-consistent, và khi điều đó là chưa đủ
Một snapshot của một instance đang chạy chính xác là những gì đĩa sẽ trông như thế nào sau khi mất điện. PostgreSQL, MariaDB và mọi hệ thống tệp nhật ký (journalling) trong image của chúng tôi đều khôi phục từ trạng thái đó khi khởi động, bởi vì khôi phục từ đó là mục đích của chúng. Rủi ro không thực sự là cơ sở dữ liệu. Mà là ứng dụng của chính bạn, đang giữa chừng khi ghi hai tệp mà phải khớp với nhau.
Khi bạn cần một ranh giới sạch, hãy flush và đóng băng (freeze) volume dữ liệu trong một giây:
sync
fsfreeze -f /srv/data
# take the snapshot here
fsfreeze -u /srv/dataĐóng băng volume dữ liệu. Không bao giờ đóng băng /. Một hệ thống tệp gốc bị đóng băng sẽ ngăn chặn chính quá trình có nhiệm vụ mở đông nó làm bất cứ điều gì, và cách thoát ra là khởi động lại cứng.
Đối với cơ sở dữ liệu, lựa chọn gọn gàng hơn là tạo snapshot rồi để engine tự khôi phục, sau đó kiểm tra xem nó đã khôi phục chưa:
sudo -u postgres pg_isready
journalctl -u postgresql -n 50Khôi phục
Việc khôi phục dừng instance, thay đĩa bằng snapshot, và khởi động lại. Mất vài giây, không phải vài phút. Địa chỉ không thay đổi, reverse DNS bạn đã đặt vẫn còn, và mọi thứ ghi sau khi snapshot bị mất.
Điều đó bao gồm cả thứ khiến bạn quyết định khôi phục. Nếu có bất kỳ khả năng bạn sẽ muốn đọc log từ trạng thái hỏng, hãy tạo một snapshot trước rồi mới khôi phục chồng lên.
curl -s -X POST https://paragonvps.com/api/v1/snapshots/<snapshot-id>/restore -H "Authorization: Bearer $Paragon_TOKEN"Lập lịch
Lịch theo từng instance xuất hiện từ bản sửa đổi nền tảng 5.4. Tùy chọn phổ biến là tạo hằng ngày vào một giờ cố định với cửa sổ trượt: snapshot cũ nhất sẽ bị xóa khi các slot đầy.
curl -s -X PUT https://paragonvps.com/api/v1/instances/<instance-id>/snapshot-schedule -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"cron":"20 3 * * *","keep":7}'Chọn giờ nào yên tĩnh đối với khối lượng công việc của bạn chứ không phải của chúng tôi. Chi phí lưu trữ của snapshot tỷ lệ với những thay đổi sau đó, vì vậy lịch tạo snapshot trong lúc batch job ban đêm của bạn sẽ giữ nhiều dữ liệu hơn nhiều so với một giờ sau đó.
Hủy instance sẽ xóa các snapshot của nó
Ngay lập tức, không có thời gian gia hạn, vì chúng được lưu trữ theo instance. Bất cứ thứ gì bạn muốn giữ sau khi hủy thuộc về bản sao lưu ngoài nút hoặc một nơi nào đó hoàn toàn không phải chúng tôi.