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

Cách sao chép dữ liệu PostgreSQL sang các trang web từ xa

Trong một môi trường cơ sở dữ liệu bận rộn với cơ sở dữ liệu kích thước lớn hơn, nhu cầu sao chép dữ liệu thời gian thực là một điều thường thấy. Các ứng dụng thường cần dữ liệu sản xuất được sao chép trong thời gian thực tới các trang web từ xa để phân tích và các nhu cầu hoạt động kinh doanh quan trọng khác.

Các DBA cũng cần đảm bảo rằng dữ liệu được sao chép liên tục đến các trang từ xa để đáp ứng các yêu cầu khác nhau. Tuy nhiên, những yêu cầu này không phải lúc nào cũng có thể sao chép toàn bộ cơ sở dữ liệu; cũng có thể có nhu cầu chỉ sao chép một tập hợp con của dữ liệu (như Bảng hoặc tập hợp các Bảng hoặc dữ liệu từ nhiều bảng bằng cách sử dụng SQL để phân tích, báo cáo, v.v.)

Trong blog này, chúng tôi sẽ tập trung vào cách sao chép các bảng sang cơ sở dữ liệu từ xa trong thời gian thực.

Sao chép cấp bảng là gì?

Nhân rộng mức bảng là cơ chế sao chép dữ liệu của một bảng hoặc tập hợp bảng cụ thể từ một cơ sở dữ liệu (nguồn) sang một cơ sở dữ liệu khác (đích) được lưu trữ từ xa trong môi trường phân tán. Nhân rộng mức bảng đảm bảo dữ liệu bảng được phân phối liên tục và duy trì nhất quán trên các trang web được sao chép (đích).

Tại sao lại sử dụng tính năng sao chép cấp bảng?

Sao chép mức bảng là một nhu cầu thiết yếu trong các môi trường lớn hơn, phức tạp, phân tán cao. Theo kinh nghiệm của tôi, luôn có nhu cầu sao chép một bộ bảng từ cơ sở dữ liệu sản xuất sang kho dữ liệu cho mục đích báo cáo. Dữ liệu phải được sao chép liên tục để đảm bảo các báo cáo nhận được dữ liệu mới nhất. Trong các môi trường quan trọng, không thể chấp nhận được tính ổn định của dữ liệu, do đó, các thay đổi dữ liệu xảy ra trong quá trình sản xuất phải được sao chép ngay lập tức đến trang web mục tiêu. Đây có thể là một thách thức thực sự đối với việc DBA phải dự báo nhiều yếu tố khác nhau để đảm bảo sao chép bảng hiệu quả và suôn sẻ.

Hãy để chúng tôi xem xét một số yêu cầu mà bản sao cấp bảng giải quyết:

  • Các báo cáo có thể chạy trên cơ sở dữ liệu trong môi trường không phải là môi trường sản xuất, chẳng hạn như lưu trữ dữ liệu
  • Môi trường cơ sở dữ liệu phân tán với các ứng dụng phân tán trích xuất dữ liệu từ nhiều trang web. Trong trường hợp ứng dụng web hoặc ứng dụng di động được phân phối, bản sao của cùng một dữ liệu phải có sẵn ở nhiều vị trí để phục vụ các nhu cầu ứng dụng khác nhau, bản sao cấp bảng có thể là một giải pháp tốt
  • Các ứng dụng tính lương cần dữ liệu từ các cơ sở dữ liệu khác nhau đặt tại các trung tâm dữ liệu hoặc phiên bản đám mây được phân phối theo địa lý khác nhau để có sẵn tại cơ sở dữ liệu tập trung

Các yếu tố khác nhau ảnh hưởng đến việc sao chép ở cấp độ bảng - Điều cần tìm

Như chúng tôi đã đề cập ở trên, các DBA cần phải xem xét nhiều yếu tố và thành phần thời gian thực khác nhau để thiết kế và triển khai một hệ thống sao chép cấp bảng hiệu quả.

Cấu trúc bảng

Loại bảng dữ liệu được cung cấp có tác động lớn đến hiệu suất sao chép. Nếu bảng chứa một cột BYTEA với dữ liệu nhị phân kích thước lớn hơn, thì hiệu suất sao chép có thể bị ảnh hưởng. Tác động của việc sao chép lên mạng, CPU và Đĩa phải được đánh giá cẩn thận.

Kích thước dữ liệu

