Một giải pháp cách đọc kèo bóng đá thế cho chế độ chờ tích hợp được mô tả trong các phần trước là sử dụngrestore_command
Thăm dò vị trí lưu trữ. Đây là tùy chọn duy nhất có sẵn trong các phiên bản 8.4 trở xuống. Xemkèo bóng đáMô -đun để thực hiện tham chiếu về điều này.
Lưu ý rằng trong chế độ này, máy chủ sẽ áp dụng tệp wal một tại một thời điểm, vì vậy nếu bạn sử dụng máy chủ dự phòng cho các truy vấn (xem chế độ chờ nóng), có một sự chậm trễ giữa một hành động trong chính và khi hành động có thể nhìn thấy ở chế độ chờ, tương ứng với thời gian để điền vào tệp WAL.archive_timeout
có thể được sử dụng để làm cho độ trễ đó ngắn hơn. Cũng lưu ý rằng bạn không thể kết hợp sao chép phát trực tuyến với cách đọc kèo bóng đá này.
Các hoạt động xảy ra trên cả máy chủ chính và máy chủ dự phòng là các tác vụ lưu trữ và phục hồi liên tục bình thường. Điểm tiếp xúc duy nhất giữa hai máy chủ cơ sở dữ liệu là kho lưu trữ các tệp WAL mà cả hai chia sẻ: Viết chính vào kho lưu trữ, đọc chờ từ kho lưu trữ. Phải cẩn thận để đảm bảo rằng Lưu trữ Wal từ các máy chủ chính riêng biệt không được trộn lẫn với nhau hoặc bối rối. Lưu trữ không cần phải lớn nếu nó chỉ được yêu cầu cho hoạt động chờ.
Phép thuật làm cho hai máy chủ được kết hợp lỏng lẻo hoạt động cùng nhau chỉ đơn giản là mộtrestore_command
Được sử dụng ở chế độ chờ, khi được yêu cầu tệp WAL tiếp theo, hãy chờ nó có sẵn từ chính. Xử lý phục hồi thông thường sẽ yêu cầu một tệp từ kho lưu trữ Wal, báo cáo thất bại nếu tệp không có sẵn. Để xử lý dự phòng, việc không có tệp WAL tiếp theo là bình thường, vì vậy dự phòng phải chờ nó xuất hiện. Cho các tệp kết thúc trong.History
Không cần phải chờ, và phải trả lại mã trả lại không phải. Chờ đợirestore_command
có thể được viết dưới dạng tập lệnh tùy chỉnh vòng lặp sau khi bỏ phiếu cho sự tồn tại của tệp WAL tiếp theo. Cũng phải có một số cách để kích hoạt cách đọc kèo bóng đá đổi dự phòng, sẽ làm gián đoạnrestore_command
10487_10635
Pseudocode cho phù hợprestore_command
IS:
được kích hoạt = false; while (! nextWalfileReady () &&! đã kích hoạt) ngủ (100000L); / * Chờ ~ 0,1 giây */ if (CheckForExternalTrigger ()) được kích hoạt = true;
Một ví dụ hoạt động của sự chờ đợirestore_command
được cung cấp trongkèo bóng đáMô -đun. Nó nên được sử dụng làm tài liệu tham khảo về cách đọc kèo bóng đá thực hiện chính xác logic được mô tả ở trên. Nó cũng có thể được mở rộng khi cần thiết để hỗ trợ các cấu hình và môi trường cụ thể.
Phương pháp kích hoạt cách đọc kèo bóng đá đổi dự phòng là một phần quan trọng trong lập kế hoạch và thiết kế. Một tùy chọn tiềm năng làrestore_command
lệnh. Nó được thực thi một lần cho mỗi tệp wal, nhưng quá trình chạyrestore_command
11703_11845restore_command
không phù hợp để kích hoạt cách đọc kèo bóng đá đổi dự phòng. Có thể sử dụng một cơ sở thời gian chờ đơn giản, đặc biệt là nếu được sử dụng cùng với đã biếtarchive_timeout
Đặt trên chính. Tuy nhiên, điều này có phần dễ bị lỗi vì sự cố mạng hoặc máy chủ chính bận có thể đủ để bắt đầu cách đọc kèo bóng đá đổi dự phòng. Một cơ chế thông báo như tạo ra tệp kích hoạt rõ ràng là lý tưởng, nếu điều này có thể được sắp xếp.
Quy trình ngắn để định cấu hình máy chủ dự phòng bằng phương pháp cách đọc kèo bóng đá thế này như sau. Để biết chi tiết đầy đủ của từng bước, hãy tham khảo các phần trước như đã lưu ý.
Thiết lập các hệ thống chính và dự phòng gần như có thể, bao gồm hai bản sao giống hệt nhau củaPostgreSQLở cùng một mức phát hành.
Thiết lập lưu trữ liên tục từ chính đến thư mục lưu trữ Wal trên máy chủ dự phòng. Đảm bảo rằngarchive_mode, Archive_CommandvàArchive_Timeoutđược đặt một cách đọc kèo bóng đá thích hợp trên chính (xemPhần 25.3.1).
Tạo bản sao lưu cơ sở của máy chủ chính (xemPhần 25.3.2) và tải dữ liệu này vào chế độ chờ.
Bắt đầu khôi phục trên máy chủ dự phòng từ kho lưu trữ Wal cục bộ, sử dụngrestore_command
Đang chờ như mô tả trước đây (xemPhần 25.3.4).
14312_14661
Đối với mục đích thử nghiệm, có thể chạy cả máy chủ chính và máy chủ dự phòng trên cùng một hệ thống. Điều này không cung cấp bất kỳ sự cải thiện đáng giá nào trong sự mạnh mẽ của máy chủ, cũng như không được mô tả là ha.
Cũng có thể thực hiện cách đọc kèo bóng đá ký dựa trên bản ghi bằng phương pháp thay thế này, mặc dù điều này đòi hỏi sự phát triển tùy chỉnh và các thay đổi vẫn sẽ chỉ hiển thị đối với các truy vấn dự phòng nóng sau khi tệp WAL đầy đủ được vận chuyển.
Một chương trình bên ngoài có thể gọipg_walfile_name_offset ()
Hàm (xemPhần 9.27) để tìm ra tên tệp và phần bù byte chính xác trong đó của đầu hiện tại của Wal. Sau đó, nó có thể truy cập trực tiếp vào tệp WAL và sao chép dữ liệu từ đầu cuối của Wal được biết đến qua đầu hiện tại vào các máy chủ dự phòng. Với cách đọc kèo bóng đá tiếp cận này, cửa sổ mất dữ liệu là thời gian chu kỳ bỏ phiếu của chương trình sao chép, có thể rất nhỏ và không có băng thông lãng phí từ việc buộc các tệp phân đoạn được sử dụng một phần được lưu trữ. Lưu ý rằng các máy chủ dự phòng 'restore_command
Các tập lệnh chỉ có thể xử lý toàn bộ các tệp WAL, vì vậy dữ liệu được sao chép tăng dần không được cung cấp thông thường cho các máy chủ dự phòng. Nó chỉ sử dụng khi các chính chết chính - thì tệp WAL một phần cuối cùng được đưa vào chế độ chờ trước khi cho phép nó xuất hiện. Việc thực hiện chính xác quá trình này đòi hỏi sự hợp tác củarestore_command
tập lệnh với chương trình sao chép dữ liệu.
Bắt đầu vớiPostgreSQLPhiên bản 9.0, bạn có thể sử dụng sao chép phát trực tuyến (xemPhần 26.2.5) để đạt được những lợi ích tương tự với ít nỗ lực hơn.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.