PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Quản lý tính khả dụng cao của PostgreSQL - Phần I:Chuyển đổi dự phòng tự động PostgreSQL

Quản lý Tính sẵn sàng cao (HA) trong lưu trữ PostgreSQL của bạn là chủ đề rất quan trọng để đảm bảo các cụm triển khai cơ sở dữ liệu của bạn duy trì thời gian hoạt động đặc biệt và hiệu suất hoạt động mạnh mẽ để dữ liệu của bạn luôn có sẵn cho ứng dụng của bạn. Trong một bài đăng trên blog trước đó, chúng tôi đã giới thiệu với bạn cách định cấu hình tính khả dụng cao cho PostgreSQL bằng cách sử dụng tính năng sao chép trực tuyến và bây giờ chúng tôi sẽ hướng dẫn bạn cách quản lý tốt nhất tính khả dụng cao của phía máy khách.

Có nhiều công cụ có sẵn để quản lý tính khả dụng cao (HA) của các cụm triển khai PostgreSQL của bạn bằng cách sử dụng sao chép trực tuyến. Các giải pháp này cung cấp khả năng chuyển đổi dự phòng tự động, theo dõi tính khả dụng và trạng thái hệ thống, nhân rộng, quản lý người dùng và các tác vụ quản trị hữu ích khác trên các trường hợp sử dụng cho cơ sở dữ liệu Postgres. Một số giải pháp nguồn mở nổi bật bao gồm:

  1. Chuyển đổi dự phòng tự động PostgreSQL bằng ClusterLabs

  2. Trình quản lý nhân bản cho các cụm PostgreSQL của repmgr (2ndQuadrant)

  3. Patroni của Zalando

Mỗi công cụ cung cấp cách riêng để quản lý các cụm PostgreSQL có tính khả dụng cao. Trong loạt bài đăng gồm ba phần của chúng tôi về HA cho PostgreSQL, chúng tôi sẽ chia sẻ tổng quan, các điều kiện tiên quyết, cũng như kết quả làm việc và thử nghiệm cho từng công cụ trong số ba công cụ này. Ở đây trong Phần 1, chúng ta sẽ đi sâu vào giải pháp PAF của ClusterLabs.

  • Quản lý tính khả dụng cao trong PostgreSQL - Phần II:Trình quản lý nhân rộng
  • Quản lý tính khả dụng cao trong PostgreSQL - Phần III:Patroni

Làm cách nào để Quản lý Tính sẵn sàng cao cho Cơ sở dữ liệu PostgreSQL của bạn?

PostgreSQL Automatic Failover (PAF) là một giải pháp quản lý tính khả dụng cao cho PostgreSQL của ClusterLabs. Nó sử dụng sao chép đồng bộ Postgres để đảm bảo rằng không có dữ liệu nào bị mất tại thời điểm thực hiện chuyển đổi dự phòng. Nó sử dụng ngăn xếp Máy tạo nhịp tim và Corosync phổ biến, tiêu chuẩn ngành. Với các ứng dụng Pacemaker và Corosync kết hợp với nhau, bạn sẽ có thể phát hiện các lỗi cơ sở dữ liệu PostgreSQL trong hệ thống và hành động theo đó.

Pacemaker là một dịch vụ có khả năng quản lý nhiều tài nguyên và làm như vậy với sự trợ giúp của các đại lý tài nguyên của họ. Sau đó, các đại lý tài nguyên có trách nhiệm xử lý một tài nguyên cụ thể, cách họ xử lý và thông báo cho Pacemaker về kết quả của họ.

Việc triển khai tác nhân tài nguyên của bạn phải tuân theo đặc điểm kỹ thuật của Khung cụm mở (OCF). Đặc điểm kỹ thuật này xác định hành vi của tác nhân tài nguyên và triển khai các phương pháp như dừng, bắt đầu, thăng cấp, hạ cấp và tương tác với Pacemaker.

PAF là tác nhân tài nguyên OCF cho Postgres được viết bằng Perl. Sau khi cụm cơ sở dữ liệu của bạn được xây dựng bằng cách sử dụng sao chép trực tuyến nội bộ, PAF có thể hiển thị cho Pacemaker trạng thái hiện tại của phiên bản PostgreSQL trên từng nút của cơ sở dữ liệu:chủ, phụ, đã dừng, bắt kịp, bộ cân bằng tải, v.v.>

Cách hoạt động của chuyển đổi dự phòng tự động Postgres

