PostgreQuery xử lý các Điểm kiểm tra ở giữa bản sao lưu hỗ trợ WAL như thế nào?


17

Trên PostgreSQL v9.0 Tôi có một hệ thống lưu trữ WAL hoạt động. Vì vậy, WAL lưu trữ một quy định được lưu trữ (khi 3 WAL được tạo hoặc nếu WAL cũ hơn 15 phút).

Bây giờ tôi thêm một gói nhị phân của thư mục PG_DATA (không bao gồm thư mục con pg_xlog). Để làm điều đó tôi thực hiện một pg_start_backup(),bản sao nhị phân, và a pg_stop_backup().

Tôi nghĩ rằng tôi hiểu khá rõ những gì pg_start_backup và pg_stop_backup đang làm, cái đầu tiên tạo một điểm kiểm tra và cái cuối cùng đảm bảo tệp WAL cuối cùng được lưu trữ.

Từ tài liệu chính thức, chúng ta có thể thấy rằng đối với bản sao dữ liệu nhị phân, chúng ta nên:

Thực hiện sao lưu, sử dụng bất kỳ công cụ sao lưu hệ thống tệp thuận tiện như tar hoặc cpio (không phải pg_dump hoặc pg_dumpall). Không cần thiết cũng không mong muốn dừng hoạt động bình thường của cơ sở dữ liệu trong khi bạn làm điều này.

Vì vậy, tôi khá bối rối. Điều này có nghĩa là một Điểm kiểm tra có thể được thực hiện trong khi chúng tôi tạo bản sao. Tôi đã thấy rất nhiều tài liệu nói rằng lệnh sao chép sẽ cho phép thay đổi dữ liệu trong khi thực hiện sao chép, tôi đồng ý với điều đó, đơn giản chỉ là vấn đề tìm kiếm công cụ phù hợp. Nhưng câu hỏi của tôi là làm thế nào postgreSQL sẽ xử lý phục hồi với nội dung pg_data chứa một số tệp không nhất quán (một số từ trước điểm kiểm tra, một số từ sau)?

Bằng cách phát lại nhật ký giao dịch Postgresql sẽ có thể đặt tất cả các tệp này vào đúng trạng thái? Tôi thấy rằng việc tạo bảng và thao tác thả là nguy hiểm trong khi sao lưu đang thực hiện, Không có một số thao tác nguy hiểm như lệnh chân không ? Có pg_backup đình chỉ hoạt động chân không? Tôi có nên tạo một bản sao của tệp toàn cầu / pg_control vào cuối quá trình sao chép nhị phân không? Tôi có nên sử dụng hệ thống tệp hỗ trợ ảnh chụp nhanh (như với đóng băng xfs) để có được quy trình khôi phục nhanh hơn không?

Tôi thấy rằng một sự cố kịch bản sao lưu sẽ không tự động khởi chạy pg_stop_backup, do đó, có khả năng trạng thái sao lưu của tôi tồn tại trong một thời gian dài (cho đến khi nagios của tôi gọi ai đó ở đâu đó để sửa pg_stop_backup ()). Vì vậy, nếu có bất cứ điều gì khác biệt trong PostgreQuery giữa hai đồng chí này tôi muốn biết, để hiểu tác động của nó có thể có.

Xin hãy soi sáng cho tôi.

Câu trả lời:


7

Bạn đã hỏi:

Làm thế nào postgreSQL sẽ xử lý phục hồi với nội dung pg_data chứa một số tệp không nhất quán.

pg_start_backup()đảm bảo tệp dữ liệu ít nhất là mới như điểm kiểm tra. Khi phục hồi, các bản ghi được áp dụng.

Nếu dữ liệu cũ, nhật ký sẽ cập nhật nó ..

Nếu dữ liệu là mới, nhật ký sẽ có cùng nội dung. Không có tổn thương viết nó một lần nữa.

Dữ liệu không bao giờ mới hơn nhật ký, vì nhật ký được ghi trước (WAL).


Bạn đã hỏi:

... xfs-freeze...

xfs-freezeTương tự như vậy pg_start_backup(), nó không chụp nhanh. Bạn cần một người quản lý khối lượng để làm điều đó.


Bạn đã hỏi:

... tại sao việc tạo không gian bảng và tạo các câu lệnh cơ sở dữ liệu không được hỗ trợ nếu WAL có thể phát lại mọi thứ?

Nó được hỗ trợ, chỉ cần một số gotcha nhỏ. Xem http://www.postgresql.org/docs/8.1/static/backup-online.html :

23.3.5. Hãy cẩn thận

TẠO các lệnh TABLESPACE được ghi nhật ký WAL với đường dẫn tuyệt đối theo nghĩa đen và do đó sẽ được phát lại dưới dạng các sáng tạo không gian bảng với cùng một đường dẫn tuyệt đối. Điều này có thể là không mong muốn nếu nhật ký đang được phát lại trên một máy khác. Nó có thể nguy hiểm ngay cả khi nhật ký đang được phát lại trên cùng một máy, nhưng vào một thư mục dữ liệu mới: phát lại vẫn sẽ ghi đè lên nội dung của không gian bảng gốc. Để tránh các vấn đề tiềm năng thuộc loại này, cách tốt nhất là thực hiện sao lưu cơ sở mới sau khi tạo hoặc xóa không gian bảng.


về xfs-freeze Tôi biết điều này cũng phụ thuộc vào trình quản lý âm lượng, nó chỉ là một phần của quy trình chụp nhanh. nhưng chúng tôi có chắc rằng phục hồi WAL sẽ xử lý tốt việc phát lại nhật ký bảng chân không trên bảng nhị phân sau chân không? và nội dung của global / pg_control có quan trọng không? Tại sao tạo không gian bảng & tạo câu lệnh cơ sở dữ liệu không được hỗ trợ nếu WAL có thể phát lại mọi thứ?
regilero

CREATE TABLESPACElàm. xem câu trả lời cập nhật. Tôi không chắc chắn VACUUM, nhưng tôi không thể tưởng tượng tại sao nó sẽ không.
J-16 SDiZ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.