Tôi đã giải quyết vấn đề này bằng cách sao lưu cho tất cả các lược đồ riêng lẻ khi kích thước của cơ sở dữ liệu (có thể là số lượng lược đồ hoặc số bảng) tăng lên, thật khó để sao lưu bằng cách sử dụng pg_dump.
Tôi đã thực hiện sửa đổi sau đối với tập lệnh để thực hiện sao lưu theo lược đồ:
-
Trước khi chạy
pg_dump
, liệt kê tất cả các lược đồ cơ sở dữ liệu vào một tệp. Để chúng tôi có thể lặp lại tất cả các lược đồ và sao lưu cho một lược đồ.Đây là lệnh liệt kê tất cả lược đồ vào một tệp
psql <db_name> -o <output_file> < <sql_to_list_schema>
Đây
sql_to_list_schema
chứaCHỌN n.nspnameFROM pg_catalog.pg_namespace nWHERE n.nspname! ~ '^ Pg_' VÀ n.nspname <> 'information_schema';
-
Bây giờ hãy đọc tất cả các dòng của
output_file
và sao lưu lược đồ đópg_dump <db_name> -f <backup_file> -i -x -O -R -n <schema_name_read_from_file>