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

Kiểm tra tự động quá trình nâng cấp cho PostgreSQL

Kiểm tra là một công việc tốn nhiều thời gian, nhưng nó là điều bắt buộc trước bất kỳ quá trình nâng cấp trên bất kỳ công nghệ nào. Tùy thuộc vào loại nâng cấp, nó có thể khó hơn hoặc dễ hơn, nhưng nó luôn cần thiết nếu bạn muốn đảm bảo dữ liệu của mình sẽ an toàn. Có nhiều cách tiếp cận khác nhau để nâng cấp, tùy thuộc vào doanh nghiệp và khả năng chịu thời gian ngừng hoạt động. Ví dụ:quy trình có thể đang kiểm tra ứng dụng của bạn trong một môi trường riêng biệt với phiên bản mới, vì vậy, bạn sẽ cần tạo một cụm mới cho việc này. Một tùy chọn khác là sao chép môi trường sản xuất hiện tại của bạn và nâng cấp nó, điều này có thể hữu ích vì bạn có thể mô phỏng tất cả quá trình nâng cấp và tránh những bất ngờ trong tương lai.

Bằng cách thực hiện tất cả quy trình kiểm tra này theo cách thủ công, rất có thể do lỗi của con người và quá trình sẽ chậm, có thể ảnh hưởng đến Mục tiêu thời gian khôi phục (RTO). Trong blog này, chúng ta sẽ xem cách tự động kiểm tra để nâng cấp cơ sở dữ liệu PostgreSQL của bạn bằng cách sử dụng ClusterControl.

Loại Nâng cấp Cơ sở dữ liệu

Có hai loại nâng cấp:Nâng cấp nhỏ và Nâng cấp chính.

Nâng cấp nhỏ

Đây là cách nâng cấp an toàn và phổ biến nhất, và trong hầu hết các trường hợp, việc này được thực hiện tại chỗ. Vì không có gì là an toàn 100% nên bạn phải luôn có các bản sao lưu và các nút dự phòng, vì vậy trong trường hợp xảy ra sự cố khi nâng cấp, bạn có thể quảng cáo một nút dự phòng trong phiên bản trước và hệ thống của bạn vẫn có thể hoạt động mà không bị gián đoạn.

Bạn có thể thực hiện kiểu nâng cấp này bằng ClusterControl. Đối với điều này, hãy đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Quản lý -> Nâng cấp.

Trên mỗi nút đã chọn, quy trình nâng cấp sẽ:

  • Nút dừng

  • Nút nâng cấp

  • Nút Bắt đầu

Nút Chính trong Cấu trúc liên kết PostgreSQL sẽ không được nâng cấp. Để nâng cấp Chính, trước tiên phải thăng cấp một nút khác để trở thành Chính mới.

Các bản nâng cấp chính

Đối với các bản Nâng cấp Chính, không nên nâng cấp tại chỗ vì rủi ro xảy ra sự cố quá cao đối với môi trường sản xuất. Thay vì điều này, có nhiều cách tiếp cận khác nhau để thực hiện nâng cấp.

Bạn có thể sao chép cụm cơ sở dữ liệu hiện tại của mình, nâng cấp nó và kiểm tra ứng dụng của bạn ở đó và khi hoàn thành, nếu mọi thứ ổn, bạn có thể tạo lại nó để lặp lại quá trình nhằm thực hiện nâng cấp thực sự hoặc bạn cũng có thể tạo một cụm mới trong phiên bản mới, kiểm tra ứng dụng của bạn và chuyển đổi lưu lượng khi nó sẵn sàng và có nhiều tùy chọn hơn ... Việc sử dụng Load Balancers hữu ích ở đây để cải thiện Tính sẵn sàng cao. Cách tiếp cận tốt nhất phụ thuộc vào dung sai thời gian chết và Mục tiêu thời gian khôi phục (RTO).

Bạn không thể trực tiếp thực hiện Nâng cấp Chính với ClusterControl, bởi vì, như chúng tôi đã đề cập, bạn cần kiểm tra mọi thứ trước để đảm bảo rằng việc nâng cấp an toàn, nhưng bạn có thể sử dụng các tính năng ClusterControl khác nhau để thực hiện nhiệm vụ này dễ dàng hơn. Vì vậy, hãy xem một số tính năng này.

Triển khai Môi trường Thử nghiệm

