Khôi phục cơ sở dữ liệu Postgres: pg_restore -vs- chỉ sử dụng psql


16

Tôi đang hủy cơ sở dữ liệu Postgres của mình bằng pg_dump (ở định dạng văn bản thuần túy) và sau đó khôi phục nó đơn giản bằng cách sử dụng psql (với -ftùy chọn).

Điều này đặt ra câu hỏi: tôi có thiếu thứ gì khi không sử dụng pg_restore có vẻ như là một công cụ khôi phục chuyên dụng (so với cái chung psql) không?

Tôi có thể kiểm soát các tùy chọn như vô hiệu hóa kích hoạt và như vậy bằng cách sử dụng pg_dumpcác tham số. Sau đó, được pg_restoresử dụng để làm gì? định dạng kết xuất văn bản không đơn giản?


4
Từ hướng dẫn : " pg_restore là một tiện ích để khôi phục cơ sở dữ liệu PostgreQuery từ kho lưu trữ được tạo bởi pg_dump ở một trong các định dạng văn bản không đơn giản "
a_horse_with_no_name

Câu trả lời:


19

Nếu bạn đã tạo kết xuất định dạng SQL, tất cả những gì bạn có thể sử dụng là psql.

Nếu bạn đã tạo kết xuất định dạng tùy chỉnh ( pg_dump -Fc) hoặc thư mục định dạng ( pg_dump -Fd), bạn có thể và phải sử dụng pg_restore.

Các bãi chứa định dạng thư mục và tùy chỉnh cung cấp rất nhiều lợi thế so với các bãi chứa tập lệnh SQL đơn giản và tôi chỉ sử dụng chúng. Bạn chỉ có thể khôi phục có chọn lọc một số bảng / lược đồ, có thể chọn chỉ bao gồm lược đồ, chỉ dữ liệu hoặc cả hai khi khôi phục, v.v. Rất nhiều tùy chọn bạn phải chỉ định tại pg_dumpthời điểm với các kết xuất định dạng SQL có thể được chọn khi khôi phục- thời gian nếu bạn sử dụng kết xuất định dạng tùy chỉnh và pg_restore.

Nếu nó không tương thích ngược thì tôi chắc chắn mặc định pg_dumpsẽ là -Fcđịnh dạng (tùy chỉnh).

Bạn không thể chuyển đổi kết xuất định dạng SQL thành định dạng tùy chỉnh hoặc định dạng thư mục mà không khôi phục lại thành cơ sở dữ liệu PostgreQuery và sau đó hủy DB được khôi phục.


Cũng có thể đổi tên các hàm và thực hiện thao tác dữ liệu như bạn có thể trong một tệp sql với một biểu thức chính quy tốt?
Velop

1
Không, nhưng bạn có thể pg_restorekhông có dbnameđối số để biến nó thành kết xuất định dạng SQL nếu bạn cần. Bạn không thể làm ngược lại.
Craig Ringer

@CraigRinger có sự khác biệt về tốc độ khi sử dụng psql so với sử dụng pg_dump để khôi phục không?
Nikunj Sardhara

2
@NikunjSardhara Không thường xuyên, nhưng pg_restorehỗ trợ khôi phục song song và nếu bạn sử dụng nó sẽ nhanh hơn rất nhiều.
Craig Ringer
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.