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ộcpg_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:p
– tập lệnh SQL văn bản thuần túyc
– kho lưu trữ định dạng tùy chỉnhd
– kho lưu trữ định dạng thư mụct
– 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