Nếu bảng được di chuyển quá lớn, thì quá trình di chuyển dữ liệu ban đầu sẽ chiếm tài nguyên và thời gian, các DBA phải đảm bảo cơ sở dữ liệu sản xuất không bị ảnh hưởng.

Tài nguyên cơ sở hạ tầng

Cơ sở hạ tầng phải được cung cấp đầy đủ nguồn lực để đảm bảo có thể xây dựng một hệ thống nhân rộng hoạt động ổn định và đáng tin cậy. Những thành phần cơ sở hạ tầng nào phải được xem xét?

CPU

Việc sao chép dữ liệu chủ yếu dựa vào CPU. Khi tái tạo từ quá trình sản xuất, CPU không được cạn kiệt có thể ảnh hưởng đến hiệu suất sản xuất.

Mạng

Nó rất quan trọng đối với hiệu suất nhân rộng. Độ trễ mạng giữa (các) cơ sở dữ liệu Nguồn và Đích phải được đánh giá bằng thử nghiệm căng thẳng để đảm bảo có đủ băng thông cho quá trình sao chép nhanh hơn. Ngoài ra, cùng một mạng có thể được sử dụng hết bởi các quy trình hoặc ứng dụng khác. Vì vậy, việc lập kế hoạch năng lực phải được thực hiện ở đây.

Bộ nhớ

Phải có đủ bộ nhớ để đảm bảo có đủ dữ liệu được lưu vào bộ nhớ đệm để sao chép nhanh hơn.

Cập nhật bảng nguồn

Nếu dữ liệu thay đổi trên bảng nguồn lớn, thì hệ thống sao chép phải có khả năng đồng bộ hóa các thay đổi với (các) trang web từ xa càng sớm càng tốt. Việc sao chép sẽ kết thúc việc gửi một số lượng lớn các yêu cầu đồng bộ hóa đến cơ sở dữ liệu mục tiêu có thể tốn nhiều tài nguyên.

Loại Cơ sở hạ tầng (trung tâm dữ liệu hoặc đám mây) cũng có thể ảnh hưởng đến hiệu suất sao chép và có thể đặt ra thách thức. Việc thực hiện giám sát cũng có thể là một thách thức. Nếu có độ trễ và dữ liệu nào đó bị thiếu trên cơ sở dữ liệu mục tiêu thì có thể khó theo dõi và nó không thể đồng bộ

Cách triển khai sao chép bảng

Sao chép mức bảng trong PostgreSQL có thể được thực hiện bằng nhiều công cụ bên ngoài (thương mại hoặc nguồn mở) có sẵn trên thị trường hoặc bằng cách sử dụng các luồng dữ liệu được xây dựng tùy chỉnh.

Hãy để chúng tôi xem xét một số công cụ này, các tính năng và khả năng của chúng ...

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

Slony

Slony là một trong những công cụ phổ biến nhất được sử dụng để sao chép không đồng bộ bảng hoặc bảng riêng lẻ cụ thể trong thời gian thực từ cơ sở dữ liệu PostgreSQL này sang cơ sở dữ liệu khác. Đây là một công cụ dựa trên Perl thực hiện sao chép dựa trên kích hoạt các thay đổi dữ liệu của một bảng (hoặc tập hợp các bảng) từ cơ sở dữ liệu tại trang web này sang trang web khác. Nó khá đáng tin cậy và nó có lịch sử phát triển nhiều năm. Mặc dù có độ tin cậy cao, là một công cụ dựa trên trình kích hoạt, nó có thể trở nên phức tạp để quản lý các thiết lập sao chép.

Hãy để chúng tôi xem xét một số khả năng của Slony ...

Ưu điểm của việc sử dụng Slony

  • Hỗ trợ phương pháp sao chép từ chủ đến tớ hoặc nhiều tớ, giúp nâng cao khả năng mở rộng đọc theo chiều ngang. Nói cách khác, nô lệ không thể ghi được
  • Có thể định cấu hình Nhiều nô lệ cho một chủ duy nhất và cũng hỗ trợ phương pháp sao chép theo tầng
  • Hỗ trợ các cơ chế chuyển đổi và chuyển đổi dự phòng
  • Một số lượng lớn các bảng có thể được sao chép song song theo nhóm
  • Chúng tôi có thể sao chép giữa các phiên bản chính khác nhau của các phiên bản PostgreSQL, điều này làm cho Slony trở thành một lựa chọn tuyệt vời để nâng cấp cơ sở dữ liệu
  • Cài đặt đơn giản

