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

Tổng quan về sao chép mức khối lượng cho PostgreSQL bằng DRBD

Nhân rộng là việc chia sẻ dữ liệu giao dịch qua nhiều máy chủ để đảm bảo tính nhất quán giữa các nút cơ sở dữ liệu dự phòng. Một cái chính sẽ thực hiện các lần chèn hoặc cập nhật và áp dụng chúng vào tập dữ liệu của nó, trong khi các nô lệ sẽ thay đổi dữ liệu của chúng theo những thay đổi được thực hiện đối với tập dữ liệu chính. Bản chính thường được gọi là bản chính và nó ghi lại những thay đổi được thực hiện trong Ghi nhật ký phía trước (WAL). Mặt khác, nô lệ được coi là người thứ hai và họ sao chép dữ liệu của mình từ nhật ký REDO - trong trường hợp này là WAL.

Có ít nhất 3 cách tiếp cận sao chép trong PostgreSQL:

Sao chép bản tin hoặc Sao chép truyền trực tuyến.

Trong cách tiếp cận này, dữ liệu được sao chép từ nút chính sang nút phụ. Tuy nhiên, nó đi kèm với một số trở ngại đó là:

  • Khó khăn khi giới thiệu một trường phụ mới. Nó sẽ yêu cầu bạn sao chép toàn bộ trạng thái, điều này có thể tốn nhiều tài nguyên.
  • Thiếu tính năng giám sát và chuyển đổi dự phòng tích hợp sẵn. Một phụ phải được thăng cấp thành một chính trong trường hợp sau này thất bại. Thông thường, chương trình khuyến mại này có thể dẫn đến sự không thống nhất về dữ liệu trong thời gian vắng mặt của chương trình chính.

Tái tạo từ WAL

Cách tiếp cận này bằng cách nào đó sử dụng cách tiếp cận sao chép trực tuyến vì các bản thứ hai được tạo lại từ một bản sao lưu do bản chính thực hiện. Cơ sở dữ liệu chính thực hiện một bản sao lưu cơ sở dữ liệu đầy đủ sau mỗi ngày bên cạnh bản sao lưu gia tăng cho mỗi 60 giây. Ưu điểm của cách tiếp cận này là không có tải bổ sung nào phải chịu tải chính cho đến khi các phụ tải thứ hai đủ gần với nguồn chính để chúng bắt đầu phát trực tuyến Ghi nhật ký phía trước (WAL) để bắt kịp với nó. Với cách tiếp cận này, bạn có thể thêm hoặc xóa các bản sao mà không ảnh hưởng đến hiệu suất của cơ sở dữ liệu PostgreSQL của bạn.

Sao chép mức âm lượng cho PostgreSQL (Sao chép đĩa)

Đây là một cách tiếp cận chung không chỉ áp dụng cho PostgreSQL mà còn cho tất cả các cơ sở dữ liệu quan hệ. Chúng tôi sẽ sử dụng Thiết bị khối sao chép phân tán (DRBD), một hệ thống lưu trữ sao chép phân tán dành cho Linux. Nó có nghĩa là hoạt động bằng cách sao chép nội dung được lưu trữ trong bộ nhớ của máy chủ này sang bộ nhớ của máy chủ khác. Hình minh họa đơn giản về cấu trúc được hiển thị bên dưới.

DRBD có thể được coi là một phần trừu tượng từ thiết bị đĩa lưu trữ cơ sở dữ liệu PostgreSQL, nhưng hệ điều hành sẽ không bao giờ biết rằng dữ liệu của nó cũng nằm trong một máy chủ khác. Sử dụng cách tiếp cận này, bạn không chỉ có thể chia sẻ dữ liệu mà còn cả hệ thống tập tin đến nhiều hơn 1 máy chủ. Do đó, các ghi tới DRBD được phân phối giữa tất cả các máy chủ, theo đó mỗi máy chủ sẽ ghi thông tin vào một đĩa cứng vật lý cục bộ (thiết bị khối). Khi một thao tác ghi được áp dụng cho máy chính, sau đó nó sẽ được ghi vào DRBD và sau đó được phân phối đến các máy chủ DRBD thứ cấp. Mặt khác, nếu thiết bị thứ cấp nhận được các hoạt động ghi thông qua DRBD, thì chúng sẽ được ghi vào thiết bị vật lý cục bộ. Trong trường hợp hỗ trợ chuyển đổi dự phòng, DRBD cung cấp dữ liệu có tính sẵn sàng cao vì thông tin được chia sẻ giữa một nút chính và nhiều nút phụ được xếp hàng đồng bộ ở cấp khối.

Cấu hình DRBD sẽ yêu cầu một tài nguyên bổ sung được gọi là Heartbeat, mà chúng ta sẽ thảo luận trong một bài viết khác, để tăng cường hỗ trợ cho chuyển đổi dự phòng tự động. Về cơ bản, gói này quản lý giao diện trên nhiều máy chủ và tự động định cấu hình một trong các máy chủ phụ thành máy chủ chính trong trường hợp bị lỗi.

