0

Hướng dẫn backup và restore Postgres database

Bài ghi chú nhanh, hướng dẫn backup và restore Postgres database từ phiên bản 9.2 trở lên.

Cách backup dữ liệu Postgres ra file text

Backup

Các tham số:

  • -U username
  • -h domain, địa chỉ host
  • -p port của Postgres service
  • -W yêu cầu nhập password
  • -a data-only chỉ xuất data
  • -s schema-only chỉ xuất cấu trúc bảng
  • -d tên database muốn backup
  • -f tên file để lưu trữ

Restore

Khi backup bằng file text thì phải import bằng psql:

Các tham số tương đối giống pg_dump, chỉ có 1 chút khác biệt:

  • -f tên file lưu trữ để import vào
  • -1 chạy từng lệnh 1

 

Cách backup dữ liệu Postgres ra file nén

Bạn có thể sử dụng custom format của Postgres để giúp tiết kiệm dung lượng lưu trữ cũng như tăng tốc restore (import)

Backup

Các tham số:

  • -U username
  • -h domain, địa chỉ host
  • -p port của Postgres service
  • -W yêu cầu nhập password
  • -a data-only chỉ xuất data
  • -s schema-only chỉ xuất cấu trúc bảng
  • -d tên database muốn backup
  • -f tên file để lưu trữ
  • -Fc: tham số -F cho phép chọn kiểu lưu trữ (c:custom, d:directory, t:tar, p:plain_text), ta dùng c
  • -Z9: tham số -Z cho phép tùy chọn cấp độ nén từ 0-9

Restore

Khi backup bằng file nén thì phải import bằng pg_restore.

Các tham số tương đối giống pgsqlpg_dump ở trên, chỉ có 1 chút khác biệt:

  • chỉ đặt tên tên file ở cuối lệnh, ko dùng tham số -f
  • -j số lượng job chạy song song đồng thời. ở đây ta dùng 8. Hữu ích khi import file lớn

 

So sánh giữa cách sử dụng file text và file nén

Có thể tóm gọn như sau:

  • File text: dump nhanh, kích thướng lớn, restore lâu,
  • File nén: dump lâu hơn, kích thước nhở, restore nhanh (với tham số -j)

Ví dụ 1 benchmark được thực hiện bởi dan.langille.org :

command dump time file size restore time
pg_dump 4m22.654s 13G 34m56.354s
pg_dump -Fc 11m12.443s 4.6G 34m27.218s
pg_dump -Z0 -Fc 4m18.742s 14G 36m8.156s
pg_dump -Z1 -Fc 5m0.498s 5.4G 36m26.047s
pg_dump -Z2 -Fc 5m24.376s 5.2G 36m11.556s
pg_dump -Z3 -Fc 6m20.513s 5.1G 36m12.259s
pg_dump -Z4 -Fc 6m46.074s 4.9G 36m31.050s
pg_dump -Z5 -Fc 8m22.397s 4.7G 34m53.817s
pg_dump -Z6 -Fc 11m18.154s 4.6G 35m54.344s
pg_dump -Z7 -Fc 14m21.447s 4.5G 35m14.134s
pg_dump -Z8 -Fc 25m15.000s 4.5G (45MB smaller) 35m22.793s
pg_dump -Z9 -Fc 26m40.550s 4.5G (1.8MB smaller) 35m11.992s

Thời gian Import cũng cải thiện đáng kể khi sử dụng -j chỉ định số lượng jobs đồng thời import, từ 34.5 phút giảm xuống còn 17 phút.

Có thể thấy, file nén không những tiết kiệm đến 65% kích cỡ lưu trữ cũng như 49% thời gian import.

 

Hoàng Tựa

Yêu thích lập trình web và tạo ra những thứ đẹp đẽ.

Leave a Reply

Your email address will not be published. Required fields are marked *