pg_dump là một công cụ dòng lệnh trong PostgreSQL được sử dụng để sao lưu (backup) cơ sở dữ liệu. Nó cho phép bạn tạo một bản sao lưu của toàn bộ cơ sở dữ liệu hoặc chỉ một phần của nó, như bảng hoặc schema. Bản sao lưu này có thể được lưu trữ dưới dạng tệp văn bản (plain text) hoặc tệp nhị phân (custom format), và có thể được sử dụng để phục hồi (restore) cơ sở dữ liệu sau này.

Cách hoạt động của pg_dump

  • Sao lưu cơ sở dữ liệu: Khi bạn thực hiện lệnh pg_dump, nó sẽ tạo một tệp chứa các câu lệnh SQL cần thiết để tái tạo cơ sở dữ liệu hoặc các đối tượng bên trong nó.
  • Không gây gián đoạn: pg_dump hoạt động mà không làm gián đoạn các kết nối hiện tại tới cơ sở dữ liệu. Người dùng vẫn có thể thực hiện các thao tác đọc/ghi trong khi sao lưu đang diễn ra.

Cú pháp cơ bản

pg_dump [OPTION]... [DBNAME]
  • DBNAME: Tên của cơ sở dữ liệu bạn muốn sao lưu.
  • [OPTION]: Các tùy chọn để tùy chỉnh quá trình sao lưu, như định dạng tệp, phương thức mã hóa, và nhiều hơn nữa.

Một số tùy chọn phổ biến

  • -U: Tên người dùng.
  • -h: Địa chỉ máy chủ (host).
  • -p: Cổng (port).
  • -F: Định dạng tệp sao lưu. Các tùy chọn gồm:
    • p: Plain text (mặc định).
    • c: Custom (tệp nhị phân, có thể chọn lọc khôi phục).
    • d: Directory (sao lưu từng đối tượng vào tệp riêng).
    • t: Tên bảng (nếu bạn chỉ muốn sao lưu một bảng cụ thể).

Khi nào nên sử dụng pg_dump

  1. Sao lưu định kỳ: Sử dụng pg_dump để tạo bản sao lưu định kỳ cho cơ sở dữ liệu của bạn nhằm bảo vệ dữ liệu khỏi mất mát do sự cố phần cứng, lỗi ứng dụng hoặc các vấn đề khác.
  2. Di chuyển dữ liệu: Khi bạn cần di chuyển cơ sở dữ liệu từ một máy chủ này sang máy chủ khác hoặc từ môi trường phát triển sang môi trường sản xuất.
  3. Phục hồi dữ liệu: Khi cần khôi phục cơ sở dữ liệu từ một bản sao lưu trước đó.
  4. Tạo bản sao cho môi trường thử nghiệm: Sử dụng pg_dump để tạo một bản sao cơ sở dữ liệu cho môi trường thử nghiệm, cho phép bạn kiểm tra các thay đổi mà không làm ảnh hưởng đến môi trường sản xuất.
  5. Nâng cấp hoặc bảo trì: Trước khi thực hiện nâng cấp hoặc bảo trì hệ thống, việc sao lưu dữ liệu là cần thiết để đảm bảo rằng bạn có thể khôi phục lại trong trường hợp có sự cố.

Ví dụ

Sao lưu toàn bộ cơ sở dữ liệu:

pg_dump -U username -h localhost -F c -f mydatabase.backup mydatabase

Sao lưu một bảng cụ thể:

pg_dump -U username -h localhost -t mytable mydatabase > mytable.sql

Kết luận

pg_dump là một công cụ mạnh mẽ và cần thiết cho bất kỳ quản trị viên cơ sở dữ liệu PostgreSQL nào. Sử dụng nó một cách hợp lý sẽ giúp bạn bảo vệ dữ liệu và đảm bảo rằng bạn có thể phục hồi dễ dàng trong trường hợp cần thiết.