Nhược điểm của việc sử dụng Slony

  • Không hỗ trợ sao chép DDL
  • Một số thay đổi giản đồ nhất định có thể phá vỡ bản sao
  • Các sự kiện sao chép được ghi lại trong cơ sở dữ liệu trong các bảng nhật ký cụ thể của Slony, điều này có thể gây ra chi phí bảo trì.
  • Nếu một số lượng lớn các bảng với các tập dữ liệu lớn phải được sao chép, thì hiệu suất và bảo trì có thể đặt ra những thách thức nghiêm trọng
  • Là một bản sao dựa trên trình kích hoạt, hiệu suất có thể bị ảnh hưởng

Bucardo

Bucardo là một hệ thống sao chép dựa trên perl mã nguồn mở khác cho PostgreSQL hỗ trợ sao chép không đồng bộ dữ liệu Bảng cụ thể giữa hai hoặc nhiều phiên bản PostgreSQL. Điều làm cho Bucardo khác với Slony là nó cũng hỗ trợ sao chép nhiều bậc thầy.

Hãy để chúng tôi xem xét các loại cơ chế sao chép khác nhau mà bucardo giúp thực hiện ...

  • Sao chép đa tổng thể:Các bảng có thể được sao chép theo cả hai hướng giữa hai hoặc nhiều phiên bản PostgreSQL và dữ liệu giao dịch sẽ được đồng bộ hóa hai chiều
  • Master-slave:Dữ liệu từ các bảng trong master sẽ được sao chép không đồng bộ sang slave một cách không đồng bộ và slave có sẵn cho các thao tác đọc
  • Chế độ sao chép đầy đủ (Master-slave):Bucardo - / sao chép toàn bộ dữ liệu từ nút chính sang nút phụ bằng cách xóa tất cả dữ liệu khỏi nút phụ

Ưu điểm của việc sử dụng Bucardo

  • Cài đặt đơn giản
  • Hỗ trợ các chế độ sao chép nhiều bản chính, bản chính và bản sao đầy đủ
  • Nó có thể được sử dụng để nâng cấp cơ sở dữ liệu
  • Việc sao chép có thể được thực hiện giữa các phiên bản PostgreSQL khác nhau

Nhược điểm của việc sử dụng Bucardo

  • Là một bản sao dựa trên trình kích hoạt, hiệu suất có thể là một thách thức
  • Các thay đổi giản đồ như DDL có thể phá vỡ bản sao
  • Việc sao chép nhiều bảng có thể gây ra chi phí bảo trì
  • Các tài nguyên cơ sở hạ tầng phải được tối ưu hóa để nhân rộng hoạt động tốt, nếu không, không thể đạt được tính nhất quán.

PostgreSQL Logical Replication

Sao chép lôgic là một tính năng tích hợp sẵn mang tính cách mạng của PostgreSQL giúp sao chép các bảng riêng lẻ thông qua các bản ghi WAL. Là một bản sao dựa trên WAL (tương tự như Streaming Replication) pg logic nổi bật khi so sánh với các công cụ sao chép bảng khác. Sao chép dữ liệu qua các bản ghi WAL luôn là cách đáng tin cậy và hiệu quả nhất để sao chép dữ liệu trên mạng. Hầu hết tất cả các công cụ trên thị trường đều cung cấp tính năng sao chép dựa trên trình kích hoạt ngoại trừ Sao chép lôgic.

Ưu điểm của việc sử dụng PostgreSQL Logical Replication

  • Tùy chọn tốt nhất khi bạn muốn sao chép một Bảng hoặc tập hợp các bảng
  • Đó là một lựa chọn tốt nếu yêu cầu là di chuyển các bảng cụ thể từ các cơ sở dữ liệu khác nhau sang một cơ sở dữ liệu duy nhất (như kho dữ liệu hoặc cơ sở dữ liệu báo cáo) cho mục đích báo cáo hoặc phân tích
  • Không gặp rắc rối với các trình kích hoạt

Nhược điểm của việc sử dụng PostgreSQL Logical Replication

  • Quản lý sai các tệp WAL / tệp lưu trữ WAL có thể đặt ra thách thức đối với tính năng Sao chép lôgic
  • Chúng tôi không thể sao chép các bảng mà không có khóa Chính hoặc Khóa duy nhất
  • DDL và TRUNCATE không được sao chép
  • Trễ sao chép có thể tăng lên nếu WAL bị loại bỏ. Điều này có nghĩa là, việc nhân rộng và quản lý WAL phải bổ sung cho nhau để đảm bảo việc nhân rộng không bị phá vỡ
  • Không thể sao chép các đối tượng lớn

