Phiên bản được hỗ trợ:13
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên tỷ lệ kèo bóng đá tối nay thế.

26.4. Phương thức thay thế để tỷ lệ kèo bóng đá tối nay ký

Một giải pháp tỷ lệ kèo bóng đá tối nay thế cho chế độ chờ tích hợp được mô tả trong các phần trước là sử dụngrestore_commandThă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. Trong thiết lập này, SETstandby_modeTắt, vì bạn đang thực hiện bỏ phiếu cần thiết cho hoạt động dự phòng. Xempg_standbyMô -đ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 WAL ONE TÍNH TOÁN một lần, vì vậy nếu bạn sử dụng máy chủ dự phòng cho các truy vấn (xem Hot Standby), 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 trong chế độ chờ, tương ứng với thời gian để điền vào tệp WAL.archive_timeoutcó 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 tỷ lệ kèo bóng đá tối nay 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 liên hệ 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 ghép nối một cách 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. Therestore_commandđược chỉ định trongrecovery.confTệp trên máy chủ dự phòng. 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.HistoryKhông cần phải chờ đợi, và phải trả về mã trả lại khác không. Chờ đợirestore_commandcó 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 tỷ lệ kèo bóng đá tối nay đổi dự phòng, sẽ làm gián đoạnrestore_command, phá vỡ vòng lặp và trả lại lỗi không có tệp cho máy chủ dự phòng. Điều này kết thúc phục hồi và dự phòng sau đó sẽ trở thành một máy chủ bình thường.

Pseudocode cho phù hợprestore_commandIS:

đượ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 trongpg_standbyMô -đun. Nó nên được sử dụng làm tài liệu tham khảo về cách 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 tỷ lệ kèo bóng đá tối nay đổ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_commandLệnh. Nó được thực thi một lần cho mỗi tệp wal, nhưng quá trình chạyrestore_commandđược tạo và chết cho mỗi tệp, do đó không có quy trình daemon hoặc máy chủ, và tín hiệu hoặc trình xử lý tín hiệu không thể được sử dụng. Do đó,restore_commandkhông phù hợp để kích hoạt tỷ lệ kèo bóng đá tối nay đổ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_TimeoutCài đặ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 tỷ lệ kèo bóng đá tối nay đổ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.

26.4.1. Triển khai

Quy trình ngắn để định cấu hình máy chủ dự phòng bằng phương pháp tỷ lệ kèo bóng đá tối nay 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 ý.

  1. Thiết lập các hệ thống chính và dự phòng gần như giống hệt nhau nhất 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.

  2. 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_Commandarchive_timeoutđược đặt một cách thích hợp trên chính (xemPhần 25.3.1).

  3. 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ờ.

  4. 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ụngrecovery.confChỉ định Arestore_commandĐang chờ như mô tả trước đây (xemPhần 25.3.4).

Recovery xử lý kho lưu trữ WAL chỉ đọc, do đó, một khi tệp WAL đã được sao chép vào hệ thống dự phòng, nó có thể được sao chép vào băng cùng lúc với máy chủ cơ sở dữ liệu dự phòng. Do đó, chạy máy chủ dự phòng cho tính khả dụng cao có thể được thực hiện cùng lúc với các tệp được lưu trữ cho mục đích khắc phục thảm họa dài hạn.

Đố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.

26.4.2. tỷ lệ kèo bóng đá tối nay ký dựa trên bản ghi

Cũng có thể triển khai tỷ lệ kèo bóng đá tối nay 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.26) Để 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 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_commandCá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_commandtậ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.