Chúng tôi đang chạy nhiều máy ảo Linux trong môi trường lưu trữ chia sẻ / vmware, mỗi máy chạy phiên bản riêng của postgreQuery (kết hợp giữa 9.0 và 9.3). Hiện tại, toàn bộ VM nằm trên một phân vùng / khối gốc duy nhất và chúng tôi đã thành công lớn (~ 8 năm) khi sử dụng các ảnh chụp nhanh dựa trên lưu trữ của các khối VMFS cơ bản cho quá trình sao lưu / khôi phục (và sao chép vào trang DR của chúng tôi).
Do kiến trúc lưu trữ của chúng tôi, sẽ rất thuận lợi khi tách các tệp WAL postgres thành một ổ đĩa không ghi, chủ yếu ghi vào bộ nhớ cache để cung cấp cho chúng tôi ít bộ đệm hơn ở phía lưu trữ. Với bộ lưu trữ của chúng tôi (Bộ lưu trữ nhanh nhẹn), chúng tôi có thể gán cả hai khối cho một nhóm bảo vệ / ảnh chụp nhanh, nhưng tôi không thể nói với nhà cung cấp của mình rằng các ảnh chụp nhanh sẽ xảy ra cùng lúc trên tất cả các khối trong nhóm bảo vệ - nó có khả năng sẽ xảy ra, nhưng luôn có cơ hội cách nhau một phần nghìn giây.
Cuối cùng, chúng tôi đã chạy một số thử nghiệm, trong khi ghi dữ liệu vào DB nhanh nhất có thể bằng pg_bench. Sau các thử nghiệm, chúng tôi đã khôi phục khối lượng ảnh chụp nhanh của mình và bắt đầu các postgres VM +
- Ảnh chụp nhanh cả dữ liệu và khối lượng nhật ký gần đồng thời - kết quả: DB đã phục hồi
- Ảnh chụp dữ liệu trước, khối lượng nhật ký ~ 1 phút sau - kết quả: DB đã phục hồi
- Khối lượng nhật ký ảnh chụp trước, khối lượng dữ liệu ~ 1 phút sau - kết quả: DB đã phục hồi
- Khối lượng nhật ký ảnh chụp trước, khối lượng dữ liệu ~ 3 phút sau, sau khi điểm kiểm tra WAL ghi dữ liệu mới vào dữ liệu: kết quả: DB đã phục hồi
Vì vậy, việc kiểm tra dường như cho chúng ta biết chừng nào cả hai ảnh chụp nhanh đều nhất quán ở mức âm lượng và tương đối gần nhau, bạn sẽ có được một bản sao nhất quán của DB, dựa trên thời gian của ảnh chụp nhanh khối lượng WAL / Log.
Câu hỏi của tôi: Điều này có an toàn không? Các trường hợp góc chúng tôi đang thiếu trong thử nghiệm của chúng tôi là gì, và những gì có thể đi sai?
Tài liệu của Postgres cho thấy điều này không an toàn, nhưng thử nghiệm dường như cho thấy nó khá mạnh mẽ: http://www.postgresql.org/docs/9.1/static/backup-file.html
Nếu cơ sở dữ liệu của bạn trải đều trên nhiều hệ thống tệp, có thể không có cách nào để có được các ảnh chụp nhanh được đóng băng đồng thời chính xác của tất cả các khối. Ví dụ: nếu tệp dữ liệu và nhật ký WAL của bạn nằm trên các đĩa khác nhau hoặc nếu không gian bảng nằm trên các hệ thống tệp khác nhau, có thể không thể sử dụng sao lưu ảnh chụp nhanh vì các ảnh chụp nhanh phải đồng thời. Đọc tài liệu hệ thống tệp của bạn rất cẩn thận trước khi tin tưởng vào kỹ thuật chụp nhanh nhất quán trong các tình huống như vậy.
LƯU Ý: Có, chúng tôi biết về các tùy chọn khác để đảm bảo chúng phù hợp, như đưa PostgreSQL vào chế độ sao lưu nóng hoặc sử dụng tích hợp VMware của bộ lưu trữ của chúng tôi để tự kiểm tra VM, nhưng chúng tôi đang tìm giải pháp chỉ lưu trữ để tăng tốc, thuận tiện, và không ảnh hưởng đến khách hàng của chúng tôi.