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

Gói PGLogical 1.1 cho PostgreSQL 9.6beta1

Chúng tôi đã cung cấp gói pglogical 1.1 cho PostgreSQL 9.6beta1 cho cả bản phân phối dựa trên rpm và deb. Chúng có sẵn để cài đặt từ kho lưu trữ gói pglogical tiêu chuẩn của chúng tôi.

Bạn có thể hỏi tại sao chúng tôi phát hành các gói cho phiên bản beta của Postgres? Chà, một trong những lý do là bạn có thể sử dụng pglogical để sao chép cơ sở dữ liệu PostgreSQL 9.5 hoặc 9.4 hiện có của mình sang 9.6beta1 trong thời gian thực và chạy thử nghiệm trên đó để giúp loại bỏ mọi lỗi còn sót lại trong bản phát hành beta. Dưới đây là hướng dẫn nhanh về cách thực hiện điều đó.

Bước đầu tiên là cài đặt PostgreSQL 9.6beta1, kiểm tra thông báo phát hành để biết thông tin về cách thực hiện điều đó. Bước thứ hai là cài đặt pglogical như được giải thích trên trang hướng dẫn cài đặt.

Bây giờ để thiết lập bản sao thực tế. Nó khá dễ dàng. Bắt đầu với việc đảm bảo rằng PostgreSQL được định cấu hình để cho phép sao chép hợp lý:

wal_level = 'logical'
max_worker_processes = 10   # one per database needed on provider node
                            # one per node needed on subscriber node
max_replication_slots = 10  # one per node needed on provider node
max_wal_senders = 10        # one per node needed on provider node
shared_preload_libraries = 'pglogical'

Việc thay đổi các cài đặt trên yêu cầu khởi động lại máy chủ.

Bạn cũng nên cho phép các kết nối sao chép đến trong pg_hba.conf (giống như khi thiết lập sao chép trực tuyến vật lý). Dòng trong pg_hba.conf sẽ trông giống như sau:

host    replication     postgres        10.0.0.2/32            md5

Xem trang tài liệu pg_hba để biết thêm thông tin.

Tiếp theo, cài đặt tiện ích mở rộng pglogical trên cơ sở dữ liệu của nhà cung cấp và tạo nút pglogical ở đó:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=db'
);

Sau đó, thực hiện tương tự trên cơ sở dữ liệu 9.6 mới:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=db'
);

Lưu ý rằng các chuỗi kết nối phải dẫn đến cơ sở dữ liệu mà bạn đang thực hiện các lệnh này.

Quay lại cơ sở dữ liệu trình cung cấp, thêm các bảng bạn muốn sao chép thành default bộ sao chép. Cách đơn giản để thực hiện việc này là thêm tất cả các bảng trong public giản đồ như thế này:

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

Và cuối cùng, một lần nữa trên cơ sở dữ liệu người đăng ký, hãy tạo một gói đăng ký kết nối với nhà cung cấp và bắt đầu sao chép.

SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=db',
    synchronize_structure := true
);

Ở đây, chuỗi kết nối phải giống với chuỗi được sử dụng khi tạo nút pglogical của trình cung cấp. synchronize_structure := true có nghĩa là pglogical sẽ sao chép tất cả cấu trúc bảng từ cơ sở dữ liệu nhà cung cấp sang cơ sở dữ liệu người đăng ký (sử dụng pg_dump chuẩn ).

Vậy là xong, bạn hiện có bản sao đang hoạt động giữa cơ sở dữ liệu PostgreSQL 9.5 hoặc 9.4 hiện có của mình và PostgreSQL 9.6beta1 mới.

Kiểm tra tài liệu pglogical và các trang dự án để biết thêm thông tin về các chức năng được sử dụng trong bài đăng này và về cách thực hiện nhiều việc hơn là chỉ sao chép đơn giả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. Ruby on Rails:Có cách nào để kéo các mục từ cơ sở dữ liệu và chúng được trả về theo thứ tự đã chỉ định không?

  2. Có gì mới trong Postgres-XL 9.6

  3. Làm cách nào để chèn chú thích cột trong PostgreSQL thông qua Python?

  4. Cách lưu trữ mảng hoặc nhiều giá trị trong một cột

  5. Làm cách nào để bạn nối hai bảng trên một trường khóa ngoài bằng cách sử dụng django ORM?