PAF liên lạc với Pacemaker về trạng thái cụm và giám sát hoạt động của cơ sở dữ liệu PostgreSQL. Trong trường hợp bị lỗi, nó sẽ thông báo cho Pacemaker và nếu không có cơ hội khôi phục được bản chính hiện tại, nó sẽ kích hoạt một cuộc bầu cử giữa một trong các máy chủ cơ sở dữ liệu dự phòng hiện tại. Với Máy tạo nhịp tim mạnh mẽ tại chỗ, Chuyển đổi dự phòng tự động Postgres sẽ thực hiện các hành động quản lý như bắt đầu, dừng, giám sát và chuyển đổi dự phòng trên tất cả các nút của cơ sở dữ liệu Postgres.

Quản lý tính khả dụng cao trong PostgreSQL - Phần I:Tự động chuyển đổi dự phòng bằng ClusterLabsNhấp vào Tweet

PostgreSQL Tự động Dự phòng cho Cấu hình Khả dụng Cao (HA)

  • PAF hỗ trợ PostgreSQL phiên bản 9.3 trở lên.
  • PAF không chịu trách nhiệm về việc tạo chính / chế độ chờ PostgreSQL hoặc thiết lập nó - bạn phải tạo và thiết lập sao chép luồng trước khi sử dụng PAF.
  • PAF không chỉnh sửa bất kỳ cấu hình hoặc yêu cầu thiết lập nào của PostgreSQL. Tuy nhiên, nó yêu cầu người dùng cơ sở dữ liệu phải tuân theo một số điều kiện tiên quyết như:
    • Slave phải được định cấu hình ở chế độ chờ nóng. Các nút nô lệ ở chế độ chờ nóng có thể được truy vấn dưới dạng cơ sở dữ liệu chỉ đọc.
    • Tệp mẫu khôi phục (mặc định: /recovery.conf.pcmk) phải được cung cấp với các thông số dưới đây:
      • chế độ chờ =trên
      • recovery_target_timeline =‘Mới nhất’
      • primary_conninfo phải xác định tham số application_name và đặt thành tên nút cục bộ như trong Pacemaker.
  • PAF hiển thị nhiều tham số liên quan đến việc quản lý tài nguyên Postgres. Điều này có thể được định cấu hình để phù hợp với yêu cầu của một người. Dưới đây là các thông số:
    • bindir: vị trí của các tệp nhị phân PostgreSQL (mặc định:/ usr / bin)
    • pgdata: vị trí của PGDATA trong phiên bản của bạn (mặc định:/ var / lib / pgsql / data)
    • datadir: đường dẫn đến thư mục được đặt trong data_directory từ tệp postgresql.conf của bạn
    • pghost: thư mục socket hoặc địa chỉ IP để sử dụng để kết nối với phiên bản cục bộ (mặc định:/ tmp)
    • pgport: cổng để kết nối với phiên bản cục bộ (mặc định:5432)
    • recovery_template: mẫu cục bộ sẽ được sao chép dưới dạng tệp PGDATA / recovery.conf. Tệp mẫu này phải tồn tại trên tất cả các nút (mặc định:$ PGDATA / recovery.conf.pcmk)
    • start_opts: Các đối số bổ sung được cung cấp cho quy trình Postgres khi khởi động. Xem “postgres –help” để biết các tùy chọn có sẵn. Hữu ích khi tệp postgresql.conf không có trong thư mục dữ liệu (PGDATA), ví dụ:-c config_file =/ etc / postgresql / 9.3 / main / postgresql.conf
    • system_user: chủ sở hữu hệ thống của quy trình phiên bản của bạn (mặc định:postgres)
    • maxlag: độ trễ tối đa cho phép ở chế độ chờ trước khi chúng tôi đặt điểm chính âm cho nó

Ưu điểm chuyển đổi dự phòng tự động của Postgres

  • PAF cung cấp cho người dùng cấu hình thực hành và thiết lập PostgreSQL miễn phí.
  • PAF có thể xử lý lỗi nút và kích hoạt các lựa chọn khi nút chính gặp sự cố.
  • Hành vi số lượng có thể được thực thi trong PAF.
  • Nó sẽ cung cấp giải pháp quản lý cơ sở dữ liệu có tính khả dụng cao (HA) hoàn chỉnh cho tài nguyên, bao gồm khởi động, dừng, giám sát và xử lý các tình huống cô lập mạng.
  • Đây là một giải pháp phân tán, cho phép quản lý bất kỳ nút nào từ một nút khác.