Đối với điều này, bạn không cần phải tạo mọi thứ từ đầu. Thay vì điều này, bạn có thể sử dụng ClusterControl để thực hiện việc này theo cách thủ công hoặc tự động.

Khôi phục Sao lưu trên Máy chủ Độc lập

Trong phần Sao lưu, chọn bản sao lưu và bạn sẽ thấy tùy chọn “Khôi phục và xác minh trên máy chủ độc lập” để khôi phục bản sao lưu trong một nút riêng biệt.

Tại đây bạn có thể chỉ định nếu bạn muốn ClusterControl cài đặt phần mềm mới và vô hiệu hóa tường lửa hoặc AppArmor / SELinux (tùy thuộc vào hệ điều hành). Đối với điều này, bạn cần một máy chủ (hoặc máy ảo) chuyên dụng không phải là một phần của cụm.

Bạn có thể duy trì và chạy nút hoặc ClusterControl có thể tắt cơ sở dữ liệu dịch vụ cho đến khi công việc khôi phục tiếp theo. Khi quá trình hoàn tất, bạn sẽ thấy bản sao lưu đã được khôi phục / xác minh trong danh sách sao lưu được đánh dấu bằng dấu tích.

Nếu bạn không muốn thực hiện tác vụ này theo cách thủ công, bạn có thể lên lịch quy trình này bằng cách sử dụng Tính năng sao lưu Xác minh, để lặp lại công việc này theo định kỳ trong Công việc sao lưu. Chúng ta sẽ xem cách thực hiện việc này trong phần tiếp theo.

Xác minh Sao lưu ClusterControl Tự động

Để tự động hóa tác vụ này, hãy đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Sao lưu -> Tạo Sao lưu và chọn tùy chọn Sao lưu theo lịch trình. Tính năng Tự động xác minh sao lưu chỉ khả dụng cho các bản sao lưu theo lịch trình.

Trong bước thứ hai, hãy đảm bảo rằng bạn đã bật tùy chọn Xác minh sao lưu, và điền đầy đủ thông tin cần thiết.

Khi công việc hoàn thành, bạn có thể thấy biểu tượng xác minh trong ClusterControl Phần sao lưu, giống như bạn sẽ có khi thực hiện xác minh theo cách thủ công, với sự khác biệt là bạn không cần phải lo lắng về tác vụ khôi phục. ClusterControl sẽ tự động khôi phục bản sao lưu và bạn có thể kiểm tra ứng dụng của mình với dữ liệu gần đây nhất.

Tạo Cụm từ Bản sao lưu

Một cách khác để tạo môi trường thử nghiệm là tạo một cụm mới từ bản sao lưu Cụm chính của bạn. Đối với điều này, hãy đi tới ClusterControl -> Chọn cụm PostgreSQL của bạn -> Sao lưu. Tại đó, chọn bản sao lưu sẽ được khôi phục từ danh sách và chọn Khôi phục -> Tạo cụm từ bản sao lưu.

Tùy chọn này sẽ tạo Cụm PostgreSQL mới từ bản sao lưu đã chọn.

Bạn cần thêm thông tin đăng nhập hệ điều hành và cơ sở dữ liệu và thông tin để triển khai cụm mới. Khi công việc này kết thúc, bạn sẽ thấy cụm mới trong giao diện người dùng ClusterControl.

Sao chép theo cụm

Vì ClusterControl 1.7.4 có một tính năng được gọi là Cluster-to-Cluster Replication. Nó cho phép bạn có một bản sao chạy giữa hai cụm tự trị.

Tạo bản sao theo cụm thành cụm

Đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Hành động Cụm -> Tạo Cụm Nô lệ.

Cụm nô lệ sẽ được tạo bằng cách truyền dữ liệu từ Cụm chính hiện tại.

Bạn phải chỉ định thông tin đăng nhập SSH và cổng, tên cho Cụm nô lệ của bạn, và nếu bạn muốn ClusterControl cài đặt phần mềm và cấu hình tương ứng cho bạn.

Sau khi thiết lập thông tin truy cập SSH, bạn phải xác định phiên bản cơ sở dữ liệu, datadir, cổng và thông tin đăng nhập quản trị viên. Vì nó sẽ sử dụng sao chép trực tuyến, hãy đảm bảo rằng bạn sử dụng cùng một phiên bản cơ sở dữ liệu và thông tin đăng nhập phải giống nhau được Cụm chính sử dụng.

