Sao lưu và khôi phục cơ sở dữ liệu là một phần quan trọng trong quản trị cơ sở dữ liệu PostgreSQL, giúp bảo vệ dữ liệu khỏi mất mát và sự cố. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện sao lưu và khôi phục cơ sở dữ liệu PostgreSQL một cách chi tiết.

Giới thiệu về PostgreSQL

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở mạnh mẽ, hỗ trợ nhiều tính năng tiên tiến. Việc sao lưu và khôi phục cơ sở dữ liệu là một quy trình thiết yếu cho bất kỳ quản trị viên cơ sở dữ liệu nào, đảm bảo rằng dữ liệu luôn an toàn và có thể phục hồi khi cần thiết.

Phương pháp sao lưu cơ sở dữ liệu PostgreSQL

Có hai phương pháp chính để sao lưu cơ sở dữ liệu PostgreSQL:

1. Sao lưu bằng pg_dump

pg_dump là công cụ dòng lệnh được sử dụng để sao lưu một cơ sở dữ liệu PostgreSQL. Nó tạo ra một tập tin sao lưu có thể phục hồi sau này.

Cách sử dụng pg_dump

Để sao lưu một cơ sở dữ liệu, bạn có thể sử dụng lệnh sau trong terminal:

pg_dump -U [tên_người_dùng] -h [địa_chỉ_máy_chủ] -p [cổng] -F c -b -v -f [đường_dẫn_tập_tin_sao_lưu] [tên_cơ_sở_dữ_liệu]

Trong đó:

  • -U: Tên người dùng PostgreSQL.
  • -h: Địa chỉ máy chủ (thường là localhost).
  • -p: Cổng (thường là 5432).
  • -F c: Định dạng sao lưu (có thể là c cho định dạng nén, t cho tar, hoặc p cho định dạng văn bản).
  • -b: Sao lưu cả dữ liệu lớn.
  • -v: Chế độ chi tiết (verbose).
  • -f: Đường dẫn nơi lưu trữ tệp sao lưu.
  • [tên_cơ_sở_dữ_liệu]: Tên cơ sở dữ liệu bạn muốn sao lưu.

Ví dụ:

pg_dump -U postgres -h localhost -p 5432 -F c -b -v -f /path/to/backup/mydb.backup mydatabase

2. Sao lưu bằng pg_basebackup

pg_basebackup là công cụ dùng để sao lưu toàn bộ dữ liệu trong một instance PostgreSQL. Đây là phương pháp lý tưởng cho việc sao lưu toàn bộ cơ sở dữ liệu.

Cách sử dụng pg_basebackup

Lệnh cơ bản để sao lưu với pg_basebackup như sau:

pg_basebackup -U [tên_người_dùng] -h [địa_chỉ_máy_chủ] -D [thư_mục_đích] -Ft -z -P

Trong đó:

  • -D: Thư mục nơi lưu trữ sao lưu.
  • -Ft: Định dạng tar.
  • -z: Nén sao lưu.
  • -P: Hiển thị tiến trình.

Ví dụ:

pg_basebackup -U postgres -h localhost -D /path/to/backup/mydb_backup -Ft -z -P

Khôi phục cơ sở dữ liệu PostgreSQL

Có hai phương pháp chính để khôi phục cơ sở dữ liệu PostgreSQL, phụ thuộc vào phương pháp sao lưu đã sử dụng.

1. Khôi phục từ tệp sao lưu pg_dump

Để khôi phục từ tệp sao lưu được tạo bởi pg_dump, bạn có thể sử dụng lệnh pg_restore. Dưới đây là cú pháp:

pg_restore -U [tên_người_dùng] -h [địa_chỉ_máy_chủ] -p [cổng] -d [tên_cơ_sở_dữ_liệu] -v [đường_dẫn_tập_tin_sao_lưu]

Ví dụ:

pg_restore -U postgres -h localhost -p 5432 -d mydatabase -v /path/to/backup/mydb.backup

2. Khôi phục từ sao lưu toàn bộ với pg_basebackup

Để khôi phục từ một sao lưu toàn bộ bằng pg_basebackup, bạn cần dừng server PostgreSQL và sao chép thư mục sao lưu vào thư mục dữ liệu của PostgreSQL. Các bước thực hiện như sau:

Dừng dịch vụ PostgreSQL:

sudo systemctl stop postgresql

Xóa hoặc di chuyển thư mục dữ liệu hiện tại:

mv /var/lib/postgresql/12/main /var/lib/postgresql/12/main_old

Sao chép thư mục sao lưu vào thư mục dữ liệu:

cp -R /path/to/backup/mydb_backup /var/lib/postgresql/12/main

Khởi động lại dịch vụ PostgreSQL:

sudo systemctl start postgresql

Kết luận

Việc sao lưu và khôi phục cơ sở dữ liệu PostgreSQL là một kỹ năng quan trọng mà bất kỳ quản trị viên cơ sở dữ liệu nào cũng nên nắm vững. Bằng cách sử dụng các công cụ như pg_dumppg_basebackup, bạn có thể đảm bảo rằng dữ liệu của mình được bảo vệ và có thể phục hồi khi cần thiết. Hãy chắc chắn kiểm tra và thực hành các quy trình này để đảm bảo bạn luôn sẵn sàng trong trường hợp có sự cố xảy ra.