Nhược điểm chuyển đổi dự phòng tự động của Postgres

  • PAF không phát hiện xem một nút dự phòng có bị định cấu hình sai với một nút không xác định hoặc không tồn tại trong cấu hình khôi phục hay không. Nút sẽ được hiển thị dưới dạng nô lệ, ngay cả khi đang chạy ở chế độ chờ mà không cần kết nối với nút dự phòng chính / xếp tầng.
  • Yêu cầu mở thêm một cổng (Mặc định 5405) để giao tiếp giữa các thành phần Máy tạo nhịp tim và Corosync bằng UDP.
  • Không hỗ trợ cấu hình dựa trên NAT.
  • Không hỗ trợ pg_rewind.

Tính khả dụng cao cho các tình huống kiểm tra PostgreSQL

Chúng tôi đã tiến hành một số thử nghiệm để xác định khả năng quản lý tính khả dụng cao (ha) của PostgreSQL bằng cách sử dụng PAF trong một số trường hợp sử dụng. Tất cả các bài kiểm tra này đều được chạy trong khi ứng dụng đang chạy và chèn dữ liệu vào cơ sở dữ liệu PostgreSQL. Ứng dụng được viết bằng Trình điều khiển Java JDBC của PostgreSQL tận dụng khả năng chuyển đổi dự phòng kết nối.

Kiểm tra máy chủ ở chế độ chờ

Sl. Không Tình huống thử nghiệm Quan sát
1 Hủy quy trình PostgreSQL Pacemaker đã đưa quy trình PostgreSQL trở lại trạng thái đang chạy. Không có sự gián đoạn trong ứng dụng của người viết.
2 Dừng quá trình PostgreSQL Pacemaker đã đưa quy trình PostgreSQL trở lại trạng thái đang chạy. Không có sự gián đoạn trong ứng dụng của người viết.
3 Khởi động lại máy chủ Nút máy chủ cơ sở dữ liệu dự phòng ban đầu được đánh dấu là ngoại tuyến. Khi máy chủ hoạt động sau khi khởi động lại, cơ sở dữ liệu PostgreSQL đã được khởi động bởi Pacemaker và máy chủ được đánh dấu là trực tuyến. Nếu hàng rào được bật, nút sẽ không được thêm tự động vào cụm. Không có sự gián đoạn trong ứng dụng của người viết.
4 Dừng quy trình Máy tạo nhịp tim Nó cũng sẽ dừng quá trình PostgreSQL và nút máy chủ sẽ được đánh dấu là ngoại tuyến. Không có sự gián đoạn trong ứng dụng của người viết.

Kiểm tra Máy chủ Chính / Chính

Sl. Không Tình huống thử nghiệm Quan sát
1 Hủy quy trình PostgreSQL Pacemaker đã đưa quy trình PostgreSQL trở lại trạng thái đang chạy. Sơ bộ đã được phục hồi trong thời gian ngưỡng và do đó, cuộc bầu cử không được kích hoạt. Ứng dụng người viết đã ngừng hoạt động trong khoảng 26 giây.
2 Dừng quá trình PostgreSQL Pacemaker đã đưa quy trình PostgreSQL trở lại trạng thái đang chạy. Sơ bộ đã được phục hồi trong thời gian ngưỡng và do đó, cuộc bầu cử không được kích hoạt. Đã có thời gian ngừng hoạt động trong ứng dụng nhà văn trong khoảng 26 giây.
3 Khởi động lại máy chủ Cuộc bầu cử đã được Máy tạo nhịp tim kích hoạt sau thời gian ngưỡng mà chiếc phụ không khả dụng. Máy chủ dự phòng đủ điều kiện nhất đã được thăng cấp là máy chủ mới. Khi bản gốc cũ xuất hiện sau khi khởi động lại, nó đã được thêm trở lại cụm cơ sở dữ liệu ở chế độ chờ. Nếu hàng rào được bật, nút sẽ không được thêm tự động vào cụm. Dịch vụ ứng dụng người viết đã ngừng hoạt động trong khoảng 26 giây.
4 Dừng quy trình Máy tạo nhịp tim Nó cũng sẽ dừng quá trình PostgreSQL và máy chủ sẽ được đánh dấu là ngoại tuyến. Bầu cử sẽ được kích hoạt và chủ mới sẽ được bầu. Đã có thời gian ngừng hoạt động trong ứng dụng nhà văn.

Kiểm tra cách ly mạng