Trong bước này, bạn cần thêm máy chủ vào Cụm nô lệ mới . Đối với tác vụ này, bạn có thể nhập cả Địa chỉ IP hoặc Tên máy chủ của nút cơ sở dữ liệu.

Bạn có thể theo dõi trạng thái công việc trong trình giám sát hoạt động ClusterControl. Sau khi tác vụ hoàn thành, bạn có thể thấy cụm trong màn hình ClusterControl chính.

Tự động khôi phục và chuyển đổi dự phòng

Đã bật tính năng Autorecovery, trong trường hợp không thành công, ClusterControl sẽ quảng bá nút chờ tiên tiến nhất thành nút chính cũng như thông báo cho bạn về sự cố. Nó cũng không thể tái tạo trên các nút dự phòng còn lại từ máy chủ chính mới.

Nếu có các Bộ cân bằng tải trong cấu trúc liên kết, ClusterControl sẽ định cấu hình lại chúng để áp dụng các thay đổi cấu trúc liên kết.

Bạn cũng có thể chạy Chuyển đổi dự phòng theo cách thủ công nếu cần. Đi tới ClusterControl -> Chọn Cụm PostgreSQL của bạn -> Nút -> Chọn Nút được thăng cấp -> Hành động của Nút -> Thúc đẩy Slave.

Bằng cách này, nếu có vấn đề gì xảy ra trong quá trình nâng cấp, bạn có thể sử dụng ClusterControl để sửa lỗi càng sớm càng tốt.

Tự động hóa mọi thứ với ClusterControl CLI

ClusterControl CLI, còn được gọi là s9s, là một công cụ dòng lệnh được giới thiệu trong ClusterControl phiên bản 1.4.1 để tương tác, kiểm soát và quản lý các cụm cơ sở dữ liệu bằng hệ thống ClusterControl. ClusterControl CLI mở ra một cánh cửa cho tự động hóa cụm nơi bạn có thể dễ dàng tích hợp nó với các công cụ tự động hóa triển khai hiện có như Ansible, Puppet, Chef, v.v. Bây giờ hãy cùng xem một số ví dụ về công cụ này.

Nâng cấp

$ s9s cluster --cluster-id=9 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=9 \
--available-upgrades \
--nodes=10.10.10.122 \
--log \
--print-json
$ s9s cluster --cluster-id=9 \
--upgrade-cluster \
--nodes=10.10.10.122 \
--log

Xác minh Bản sao lưu

$ s9s backup --verify \
--backup-id=2 \
--test-server=10.10.10.124 \
--cluster-id=9 \
--log

Sao chép theo cụm

$ s9s cluster --create \
--cluster-name=PostgreSQL-c2c \
--cluster-type=postgresql \
--provider-version=13 \
--nodes=10.10.10.125 \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--db-admin=admin \
--db-admin-passwd=********* \
--vendor=postgres \
--remote-cluster-id=9 \
--log

Quảng cáo Slave Node

$ s9s cluster --promote-slave \
--cluster-id=9 \
--nodes='10.10.10.122' \
--log

Kết luận

Nâng cấp là công việc cần thiết nhưng tốn thời gian vì bạn cần kiểm tra ứng dụng của mình để tránh bất kỳ sự cố nào trong quá trình này. Việc triển khai môi trường thử nghiệm mỗi khi bạn cần nâng cấp và duy trì môi trường cập nhật này mà không có bất kỳ công cụ tự động hóa nào có thể khó khăn.

ClusterControl cho phép bạn thực hiện các nâng cấp nhỏ từ ClusterControl UI hoặc CLI, hoặc thậm chí triển khai môi trường thử nghiệm để làm cho nhiệm vụ nâng cấp dễ dàng hơn và an toàn hơn. Bạn cũng có thể tích hợp nó với các công cụ tự động hóa khác nhau như Ansible, Puppet, v.v.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django cố định không thành công, cho biết DatabaseError:giá trị quá dài đối với ký tự loại thay đổi (50)

  2. Những điều quan trọng cần theo dõi trong PostgreSQL - Phân tích khối lượng công việc của bạn

  3. Tại sao giá trị NULL lại xuất hiện đầu tiên khi đặt hàng DESC trong một truy vấn PostgreSQL?

  4. POSTGRESQL Khóa chính tham chiếu khóa nước ngoài của hai bảng khác nhau

  5. Psycopg2, Postgresql, Python:Cách nhanh nhất để chèn hàng loạt