Quy trình thông thường là:
-
pg_dumpall --globals-only
để có được người dùng / vai trò / v.v. -
pg_dump -Fc
cho mỗi cơ sở dữ liệu để có được một kết xuất nén đẹp phù hợp để sử dụng vớipg_restore
.
Vâng, loại này thật tệ. Tôi thực sự muốn dạy pg_dump
để nhúng pg_dumpall
xuất thành -Fc
đổ, nhưng hiện tại rất tiếc là nó không biết làm thế nào nên bạn phải tự làm.
Cho đến khi PostgreSQL 11 cũng có một cảnh báo khó chịu với cách tiếp cận này:Không pg_dump
, cũng không phải pg_dumpall
trong --globals-only
chế độ sẽ kết xuất quyền truy cập của người dùng GRANT
s trên DATABASE
S. Vì vậy, bạn phải trích xuất chúng từ danh mục hoặc lọc pg_dumpall
. Điều này được khắc phục trong PostgreSQL 11; xem ghi chú phát hành
.
Bạn cũng nên biết về sao lưu vật lý - pg_basebackup
, Lưu trữ PgBarman và WAL, PITR, v.v. Những thứ này cung cấp khả năng phục hồi "chi tiết hơn" nhiều, tính đến từng phút hoặc từng giao dịch. Nhược điểm là chúng chiếm nhiều dung lượng hơn, chỉ có thể khôi phục về cùng một phiên bản PostgreSQL trên cùng một nền tảng và sao lưu tất cả các bảng trong tất cả cơ sở dữ liệu mà không có khả năng loại trừ bất kỳ thứ gì.