Cài đặt và cấu hình DRBD

Phương pháp được ưu tiên trong việc cài đặt DRBD là sử dụng các gói cài đặt nhị phân tạo sẵn. Đảm bảo rằng phiên bản hạt nhân của các gói phù hợp với hạt nhân hiện tại đang hoạt động của bạn.

Các tệp cấu hình cho tất cả các nút chính hoặc phụ phải giống hệt nhau. Ngoài ra, nếu bạn cần nâng cấp phiên bản hạt nhân của mình, hãy đảm bảo rằng hạt nhân-module-drdb tương ứng có sẵn cho phiên bản hạt nhân mới của bạn.

Thiết lập DRBD cho Nút chính

Đây là bước đầu tiên mà bạn sẽ cần tạo một thiết bị khối DRBD và một hệ thống tệp để bạn có thể lưu trữ dữ liệu của mình. Tệp cấu hình có thể được tìm thấy tại /etc/drbd.conf. Tệp xác định một số tham số cho cấu hình DRBD bao gồm:kích thước khối, định nghĩa thông tin bảo mật của thiết bị DRBD mà bạn muốn tạo và tần suất cập nhật. Các cấu hình có thể bị hạn chế ở phạm vi toàn cầu hoặc gắn với một tài nguyên nhất định. Các bước liên quan là:

  1. Tỷ lệ đồng bộ hóa xác định tốc độ mà các thiết bị được liên kết đồng bộ trong nền sau khi thay thế đĩa, hỏng hóc hoặc thiết lập ban đầu. Điều này có thể được đặt bằng cách chỉnh sửa thông số tốc độ trong khối đồng bộ hóa:

    syncer{
    rate 15M
    }
  2. Thiết lập xác thực để đảm bảo rằng chỉ các máy chủ có cùng bí mật được chia sẻ mới có thể tham gia nhóm nút DRBD. Mật khẩu là một cơ chế trao đổi băm được hỗ trợ trong DRBD.

    cram-hmac-alg “sha1”
    shared-secret “hash-password-string”
  3. Định cấu hình thông tin máy chủ. Thông tin về nút chẳng hạn như máy chủ có thể được tìm thấy trong mỗi tệp drbd.conf của các nút. Một số tham số được định cấu hình là:

    • Địa chỉ:Địa chỉ IP và số cổng của máy chủ lưu trữ thiết bị DRBD.
    • Thiết bị:Đường dẫn của thiết bị khối logic do DRBD tạo ra.
    • Đĩa:Nó đề cập đến thiết bị khối lưu trữ dữ liệu.
    • Siêu đĩa:Nó lưu trữ siêu dữ liệu của thiết bị DRBD. Kích thước của nó có thể lên đến 128MB. Bạn có thể đặt nó làm đĩa trong để DRBD sử dụng thiết bị khối vật lý để lưu trữ thông tin này trong các phần cuối cùng của đĩa.

    Một cấu hình đơn giản cho cấu hình chính:

    on drbd-one {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.40:8080;
    meta-disk internal;
    }

    Cấu hình phải được lặp lại với các thư thứ hai có địa chỉ IP khớp với máy chủ tương ứng của nó.

    on drbd-two {
    device /dev/drbd0;
    disk /dev/sdd1;
    address 192.168.103.41:8080;
    meta-disk internal;
    }
  4. Tạo siêu dữ liệu cho các thiết bị bằng lệnh này:

    $ drbdadm create create-md all
    Quá trình này là bắt buộc trước khi bạn bắt đầu nút chính.
  5. Khởi động DRBD bằng lệnh sau:
    $ /etc/init.d/drbd start
    Điều này cho phép DRBD khởi động, khởi tạo và tạo các thiết bị được xác định bởi DRBD.
  6. Đánh dấu thiết bị mới là thiết bị chính và khởi chạy thiết bị bằng lệnh sau:
    $ drbdadm -- --overwrite-data-of-peer primary all
    Tạo hệ thống tệp trên thiết bị khối để làm cho thiết bị khối tiêu chuẩn do DRBD tạo ra có thể sử dụng được.
  7. Làm cho tệp chính sẵn sàng để sử dụng bằng cách gắn hệ thống tệp. Các lệnh này sẽ chuẩn bị cho bạn:
    $ mkdir /mnt/drbd
    $ mount /dev/drbd0 /mnt/drbd
    $ echo “DRBD Device” > /mnt/drbd/example_file

Thiết lập DRBD cho nút phụ

Bạn có thể sử dụng các bước tương tự ở trên ngoại trừ việc tạo hệ thống tệp trên nút phụ vì thông tin được tự động chuyển từ nút chính.

  1. Sao chép tệp /etc/drbd.conf từ nút chính sang nút phụ. Tệp này chứa thông tin và cấu hình cần thiết.

  2. Trên thiết bị đĩa bên dưới, hãy tạo siêu dữ liệu DRBD bằng lệnh:

    $ drbdadm create-md all
  3. Khởi động DRBD bằng lệnh:

    $ /etc/init.d/drbd start
    DRBD sẽ bắt đầu sao chép dữ liệu từ nút chính sang nút phụ và thời gian phụ thuộc vào kích thước dữ liệu được truyền. Nếu bạn xem tệp / proc / drbd, bạn có thể xem tiến trình.
    $ cat /proc/drbd
    version: 8.0.0 (api:80/proto:80)
      SVN Revision: 2947 build by [email protected], 2018-08-24 16:43:05
       0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
           ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0
           [==>.................] sync'ed: 12.3% (1845088/2097152)K
           finish: 0:06:06 speed: 4,972 (4,580) K/sec
           resync: used:1/31 hits:15901 misses:16 starving:0 dirty:0 changed:16
           act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
  4. Theo dõi quá trình đồng bộ hóa bằng lệnh đồng hồ trong các khoảng thời gian cụ thể

    $ watch -n 10 ‘cat /proc/drbd‘

Quản lý cài đặt DRBD

Để theo dõi trạng thái thiết bị DRBD, chúng tôi sử dụng / proc / drbd.

Bạn có thể đặt trạng thái của tất cả các thiết bị cục bộ là chính bằng cách sử dụng lệnh

$ drbdadm primary all

Đặt thiết bị chính thành thiết bị phụ

$ drbdadm secondary all

Để ngắt kết nối các nút DRBD

$ drbdadm disconnect all

Kết nối lại các nút DRBD

$ drbd connect all
Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

Định cấu hình PostgreSQL cho DRBD

Điều này liên quan đến việc chọn một thiết bị mà PostgreSQL sẽ lưu trữ dữ liệu. Đối với cài đặt mới, bạn có thể chọn cài đặt hoàn toàn PostgreSQL vào thiết bị DRBD hoặc thư mục dữ liệu nằm trên hệ thống tệp mới và phải nằm trong nút chính. Điều này là do nút chính là nút duy nhất được phép gắn hệ thống tệp thiết bị DRBD dưới dạng đọc / ghi. Các tệp dữ liệu Postgres thường được lưu trữ trong / var / lib / pgsql trong khi các tệp cấu hình được lưu trữ trong / etc / sysconfig / pgsql.

Thiết lập PostgreSQL để sử dụng thiết bị DRBD mới

  1. Nếu bạn có bất kỳ PostgreSQL nào đang chạy, hãy dừng chúng bằng lệnh sau:

    $  /etc/init.d/postgresql -9.0
  2. Cập nhật thiết bị DRBD với các tệp cấu hình bằng các lệnh:

    $ mkdir /mnt/drbd/pgsql/sysconfig
    $ cp /etc/sysconfig/pgsql/* /mnt/drbd/pgsql/sysconfig
  3. Cập nhật DRBD với thư mục dữ liệu PostgreSQL và các tệp hệ thống bằng cách sử dụng:

    $ cp -pR /var/lib/pgsql /mnt/drbd/pgsql/data
  4. Tạo một liên kết tượng trưng đến thư mục cấu hình mới trên hệ thống tệp thiết bị DRBD từ / etc / sysconfig / pgsql bằng cách sử dụng lệnh:

    $ ln -s /mnt/drbd/pgsql/sysconfig  /etc/sysconfig/pgsql
  5. Xóa thư mục / var / lib / pgsql, ngắt kết nối / mnt / drbd / pgsql và gắn thiết bị drbd vào / var / lib / pgsql.

  6. Khởi động PostgreSQL bằng lệnh:

    $ /etc/init.d/postgresql -9.0 start

Dữ liệu PostgreSQL bây giờ sẽ xuất hiện trên hệ thống tệp đang chạy trên thiết bị DRBD của bạn trong thiết bị được định cấu hình. Nội dung của cơ sở dữ liệu cũng được sao chép sang nút DRBD phụ nhưng không thể truy cập nó vì thiết bị DRBD làm việc trong nút phụ có thể không có.

Các tính năng quan trọng với Phương pháp tiếp cận DRBD

  • Các thông số điều chỉnh có thể tùy chỉnh cao.
  • Các triển khai hiện tại có thể dễ dàng được định cấu hình bằng DRBD mà không bị mất dữ liệu.
  • Các yêu cầu đọc được cân bằng như nhau
  • Xác thực bí mật được chia sẻ bảo mật cấu hình và dữ liệu của 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. Biến bảng PostgreSQL

  2. Chạy tệp hàng loạt bằng lệnh psql mà không cần mật khẩu

  3. PG ::InvalidParameterValue:ERROR:giá trị không hợp lệ cho tham số client_min_messages:hoảng sợ

  4. Các tính năng PostgreSQL Enterprise mới và đang phát triển với các bản phát hành gần đây

  5. Tìm các hàng trong đó mảng văn bản chứa giá trị tương tự như giá trị đầu vào