Làm cách nào để theo dõi vận chuyển PostgreSQL WAL nếu tôi không sử dụng sao chép phát trực tuyến?


7

Chúng tôi có một thiết lập khá đơn giản để sao chép từ cơ sở dữ liệu PostgreQuery chính tại cơ sở của chúng tôi sang tầng trình bày trong AWS. Chúng tôi đang sử dụng vận chuyển WAL bằng cách sử dụng archive_commandcài đặt. Về cơ bản thiết lập trông như thế này:

    +-------------+
    |   Master    |
    +-------------+
     WAL  |     
segments  |              
         \|/                     +--------------+
    +-------------+   WAL      +-+------------+ |      
    |             |----------->| Hot Standby  | |
    |      S3     |  segments  |   Slaves     | |
    |             |            |              |-+
    +-------------+            +--------------+

Thiết lập này có vẻ khá mạnh mẽ, nhưng tôi không nghĩ ra được cách nào tốt để phát hiện ra các lỗi, hoặc là chủ nhân không đẩy tài liệu lưu trữ lên hoặc nô lệ hoặc nô lệ không lấy được tệp nhật ký. Cách tốt để xác định xem một nô lệ có được cập nhật liên quan đến chủ không? Cách tốt để xác định xem chủ có thất bại trong việc gửi tệp WAL không?

Chỉ cần làm rõ, chúng tôi đang sử dụng nô lệ một cách nghiêm ngặt như đọc bản sao, chúng tôi sẽ không bao giờ chuyển sang chúng.

Câu trả lời:


5

Dưới đây là một vài cách:

  • So sánh pg_current_xlog_location()trên chính với pg_last_xlog_replay_location()ở chế độ chờ. Điều đó sẽ cung cấp cho bạn độ trễ tính bằng byte, có thể không hữu ích cho việc cảnh báo, nhưng nó có thể hữu ích để lập biểu đồ cho nó.
  • Giám sát pg_last_xact_replay_timestamp()ở chế độ chờ so với thời gian hiện tại.
  • Có một công việc định kỳ trên chính định kỳ sửa đổi một giá trị và sau đó kiểm tra xem phải mất bao lâu để đến chế độ chờ. Đó thực chất là cách nó từng được thực hiện trước khi pg_last_xact_replay_timestamp()có sẵn.
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.