Bản sao phát trực tuyến PostgreSQL 9.1 có bắt kịp sau khi không có lưu trữ WAL không?


16

Bối cảnh:

Giả sử rằng, trong khi sử dụng Phát trực tuyến / Chế độ chờ nóng trên cụm Postgres 9.1, một nút chờ sẽ bị hỏng. Nó nằm yên trong một ngày, trong thời gian đó có rất nhiều DML xảy ra trên bản gốc. Recovery.conf của chế độ chờ không chứa mục nhập 'restore_command' (để khôi phục từ các tệp nhật ký WAL), nhưng có chứa chuỗi 'chính_conninfo' (đối với Bản sao phát trực tuyến).

Câu hỏi:

Nếu tôi bắt đầu lại chế độ chờ sau một ngày thay đổi trên bản gốc. Liệu nó có "bắt kịp" (cuối cùng đi vào trạng thái phản chiếu chính chủ) chỉ bằng cách sử dụng Phát trực tuyến? Hoặc tôi phải kích hoạt lưu trữ tệp WAL và để nó áp dụng các tệp được lưu trữ trong thời gian ngừng hoạt động để đảm bảo tiền tệ?

Tôi đã kiểm tra tài liệu sao chép lưu trữ / phát trực tuyến WAL ở đây và thông báo rằng bạn không phải bật cả lưu trữ WAL và Sao chép phát trực tuyến, nhưng không rõ liệu có bắt kịp hay không nếu không lưu trữ tệp WAL.

Cảm ơn!

Câu trả lời:


9

Có, nó sẽ bắt kịp, chỉ sử dụng phát trực tuyến, nếu (và chỉ khi) , số lượng phân đoạn WAL được tạo kể từ lần cập nhật cuối cùng ở chế độ chờ nhỏ hơn giá trị của wal_keep_segments trong postgresql.conf. Điều này được đề cập trong phần này của tài liệu: Nhân rộng


2
Câu trả lời này là chính xác, nhưng nó làm nổi bật vấn đề. Nếu bạn đã từng vượt qua wal_keep_segments, bản sao của bạn đã chết. Thiết lập sao chép dựa trên tệp không phải là tùy chọn nếu bạn muốn một hệ thống sẽ tồn tại sự ngắt kết nối dài từ bản gốc và bắt kịp.
Greg Smith

0

tại nút chờ, bạn có thể đặt restore_command trên recovery.conf và sau đó sao chép các tệp pg_xlog (thiếu trên chế độ chờ) của chủ vào thư mục mà điểm_c_candand khôi phục. Bạn có thể dễ dàng tìm thấy các tệp xlog bị thiếu bằng cách bắt đầu nút khởi động và nhập

ps aux | grep postgres

bạn sẽ thấy ở đó "chờ 000000020000005200000025" hoặc đại loại như thế này, cho bạn biết pg_xlog nào bạn nên bắt đầu sao chép từ đường dẫn chính sang chế độ chờ_command của chế độ chờ.

nếu bạn bật wal_archiving, nó sẽ bắt đầu lưu trữ từ thời điểm bạn thiết lập.


Tôi hiểu rằng bằng cách sử dụng lưu trữ WAL dựa trên tệp và cung cấp chế độ chờ cho chế độ khôi phục để tải tệp WAL, tôi có thể đảm bảo rằng nó bắt kịp. Đó không phải là câu hỏi của tôi, mặc dù; Tôi muốn biết liệu chế độ chờ có bắt kịp hay không nếu tôi chỉ sử dụng sao chép phát trực tuyến (không vận chuyển tệp WAL, chỉ là luồng sao chép như được chỉ định trong 'chính_conninfo').
Zac B

Không. postgres không làm điều đó. bạn nên sao chép các tệp nhật ký nếu có sự chậm trễ trên bản sao của bạn.
sraftz

0

Không, tôi đã thiết lập một phiên bản sao chép phát trực tuyến và nó không đồng bộ bằng cách nào đó, tôi không thể làm cho nó hoạt động trở lại cho đến khi tôi làm một hướng dẫn rsynclưu trữ WAL.

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.