Logical replication và physical replication đều là các phương pháp phổ biến để sao chép dữ liệu trong PostgreSQL, nhưng mỗi phương pháp có những mục đích và trường hợp sử dụng khác nhau. Dưới đây là những điểm giúp bạn hiểu khi nào nên sử dụng logical replication thay vì physical replication:
Logical replication là phương thức sao chép các thay đổi cấp độ logic của dữ liệu, ví dụ như các thao tác INSERT
, UPDATE
, DELETE
được thực hiện trên từng bảng. Nó cho phép bạn kiểm soát chi tiết hơn về dữ liệu được sao chép và có thể sao chép từng phần của cơ sở dữ liệu, thay vì toàn bộ cơ sở dữ liệu như trong physical replication.
Nếu bạn chỉ muốn sao chép một phần dữ liệu, chẳng hạn như một số bảng hoặc các dữ liệu cụ thể trong cơ sở dữ liệu, thì logical replication là sự lựa chọn tốt. Điều này cho phép bạn:
Ví dụ: Bạn có thể sao chép bảng orders
và customers
nhưng bỏ qua các bảng khác.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Nếu bạn cần sao chép dữ liệu giữa các máy chủ PostgreSQL chạy trên các phiên bản khác nhau (ví dụ từ PostgreSQL 12 lên PostgreSQL 15), logical replication sẽ là lựa chọn phù hợp. Physical replication yêu cầu cả máy chủ chính và máy chủ sao chép phải cùng phiên bản và kiến trúc phần cứng.
Logical replication cho phép tích hợp với các hệ thống bên ngoài. Ví dụ, bạn có thể sao chép dữ liệu từ PostgreSQL sang một hệ quản trị cơ sở dữ liệu khác hoặc một hệ thống phân tích. Bạn có thể tạo các bảng riêng trên máy chủ thứ hai để tích hợp hoặc xử lý thêm dữ liệu mà không làm ảnh hưởng đến máy chủ chính.
Logical replication hỗ trợ các cấu hình sao chép phức tạp hơn như bi-directional replication (sao chép hai chiều) hoặc multi-master replication (nhiều nguồn sao chép). Điều này giúp các hệ thống có thể thực hiện sao lưu nhiều chiều hoặc giữa nhiều nút khác nhau mà physical replication không hỗ trợ tốt.
Khi cần thực hiện một migrating (chuyển dữ liệu) giữa các máy chủ cơ sở dữ liệu khác nhau mà không muốn ngừng hoạt động, logical replication cho phép sao chép dữ liệu dần dần, chuyển dữ liệu từ hệ thống cũ sang hệ thống mới mà không ảnh hưởng đến các giao dịch đang diễn ra.
Physical replication trong PostgreSQL sao chép toàn bộ dữ liệu từ một cơ sở dữ liệu chính (primary server) sang một hoặc nhiều cơ sở dữ liệu phụ (standby servers). Các thay đổi trong cơ sở dữ liệu chính sẽ được ghi lại ở cấp độ khối (block level) và đồng bộ hóa sang máy chủ phụ, duy trì một bản sao chính xác.
Nếu bạn cần sao chép toàn bộ cơ sở dữ liệu với tính toàn vẹn dữ liệu cao và không cần kiểm soát chi tiết những gì được sao chép, physical replication là lựa chọn tốt hơn. Nó duy trì một bản sao chính xác của toàn bộ cơ sở dữ liệu, đảm bảo tính sẵn sàng cao cho failover (chuyển đổi dự phòng) trong trường hợp máy chủ chính gặp sự cố.
Physical replication thường tiêu tốn ít tài nguyên hệ thống hơn vì sao chép dữ liệu ở cấp độ khối (block level), giúp tăng tốc độ và giảm thiểu ảnh hưởng đến hiệu suất. Nếu bạn cần sao chép với hiệu suất cao hoặc tối ưu hóa băng thông, physical replication có thể là lựa chọn tốt hơn.
Tính năng | Logical Replication | Physical Replication |
---|---|---|
Cấp độ sao chép | Từng bảng, từng phần cơ sở dữ liệu | Toàn bộ cơ sở dữ liệu |
Phiên bản PostgreSQL | Hỗ trợ phiên bản khác nhau | Cùng phiên bản và kiến trúc |
Kiến trúc | Có thể giữa các hệ thống không đồng nhất | Yêu cầu cấu hình giống nhau |
Tích hợp với hệ thống khác | Hỗ trợ (có thể kết nối với hệ thống khác) | Không hỗ trợ |
Hiệu suất | Cao hơn với dữ liệu lớn hoặc nhiều bảng | Hiệu suất tốt với sao chép toàn bộ |
Quản lý linh hoạt | Có thể chọn từng phần dữ liệu | Không linh hoạt, sao chép toàn bộ |
Logical replication cung cấp sự linh hoạt, kiểm soát chi tiết và khả năng tương thích với các hệ thống khác nhau, trong khi physical replication mạnh mẽ hơn cho các trường hợp yêu cầu đồng bộ toàn bộ dữ liệu và failover với tính sẵn sàng cao.