Dưới đây là một số tài nguyên khác để giúp bạn hiểu rõ hơn về PostgreSQL Logical Replication và sự khác biệt giữa nó và sao chép trực tuyến.

Trình gói dữ liệu nước ngoài

Trong khi Trình gói dữ liệu nước ngoài không thực sự sao chép dữ liệu, tôi muốn làm nổi bật tính năng này của PostgreSQL vì nó có thể giúp các DBA đạt được điều gì đó tương tự như sao chép mà không thực sự sao chép dữ liệu. Điều này có nghĩa là dữ liệu không được sao chép từ nguồn sang đích và dữ liệu có thể được các ứng dụng truy cập từ cơ sở dữ liệu đích. Cơ sở dữ liệu đích chỉ có cấu trúc bảng với liên kết chứa Chi tiết máy chủ và cơ sở dữ liệu của bảng nguồn và khi ứng dụng truy vấn bảng đích thì dữ liệu được kéo từ cơ sở dữ liệu nguồn sang cơ sở dữ liệu đích tương tự như Liên kết cơ sở dữ liệu. Nếu FDW có thể trợ giúp, thì bạn hoàn toàn có thể tránh được chi phí sao chép dữ liệu qua mạng. Nhiều khi chúng tôi gặp phải tình huống trong đó báo cáo có thể được thực thi trên cơ sở dữ liệu mục tiêu từ xa mà không cần dữ liệu hiện diện trên thực tế.

FDW là một lựa chọn tuyệt vời trong những trường hợp sau -

  • Nếu bạn có các bảng nhỏ và tĩnh trong cơ sở dữ liệu nguồn thì không thực sự đáng để sao chép lại dữ liệu
  • Có thể thực sự có lợi, nếu bạn có các bảng thực sự lớn trong cơ sở dữ liệu nguồn và bạn đang chạy các truy vấn tổng hợp trên cơ sở dữ liệu đích.

Ưu điểm của việc sử dụng trình gói dữ liệu nước ngoài

  • Có thể tránh hoàn toàn việc sao chép dữ liệu, điều này có thể tiết kiệm thời gian và tài nguyên
  • Đơn giản để triển khai
  • Dữ liệu được tổng hợp luôn là dữ liệu mới nhất
  • Không cần bảo trì trên đầu

Nhược điểm của việc Sử dụng Trình gói Dữ liệu Nước ngoài

  • Các thay đổi về cấu trúc trên bảng nguồn có thể ảnh hưởng đến chức năng ứng dụng trên cơ sở dữ liệu đích
  • Phụ thuộc nhiều vào mạng và có thể có chi phí mạng đáng kể tùy thuộc vào loại báo cáo đang được chạy
  • Chi phí hiệu suất được mong đợi khi các truy vấn được thực thi một số lần vì mỗi khi truy vấn được thực thi, dữ liệu phải được kéo qua mạng từ cơ sở dữ liệu nguồn và cũng có thể đặt ra chi phí hiệu suất trên cơ sở dữ liệu nguồn
  • Bất kỳ tải nào trên nguồn đều có thể ảnh hưởng đến hiệu suất của các ứng dụng trên cơ sở dữ liệu đích

Kết luận

  • Việc sao chép các bảng có thể phục vụ nhiều mục đích quan trọng khác nhau cho công việc kinh doanh
  • Có thể hỗ trợ truy vấn song song phân tán trong môi trường phân tán
  • Việc triển khai đồng bộ gần như không thể thực hiện được
  • Cơ sở hạ tầng phải được cung cấp đầy đủ năng lực, liên quan đến chi phí
  • Một lựa chọn tuyệt vời để xây dựng cơ sở dữ liệu tập trung tích hợp cho các mục đích báo cáo và phân tích

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra tự động các bản sao lưu PostgreSQL

  2. Bạn sử dụng các biến script trong psql như thế nào?

  3. nhầm lẫn cổng postgresql 5433 hay 5432?

  4. Làm thế nào để làm cho một tiện ích mở rộng không thể di dời?

  5. Nhập CSV PostgreSQL từ dòng lệnh