Nếu hệ thống của bạn dựa trên PostgreSQL và bạn đang tìm kiếm các giải pháp phân cụm để có Tính sẵn sàng cao, chúng tôi muốn thông báo trước cho bạn rằng đó là một nhiệm vụ phức tạp nhưng không phải là không thể đạt được.
Xem xét các yêu cầu của bạn về khả năng chịu lỗi, đây là một số giải pháp phân nhóm có tính khả dụng cao để lựa chọn có thể hữu ích.
PostgreSQL nguyên bản không hỗ trợ bất kỳ giải pháp phân cụm đa chủ nào như MySQL hoặc Oracle. Tuy nhiên, nhiều sản phẩm thương mại và cộng đồng cung cấp triển khai này, bao gồm nhân rộng và cân bằng tải cho PostgreSQL.
Để bắt đầu, hãy xem lại một số khái niệm cơ bản:
Tính sẵn sàng cao là gì?
Tính khả dụng cao đề cập đến lượng thời gian một dịch vụ khả dụng và thường được xác định bởi mức hiệu suất đã thỏa thuận của doanh nghiệp.
Dự phòng là cơ sở cho tính sẵn sàng cao; trong trường hợp xảy ra sự cố, bạn có thể tiếp tục vận hành và truy cập hệ thống mà không gặp sự cố.
Phục hồi liên tục
Khi sự cố xảy ra, nếu bạn phải khôi phục bản sao lưu và sau đó áp dụng nhật ký WAL (Write-Ahead Logging), thời gian khôi phục sẽ rất cao và sẽ không khả dụng.
Tuy nhiên, nếu bạn có các bản sao lưu và nhật ký được lưu trữ trong một máy chủ dự phòng, bạn có thể áp dụng nhật ký khi chúng đến. Nếu nhật ký được gửi và áp dụng mỗi phút, cơ sở dự phòng sẽ được phục hồi liên tục và sẽ có trạng thái lỗi thời để sản xuất tối đa là một phút.
Cơ sở dữ liệu Dự phòng
Ý tưởng của cơ sở dữ liệu dự phòng là giữ một bản sao của cơ sở dữ liệu sản xuất luôn có cùng dữ liệu và sẵn sàng sử dụng trong trường hợp có sự cố.
Có một số cách để phân loại cơ sở dữ liệu dự phòng.
Theo bản chất của bản sao:
-
Chân đế vật lý:Các khối đĩa được sao chép.
-
Điều kiện logic:Truyền dữ liệu thay đổi.
Bởi tính đồng bộ của các giao dịch:
-
Không đồng bộ:Có khả năng mất dữ liệu.
-
Đồng bộ:Không có khả năng mất dữ liệu; Các cam kết trong chính chờ phản hồi của chế độ chờ.
Theo cách sử dụng:
-
Chân đế ấm:Chúng không hỗ trợ kết nối.
-
Hot standbys:Hỗ trợ kết nối chỉ đọc.
Cụm
Cụm là một nhóm các máy chủ làm việc cùng nhau và được coi là một. Điều này cung cấp một cách để đạt được khả năng mở rộng theo chiều ngang và khả năng xử lý nhiều công việc hơn bằng cách thêm máy chủ.
Nó có thể chống lại sự cố của một nút và tiếp tục hoạt động minh bạch. Tùy thuộc vào những gì được chia sẻ, có hai mô hình cụm:
-
Bộ nhớ dùng chung:Tất cả các nút đều truy cập vào cùng một bộ nhớ với cùng một thông tin.
-
Không chia sẻ gì:Mỗi nút có bộ nhớ riêng, có thể có hoặc không có thông tin giống với nút kia , tùy thuộc vào cấu trúc của hệ thống của chúng tôi.
Bây giờ chúng ta hãy xem lại một số tùy chọn phân cụm mà chúng ta có trong PostgreSQL.
Thiết bị khối sao chép được phân phối
DRBD là một mô-đun nhân Linux thực hiện sao chép khối đồng bộ bằng cách sử dụng mạng. Nó thực sự không triển khai một cụm và không xử lý chuyển đổi dự phòng hoặc giám sát. Bạn cần phần mềm bổ sung cho việc đó, chẳng hạn như Corosync + Máy tạo nhịp tim + DRBD.
Ví dụ:
-
Corosync:Xử lý thông báo giữa các máy chủ.
-
Máy tạo nhịp tim:Bắt đầu và dừng các dịch vụ, đảm bảo chúng chỉ chạy trên một máy chủ.
-
DRBD:Đồng bộ hóa dữ liệu ở cấp thiết bị khối.
ClusterControl
ClusterControl là phần mềm quản lý và tự động hóa không cần tác nhân dành cho các cụm cơ sở dữ liệu. Nó giúp triển khai, giám sát, quản lý và mở rộng máy chủ / cụm cơ sở dữ liệu của bạn trực tiếp từ giao diện người dùng của nó. Nó có thể xử lý hầu hết các tác vụ quản trị cần thiết để duy trì các máy chủ hoặc cụm cơ sở dữ liệu.
Với ClusterControl, bạn có thể:
-
Triển khai cơ sở dữ liệu độc lập, sao chép hoặc nhóm trên nền tảng công nghệ mà bạn chọn.
-
Tự động hóa chuyển đổi dự phòng, khôi phục và các tác vụ hàng ngày một cách thống nhất trên cơ sở dữ liệu đa ô và cơ sở hạ tầng động.
-
Tạo các bản sao lưu đầy đủ hoặc tăng dần theo cách thủ công hoặc lên lịch cho chúng.
-
Giám sát toàn diện và thống nhất trong thời gian thực đối với toàn bộ cơ sở dữ liệu và cơ sở hạ tầng máy chủ của bạn.
-
Dễ dàng thêm hoặc xóa một nút chỉ bằng một thao tác.
-
Sao chép cụm của bạn sang một trung tâm dữ liệu / nhà cung cấp đám mây khác
Nếu bạn gặp sự cố trên PostgreSQL, nút Dự phòng của bạn có thể tự động được nâng cấp lên Chính.
Đây là một công cụ hoàn chỉnh cung cấp tính năng tự động hóa và quản lý vòng đời hoạt động đầy đủ thông qua một ô kính duy nhất. ClusterControl cũng cung cấp bản dùng thử miễn phí 30 ngày để bạn có thể đánh giá, không có ràng buộc nào.
Rubyrep
Rubyrep là giải pháp cung cấp bản sao không đồng bộ, đa chủ, đa nền tảng (được triển khai trong Ruby hoặc JRuby) và đa DBMS (MySQL hoặc PostgreSQL).
Nó dựa trên trình kích hoạt và nó không hỗ trợ DDL, người dùng hoặc trợ cấp. Mục tiêu chính của việc sử dụng và quản trị là sự đơn giản.
Một số tính năng bao gồm:
-
Cấu hình đơn giản
-
Cài đặt đơn giản
-
Độc lập với nền tảng, không phụ thuộc vào thiết kế bảng.
Pgpool-II
Pgpool-II là phần mềm trung gian hoạt động giữa máy chủ PostgreSQL và máy khách cơ sở dữ liệu PostgreSQL.
Một số tính năng bao gồm:
-
Nhóm kết nối
-
Nhân rộng
-
Cân bằng tải
-
Tự động chuyển đổi dự phòng
-
Truy vấn song song
Nó có thể được định cấu hình trên bản sao truyền trực tuyến:
Bucardo
Bucardo cung cấp sao chép master-slave xếp tầng không đồng bộ, dựa trên hàng, sử dụng trình kích hoạt và xếp hàng trong cơ sở dữ liệu và sao chép master-master không đồng bộ, dựa trên hàng, sử dụng trình kích hoạt và giải quyết xung đột tùy chỉnh.
Bucardo yêu cầu một cơ sở dữ liệu chuyên dụng và chạy như một daemon Perl giao tiếp với cơ sở dữ liệu này và tất cả các cơ sở dữ liệu khác liên quan đến việc nhân bản. Nó có thể chạy dưới dạng đa chủ hoặc đa phụ.
Sao chép master-slave liên quan đến một hoặc nhiều nguồn đi đến một hoặc nhiều mục tiêu. Nguồn phải là PostgreSQL, nhưng các mục tiêu có thể là PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite hoặc MongoDB.
Một số tính năng bao gồm:
-
Cân bằng tải
-
Các nô lệ không bị ràng buộc và có thể được viết
-
Nhân rộng một phần
-
Nhân rộng theo yêu cầu (các thay đổi có thể được đẩy tự động hoặc khi muốn)
-
Các nô lệ có thể được "làm ấm trước" để thiết lập nhanh
Hạn chế:
-
Không thể xử lý DDL
-
Không thể xử lý các đối tượng lớn
-
Không thể sao chép từng bước các bảng mà không có khóa duy nhất
-
Sẽ không hoạt động trên các phiên bản cũ hơn Postgres 8
Postgres-XC
Postgres-XC là một dự án mã nguồn mở để cung cấp giải pháp cụm PostgreSQL có thể mở rộng, đồng bộ, đối xứng và minh bạch. Nó là một tập hợp các thành phần cơ sở dữ liệu được kết hợp chặt chẽ có thể được cài đặt trong nhiều phần cứng hoặc máy ảo.
Có thể mở rộng ghi có nghĩa là Postgres-XC có thể được định cấu hình với bao nhiêu máy chủ cơ sở dữ liệu tùy thích và xử lý nhiều lần ghi hơn (cập nhật câu lệnh SQL) so với những gì một máy chủ cơ sở dữ liệu duy nhất có thể làm.
Bạn có thể có nhiều hơn một máy chủ cơ sở dữ liệu mà máy khách kết nối với, cung cấp một chế độ xem cơ sở dữ liệu toàn cụm nhất quán.
Mọi cập nhật cơ sở dữ liệu từ bất kỳ máy chủ cơ sở dữ liệu nào sẽ hiển thị ngay lập tức với bất kỳ giao dịch nào khác đang chạy trên các bản gốc khác nhau.
Minh bạch có nghĩa là bạn không phải lo lắng về cách dữ liệu của mình được lưu trữ trong nhiều máy chủ cơ sở dữ liệu nội bộ.
Bạn có thể định cấu hình Postgres-XC để chạy trên nhiều máy chủ. Dữ liệu của bạn được lưu trữ theo cách phân tán, được phân vùng hoặc sao chép, do bạn chọn cho mỗi bảng. Khi bạn đưa ra các truy vấn, Postgres-XC sẽ xác định nơi dữ liệu đích được lưu trữ và đưa ra các truy vấn tương ứng cho các máy chủ chứa dữ liệu đích.
Citus
Citus là phần mềm thay thế cho PostgreSQL với các tính năng sẵn có cao được tích hợp sẵn như tự động phân mảnh và sao chép. Citus chia nhỏ cơ sở dữ liệu của bạn và sao chép nhiều bản sao của mỗi phân đoạn trên toàn bộ cụm nút hàng hóa. Nếu một nút trong cụm trở nên không khả dụng, Citus sẽ chuyển hướng một cách rõ ràng mọi hành động ghi hoặc truy vấn đến một trong những nút khác chứa bản sao của phân đoạn bị ảnh hưởng.
Một số tính năng bao gồm:
-
Phân đoạn logic tự động
-
Bản sao cài sẵn
-
Nhân rộng nhận biết trung tâm dữ liệu để khắc phục thảm họa
-
Khả năng chịu lỗi giữa truy vấn với cân bằng tải nâng cao
Bạn có thể tăng thời gian hoạt động của các ứng dụng thời gian thực được cung cấp bởi PostgreSQL và giảm thiểu tác động của lỗi phần cứng đối với hiệu suất. Bạn có thể đạt được điều này với các công cụ có tính khả dụng cao được tích hợp sẵn để giảm thiểu sự can thiệp thủ công tốn kém và dễ xảy ra lỗi.
PostgresXL
PostgresXL là giải pháp phân cụm đa chủ, không dùng chung, có thể phân phối một cách minh bạch bảng trên một tập hợp các nút và thực hiện các truy vấn song song với các nút đó. Nó có một thành phần bổ sung được gọi là Trình quản lý giao dịch toàn cầu (GTM) để cung cấp một cái nhìn nhất quán trên toàn cầu về cụm.
PostgresXL là một cụm cơ sở dữ liệu SQL mã nguồn mở có thể mở rộng theo chiều ngang, đủ linh hoạt để xử lý các khối lượng công việc cơ sở dữ liệu khác nhau:
-
Khối lượng công việc ghi nhiều OLTP
-
Business Intelligence yêu cầu song song MPP
-
Kho dữ liệu hoạt động
-
Kho khóa-giá trị
-
Không gian địa lý GIS
-
Môi trường khối lượng công việc hỗn hợp
-
Môi trường do nhà cung cấp lưu trữ nhiều đối tượng thuê
Thành phần:
-
Global Transaction Monitor (GTM):Global Transaction Monitor đảm bảo tính nhất quán của giao dịch trên toàn bộ cụm.
-
Điều phối viên:Điều phối viên quản lý các phiên của người dùng và tương tác với GTM và các nút dữ liệu.
-
Nút Dữ liệu:Nút Dữ liệu là nơi dữ liệu thực được lưu trữ.
Kết thúc
Có nhiều sản phẩm khác có sẵn để triển khai môi trường sẵn sàng cao cho PostgreSQL của bạn, nhưng bạn phải cẩn thận với:
-
Sản phẩm mới, chưa được kiểm tra đầy đủ
-
Các dự án đã ngừng hoạt động
-
Hạn chế
-
Chi phí cấp phép
-
Cách triển khai rất phức tạp
-
Giải pháp không an toàn
Khi chọn giải pháp bạn sẽ sử dụng, hãy tính đến cơ sở hạ tầng của bạn. Nếu bạn chỉ có một máy chủ ứng dụng, cho dù bạn đã định cấu hình mức độ sẵn sàng cao của cơ sở dữ liệu như thế nào, nếu máy chủ ứng dụng bị lỗi, bạn vẫn không thể truy cập được. Bạn phải phân tích tốt các điểm thất bại trong cơ sở hạ tầng và cố gắng giải quyết chúng.
Tính đến những điểm này, bạn có thể tìm thấy giải pháp cụm có tính khả dụng cao thích ứng với nhu cầu và yêu cầu của bạn mà không cần phải đau đầu. Nếu bạn đang tìm kiếm tài nguyên HA bổ sung cho cơ sở dữ liệu PG của mình, hãy xem bài đăng này về cách triển khai PostgreSQL để có tính khả dụng cao.
Để luôn được cập nhật về các giải pháp quản lý cơ sở dữ liệu và các phương pháp hay nhất, hãy theo dõi chúng tôi trên Twitter và LinkedIn và đăng ký nhận bản tin của chúng tôi.