Sao lưu và khôi phục cơ sở dữ liệu trong PostgreSQL

PostgreSQL cho phép một mức độ linh hoạt cao trong việc sao lưu và phục hồi dữ liệu, Trong bài viết này, chúng ta sẽ lần lượt điểm qua các tiện ích được sử dụng nhiều nhất.

Sao lưu cơ sở dữ liệu trong tệp tar

Tiện ích pg_dump được sử dụng để sao lưu dữ liệu của một cơ sở dữ liệu duy nhất hoặc bảng trong PostgreSQL.

pg_dump -U db_user -W -F t db_name > /path/to/your/file/dump_name.tar

Ở đây chúng ta đã sử dụng các tùy chọn sau:

  • -W sẽ buộc pg_dump phải nhập mật khẩu trước khi kết nối với máy chủ.
  • -F được sử dụng để chỉ định định dạng của tệp đầu ra, có thể là một trong những định dạng sau:
    1. p – tập lệnh SQL văn bản thuần túy
    2. c – kho lưu trữ định dạng tùy chỉnh
    3. d – kho lưu trữ định dạng thư mục
    4. t – kho lưu trữ định dạng tar

Trong trường hợp bạn gặp phải lỗi sau.

 pg_dump: [archiver (db)] connection to database "mydb" failed: FATAL: Peer authentication failed for user "postgres"

Vui lòng làm theo hướng dẫn này –  Cách khắc phục – FATAL: Xác thực ngang hàng không thành công đối với lỗi “postgres” của người dùng

Khôi phục cơ sở dữ liệu từ tệp tar

Tương tự, tiện ích pg_restore được sử dụng để khôi phục cơ sở dữ liệu từ kết xuất được tạo bởi pg_dump.

pg_restore -d db_name /path/to/your/file/dump_name.tar -c -U db_user

Cờ -C là để tạo một cơ sở dữ liệu trước khi khôi phục dữ liệu vào nó.

Sao lưu cơ sở dữ liệu ở định dạng SQL

Một bản sao lưu tar có thể gây ra sự cố trong khi khôi phục kết xuất cho một phiên bản PostgreSQL khác. Vì vậy, tôi luôn khuyên bạn nên sao lưu định dạng SQL.

pg_dump -U db_user database_name > path/to/backup.sql

Khôi phục cơ sở dữ liệu từ tệp SQL

Các tệp SQL có thể được khôi phục bằng cách sử dụng psql như sau.

psql -U db_user < path/to/backup.sql

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

Postgres cũng cho phép chúng ta sao lưu các bảng cụ thể thay vì toàn bộ cơ sở dữ liệu.

pg_dump -U db_user -d db_name -t table_name > path/to/backup.sql

Khôi phục bảng từ tệp SQL

psql -U db_user -d db_name < path/to/backup.sql

Sao lưu tất cả các cơ sở dữ liệu cùng một lúc

Chúng ta cũng có thể sao lưu tất cả cơ sở dữ liệu của người dùng bằng cách sử dụng tiện ích pg_dumpall.

pg_dumpall -U db_user > path/to/backup.sql

Khôi phục tất cả cơ sở dữ liệu từ tệp sao lưu

psql -U db_user < path/to/backup.sql

Sao lưu cơ sở dữ liệu từ xa

pg_dump -h host_name -p port_number db_name > path/to/backup.sql

Khôi phục cơ sở dữ liệu từ xa

psql -h host_name -p port_number db_name < path/to/backup.sql

Sao lưu cơ sở dữ liệu PostgreSQL đã nén

pg_dump -U db_user -d db_name | gzip > path/to/backup.sql.gz

Khôi phục từ bản sao lưu đã nén

gunzip -c path/to/backup.sql.gz | psql -U db_user -d db_name
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments