Tạo một bản sao cơ sở dữ liệu gia tăng trong PostgreSQL


7

Phần mềm máy ảo như VirtualBox cho phép một người tạo bản sao VM tăng dần. Đó là dữ liệu, một khi "chạm" (có thể ghi được), sẽ được sao chép và lưu trữ trong bộ đệm tăng dần của bản sao mới.

Tôi đang tìm kiếm tùy chọn tương tự cho DBMS Postgres.

Làm cách nào tôi có thể thiết lập một bản sao cơ sở dữ liệu gia tăng, trong đó các mục được đọc từ cơ sở dữ liệu gốc và các hàng được chạm / sửa đổi từ bản sao cục bộ?

Nếu không ở cấp độ DBMS, làm thế nào tôi có thể mô phỏng hành vi đó ở cấp độ hệ thống tệp / lưu trữ bằng cách sử dụng một thể hiện DBMS riêng biệt?

Bối cảnh: Ý tưởng là sử dụng máy chủ cơ sở dữ liệu mạnh mẽ mà không phải chịu nhiều chi phí tài nguyên cho bản sao cơ sở dữ liệu theo giai đoạn / nhà phát triển.


2
Bạn đang tìm kiếm bản sao vận chuyển nhật ký: postgresql.org/docs/civerse/static/warm-standby.html
a_horse_with_no_name

Câu trả lời:


6

Thực sự không có gì như thế này.

Bạn có thể sử dụng pg_basebackuphoặc pg_dumpđể sao chép DB gốc, nhưng không có cơ sở copy-on-write. Bản sao tích hợp yêu cầu bản sao không chia sẻ và bản sao chỉ đọc.

Bạn có thể sử dụng các tùy chọn sao chép của bên thứ 3 như Londiste hoặc Slony-I để sao chép trạng thái của máy chủ sang máy dev, nhưng các hệ thống này hơi mỏng manh, không xử lý sao chép DDL và có thể có tác động đáng kể đến máy chủ chính hiệu suất.

Các phiên bản PostgreQuery trong tương lai hy vọng sẽ có bản sao logic log-streaming sẽ gần với những gì bạn muốn. Hiện tại nó tồn tại như một bản vá cho mã nguồn, nhưng tại thời điểm viết (phát hành bản 9.3), nó đang ở giai đoạn phát triển alpha, nơi nó được xác nhận cho một vài mục đích sử dụng nhưng không sử dụng chung.

Có lẽ tôi sẽ xuống một hoặc hai lớp. Tôi sẽ sử dụng ảnh chụp nhanh sao chép hệ thống tệp, hoặc thậm chí sao chép hình ảnh máy ảo sao chép để đạt được những gì bạn muốn.


Cảm ơn. Tôi cũng thấy câu trả lời này của bạn rất hữu ích: stackoverflow.com/questions/17069163/ . Bạn nghĩ gì về các trình kích hoạt để phản chiếu tất cả các hoạt động CUD lên cơ sở dữ liệu hoặc bảng sao chép khác?
Lorenz Lo Sauer

1
@LoSauer Đó chính xác là những gì Londiste và Slony-tôi làm. Nó khó hơn vẻ ngoài của nó, đừng cố tự viết nó. Xem wiki.postgresql.org/wiki/ đá để biết các tùy chọn. Tải không tầm thường được thêm vào bản gốc, các bản sao cần phải luôn luôn bật và các thay đổi DDL là một nỗi đau.
Craig Ringer

3

Delphix ảo hóa Postgres cũng như Oracle và SQL Server. Delphix là phần mềm chạy dưới dạng VM. Delphix kết nối với cơ sở dữ liệu nguồn, thu thập cái được gọi là "timeflow". Một khung thời gian là tập hợp dữ liệu từ cơ sở dữ liệu nguồn cho phép Delphix quay các bản sao trên máy đích bất cứ nơi nào có trong cửa sổ thời gian được bao phủ bởi timeflow. Timeflow mặc định là hai tuần. Dữ liệu cũ hơn hai tuần không được sử dụng sẽ bị xóa. Delphix trông giống như một NAS cho cơ sở dữ liệu đích, bản sao. Bản sao mới chỉ trỏ đến các dữ liệu hiện có trên Delphix để bản sao mới không chiếm không gian mới và có thể được tạo trong vài phút. Các bản sao có thể được làm mới từ nguồn trong vài phút, chi nhánh để tạo điều khiển dữ liệu để lấy dữ liệu kiểm soát nguồn là gì và có thể được khôi phục để cho phép kiểm tra lại QA phá hủy lặp đi lặp lại.

Bạn có thể tải xuống phiên bản Delphix miễn phí tại đây http://datavirtualizer.com/delphix-express-installation/

Tiết lộ đầy đủ: Tôi làm việc tại Delphix

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.