For the complete documentation index, see llms.txt. This page is also available as Markdown.

Cấu hình Logical Replication

Hướng dẫn này giúp bạn thiết lập PostgreSQL Logical Replication — sao chép thay đổi dữ liệu theo thời gian thực từ cluster nguồn (Publisher) sang cluster đích (Subscriber). Một hoặc cả hai cluster có thể nằm trên GreenNode vDB.


Điều kiện cần (Prerequisites)

  • Ít nhất một trong hai cluster (Publisher hoặc Subscriber) phải là PostgreSQL Cluster trên GreenNode vDB (phiên bản 16 hoặc 17).

  • Cả hai cluster phải dùng cùng phiên bản major PostgreSQL.

  • Người dùng thực hiện các lệnh SQL phải có quyền owner trên các bảng cần replicate (để tạo Publication).

GreenNode vDB hỗ trợ Logical Replication cho PostgreSQL 16 và 17.


Logical Replication hoạt động như thế nào?

Kiến trúc Logical Replication
  • Publisher: cluster nguồn, chứa dữ liệu gốc. Bạn tạo PUBLICATION để chỉ định bảng nào được phép replicate.

  • Subscriber: cluster đích, nhận và áp dụng thay đổi. Bạn tạo SUBSCRIPTION để kết nối đến Publisher và kéo dữ liệu về.

Quá trình đồng bộ gồm hai giai đoạn:

  1. Initial sync (đồng bộ ban đầu): Ngay khi bạn tạo Subscription, PostgreSQL tự động sao chép toàn bộ dữ liệu hiện có từ Publisher sang Subscriber — bạn không cần dump và restore dữ liệu thủ công. Quá trình này có thể mất vài phút đến vài giờ tuỳ theo kích thước dữ liệu.

  2. Streaming (streaming thay đổi liên tục): Sau khi initial sync hoàn tất, chỉ các thay đổi phát sinh mới (INSERT, UPDATE, DELETE) được đồng bộ theo thời gian thực.

Bạn không cần dump dữ liệu — Logical Replication tự xử lý phần đó. Tuy nhiên bạn phải tạo sẵn cấu trúc bảng (schema) trên Subscriber trước khi tạo Subscription, vì PostgreSQL không tự replicate DDL. Xem hướng dẫn tại Bước B.3.


Phần A: vDB PostgreSQL Cluster là Publisher

Thực hiện các bước trong phần này nếu cluster GreenNode vDB của bạn là nguồn dữ liệu (Publisher).

Bước A.1: Yêu cầu kích hoạt

Liên hệ GreenNode Support để yêu cầu kích hoạt tính năng Logical Replication trên cluster của bạn. GreenNode Support sẽ cấu hình và cung cấp usernamepassword của user replication — thông tin này sẽ được dùng trong connection string khi Subscriber tạo Subscription.

Để đổi password của replication user, chạy lệnh sau trên cluster:

Bước A.2: Cấu hình tham số PostgreSQL

Logical Replication yêu cầu ba tham số PostgreSQL được cấu hình đúng trên Publisher cluster.

Tham số
Giá trị yêu cầu
Mô tả

wal_level

logical

Bắt buộc — mặc định là replica, không đủ để chạy logical replication

max_replication_slots

≥ số slot cần dùng

Tổng số replication slot cho tất cả replica, subscription và CDC connector

max_wal_senders

≥ số sender cần dùng

Tổng số WAL sender process (thường bằng max_replication_slots)

Cách tính max_replication_slotsmax_wal_senders:

Thành phần
Slot + sender cần

Mỗi replica node trong cluster

1 + 1

Mỗi Subscription (logical replication)

1 + 1

Mỗi CDC connector (Debezium)

1 + 1

Ví dụ: cluster 3 node (2 replica) + 1 subscription → max_replication_slots = 3, max_wal_senders = 3.

Bước A.3: Tạo Publication

  1. Kết nối đến Publisher cluster bằng tài khoản có quyền owner trên các bảng cần replicate.

  2. Tạo Publication cho các bảng cần replicate:

Nếu bạn cần tạo publication FOR ALL TABLES, liên hệ GreenNode Support để được hỗ trợ.

  1. Kiểm tra Publication đã được tạo:


Phần B: vDB PostgreSQL Cluster là Subscriber

Thực hiện các bước trong phần này nếu cluster GreenNode vDB của bạn là đích nhận dữ liệu (Subscriber).

Bước B.1: Yêu cầu kích hoạt tính năng Logical Replication

Liên hệ GreenNode Support để yêu cầu kích hoạt tính năng Logical Replication trên cluster của bạn. GreenNode Support sẽ cấu hình và cung cấp usernamepassword của user replication — thông tin này sẽ được dùng trong connection string khi Subscriber tạo Subscription.

Để đổi password của replication user, chạy lệnh sau trên cluster:

Bước B.2: Cấp quyền CREATE trên schema và database đích

Kết nối đến Subscriber cluster bằng tài khoản owner của schema và database đích, sau đó chạy các lệnh sau:

<username> ở đây là tài khoản dùng để chạy CREATE TABLE (Bước B.3) và CREATE SUBSCRIPTION (Bước B.4) — không phải replication user trong CONNECTION string (được GreenNode cung cấp ở Bước B.1).

Bước B.3: Tạo bảng trên Subscriber

Logical Replication không tự tạo bảng trên Subscriber. Trước khi tạo Subscription, bạn phải tạo schema và bảng tương ứng trên Subscriber.

Gợi ý: Thay vì viết lại thủ công, bạn có thể dùng pg_dump --schema-only để dump cấu trúc bảng từ Publisher, kiểm tra file, rồi áp dụng lên Subscriber bằng psql -f.

Nếu muốn dump nhiều bảng, thêm --table cho từng bảng. Bỏ flag --table để dump toàn bộ schema.

Hoặc tạo bảng thủ công:

Bước B.4: Tạo Subscription

  1. Kết nối đến Subscriber cluster bằng tài khoản GreenNode cung cấp.

  2. Tạo Subscription:

Tham số
Mô tả

host

Hostname của Publisher

port

Port kết nối PostgreSQL

dbname

Tên database nguồn trên Publisher

user

Username có quyền replication trên Publisher

password

Password có quyền replication trên Publisher

sslmode

Chế độ mã hóa SSL

publication_name

Tên publication trên Publisher


Kiểm tra trạng thái Replication

Trên Publisher — xem Subscription đang kết nối:

Trên Subscriber — xem trạng thái Subscription:

Khi state = streaming trên Publisher, và trên Subscriber pid khác NULL cùng received_lsn tăng dần, replication đang hoạt động bình thường.


Kết quả

Sau khi hoàn thành, dữ liệu từ các bảng trong Publication trên Publisher sẽ được tự động đồng bộ sang Subscriber theo thời gian thực. Mọi thay đổi (INSERT, UPDATE, DELETE) đều được áp dụng.

Tôi muốn tiếp theo...
Đi đến

Thiết lập CDC với Debezium

Xem các tham số cấu hình Cluster

Last updated