Điểm:0

Postgresql 13 - Tăng tốc pg_dump lên 5 phút thay vì 70 phút

lá cờ cn

Chúng tôi sử dụng pg_dump hàng đêm để tạo ảnh chụp nhanh cơ sở dữ liệu của mình. Chúng tôi đã làm trong một thời gian dài với một lệnh đơn giản

pg_dump -Fc database_name

Quá trình này mất khoảng một giờ và tạo ra tệp có dung lượng hơn 30 GByte.

Làm thế nào chúng ta có thể tăng tốc mọi thứ?

Điểm:4
lá cờ cn

Bảng lớn nhất của chúng tôi chứa dữ liệu hình ảnh thô ở dạng tạm biệt cột.

Khi chúng tôi thực hiện một SAO CHÉP đơn giản từ psql trên bảng này sang tiêu chuẩn, khá nhanh (1 hoặc 2 phút), nhưng lại rất chậm với tệp pg_dump. Phải mất ~ 60 phút.

Vì vậy, điều tra này tôi tình cờ thấy điều này thảo luận. Có thể thấy rằng quá trình nén pg_dump khá chậm nếu dữ liệu đã được nén giống như với dữ liệu hình ảnh ở định dạng bytea. Và nén bên ngoài pg_dump(-Z0) thì tốt hơn.

Ngoài ra, chúng tôi thấy rằng chúng tôi có thể sử dụng cpu đa lõi của mình (-j10 và pigz). Vì vậy, bây giờ chúng tôi đang làm điều đó như thế này:

$ pg_dump -Z0 -j 10 -Fd database_name -f dumpdir
$ tar -cf - dumpdir | pigz > dumpdir.tar.gz
$ rm bãi chứa

Thời gian đã giảm từ ~70 phút xuống còn ~5 phút. Khá tuyệt.

Bạn có thể khôi phục nó như thế này:

$ pigz -dc dumpdir.tar.gz | tar -C dumpdir --strip-components 1 -xf -
$ pg_restore -j 10 -Fd -O -d database_name dumpdir
Melih avatar
lá cờ gh
Chúng tôi đã có vấn đề tương tự. Đã dành 2 ngày cho pg_dump và tôi đã hủy bỏ tuy nhiên tôi cần phải thực hiện kết xuất. chúng tôi có cơ sở dữ liệu 3 TB và hơn 1,5 TB là bảng hình ảnh bytea. Thời gian có thể giảm trong bảng lớn?
Janning avatar
lá cờ cn
Vâng, tôi đoán nó sẽ giúp ích rất nhiều (= giờ)
plancys avatar
lá cờ sd
Làm thế nào để bạn khôi phục db từ điều này? `pg_restore -d root -j 10 -Fd dump_2022-03-24_17_47_40.tar.gz` trả về cho tôi `pg_restore: error: could not open input file "dump_2022-03-24_17_47_40.tar.gz/toc.dat": Not a thư mục`
Melih avatar
lá cờ gh
@Janning đã dành 2 ngày. bây giờ với -j 2 6,5 giờ.tôi hy vọng sẽ có ít thời gian hơn với -j 10... cảm ơn
Janning avatar
lá cờ cn
Vấn đề không phải là về -j mà quan trọng là -Z0 để tắt tính năng nén và sử dụng -Fd để kết xuất nó vào một thư mục. -j chỉ cho biết quá trình nên sử dụng bao nhiêu CPU. Nếu bạn có nhiều sử dụng tất cả.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.