Trong quá trình vận hành các cơ sở dữ liệu, việc sao lưu và phục hồi dữ liệu là một nhu cầu tất yếu của các nhà quản trị Cơ sở dữ liệu (Database Administrator - DBA). Hôm nay, tôi sẽ viết bài hướng dẫn cách sao lưu và phục hồi dữ liệu đối với Hệ Quản trị Cơ sở dữ liệu PostgreSQL.

Giả định:

  1. Phiên bản CSDL: PostgreSQL 9.2.x
  2. Đường dẫn (Path) đến các trình client (pg_dump, psql, v.v.) của PostgreSQL  là: /usr/local/pgsql/bin. Nếu bạn cài đặt và cấu hình PostgreSQL như Hướng dẫn biên dịch và cài đặt PostgreSQL 9.2.x trên Ubuntu 12.04 LTS thì nội dung dưới đây có thể áp dụng cho bạn 100% mà không cần phải điều chỉnh gì.

Sao lưu một database PostgreSQL

Giả sử chúng ta có database có tên dbtest, thực hiện sao lưu bằng cách dump vào file dbtest.dump trong thư mục /home/root2 như sau:

pg_dump -U postgres -f /home/root2/dbtest.dump dbtest

Trong trường hợp dung lượng database dbtest của bạn chứa các object lớn, bạn có thể thêm tuỳ chọn tar

pg_dump -U postgres -f /home/root2/dbtest.tar -Ft dbtest

Phục hồi dữ liệu một database PostgreSQL

psql -U postgres -d dbtest -f dbtest.dump

hoặc nếu bản sao lưu được lưu dưới dạng tar

pg_restore -U postgres -d dbtest dbtest.tar

Sao lưu một table trong một database PostgreSQL

pg_dump -Ft -d postgres -t mytable | gzip > mytable.tar.gz

Phục hồi dữ liệu một table trong một database PostgreSQL

gunzip mytable.tar.gz
pg_restore -d myotherdb /path/to/mytable.tar

Sao lưu toàn bộ các database trên server PostgreSQL vào db.out

pg_dumpall > db.out

Phục hồi toàn bộ các database trên server PostgreSQL từ một bản sao lưu db.out trước đó

psql -f db.out postgres