Sl. Không Tình huống thử nghiệm Quan sát
1 Mạng cô lập máy chủ dự phòng với các máy chủ khác Lưu lượng truy cập đồng bộ hóa đã bị chặn trên máy chủ dự phòng. Máy chủ được đánh dấu là ngoại tuyến và dịch vụ PostgreSQL đã bị tắt do chính sách túc số. Không có sự gián đoạn nào trong ứng dụng của người viết.
2 Mạng cô lập máy chủ chính với các máy chủ khác (kịch bản phân tách) Lưu lượng truy cập đồng bộ hóa đã bị chặn trên máy chủ chính. Dịch vụ PostgreSQL đã bị tắt và máy chủ chính được đánh dấu là ngoại tuyến do chính sách túc số. Một tổng thể mới đã được bầu trong phân vùng đa số. Đã có thời gian ngừng hoạt động trong ứng dụng người viết.

Kiểm tra Khác

Sl. Không Tình huống thử nghiệm Quan sát
1 Hạ cấp cụm bằng cách tắt tất cả các máy chủ dự phòng. Khi tất cả các máy chủ dự phòng gặp sự cố, dịch vụ PostgreSQL trên máy chủ đã bị dừng do chính sách túc số. Sau thử nghiệm này, khi tất cả các máy chủ dự phòng đã được bật, một chủ nhân mới đã được bầu chọn. Đã có thời gian ngừng hoạt động trong ứng dụng người viết.
2 Lần lượt tắt ngẫu nhiên tất cả các máy chủ, bắt đầu từ máy chủ và khôi phục tất cả chúng cùng một lúc Tất cả các máy chủ đã xuất hiện và tham gia vào cụm. Chủ nhân mới được bầu chọn. Đã có thời gian ngừng hoạt động trong ứng dụng người viết.

PAF có phải là giải pháp cho Tính khả dụng cao của PostgreSQL không?

Chuyển đổi dự phòng tự động Postgres cung cấp một số lợi thế trong việc xử lý tính khả dụng cao (HA) của PostgreSQL trên nhiều trường hợp sử dụng. PAF sử dụng chuyển đổi dự phòng địa chỉ IP thay vì khởi động lại chế độ chờ để kết nối với thiết bị chính mới trong sự kiện chuyển đổi dự phòng. Điều này tỏ ra có lợi trong các tình huống mà người dùng không muốn khởi động lại các nút chờ. PAF cũng cần rất ít can thiệp thủ công và quản lý tình trạng chung của tất cả các tài nguyên cơ sở dữ liệu Postgres. Trường hợp duy nhất mà can thiệp thủ công là bắt buộc là trong trường hợp phân kỳ dữ liệu dòng thời gian mà người dùng có thể chọn sử dụng pg_rewind.

Trong Phần 1, chúng ta đã thảo luận về các khả năng và hoạt động của Chuyển đổi dự phòng tự động PostgreSQL (PAF) của ClusterLabs và trong Phần 2, chúng ta sẽ thảo luận các khía cạnh có tính khả dụng cao giống nhau bằng cách sử dụng Trình quản lý nhân bản cho các cụm PostgreSQL (repmgr) của 2ndQuadrant. Hãy nhớ kiểm tra lại Phần 3, trong đó chúng tôi cũng sẽ trình bày về Patroni của Zalando và so sánh cả ba giải pháp nguồn mở để giúp bạn xác định giải pháp phù hợp nhất cho ứng dụng của mình.

Trong blog Phần 1, chúng tôi đã thảo luận về các khả năng, phương pháp hay nhất và hoạt động của PAF bởi ClusterLabs và trong bài đăng trên blog Phần 2, chúng tôi sẽ thảo luận cùng một chủ đề về các khía cạnh có tính khả dụng cao bằng cách sử dụng Trình quản lý nhân bản cho các cụm Postgresql (repmgr) của 2ndQuadrant. Hãy nhớ kiểm tra lại bài đăng trên blog của chúng tôi ở Phần 3, nơi chúng tôi cũng sẽ trình bày về Patroni của Zalando và so sánh cả ba giải pháp nguồn mở để giúp bạn xác định các phương pháp hay nhất và phù hợp lý tưởng cho các ứng dụng kinh doanh của bạn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.0 Backup &Recovery

  2. Gấu trúc ghi khung dữ liệu vào lược đồ postgresql khác

  3. Tốt hơn là tạo chỉ mục trước khi điền vào bảng với dữ liệu hay sau khi dữ liệu được đặt đúng vị trí?

  4. Làm cách nào để bật php hoạt động với postgresql?

  5. PostgreSQL:FATAL - Xác thực ngang hàng không thành công cho người dùng (PG ::ConnectionBad)