Làm cách nào để khôi phục cơ sở dữ liệu PostgreSQL từ tệp .tar?


20

Tôi có tất cả các cơ sở dữ liệu PostgreSQL được sao lưu trong các bản sao lưu gia tăng bằng WHM, tạo ra $ dbName. tập tin tar .

Dữ liệu được lưu trữ trong các tệp .tar này, nhưng tôi không biết cách khôi phục lại vào cơ sở dữ liệu riêng lẻ thông qua SSH. Đặc biệt là vị trí tập tin.

Tôi đã từng sử dụng:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

tạo ra lỗi 'không thể mở tệp đầu vào: Quyền bị từ chối'

Bất kỳ trợ giúp đánh giá cao.


Người dùng bạn đang chạy lệnh này có quyền truy cập vào tệp đó không?
chiếu

Xin chào Mat, bạn sẽ nghĩ vậy, (chạy bằng root) nhưng vừa giải quyết vấn đề sau nhiều kết hợp, và chuyển tệp .tar thô sang tmp .... pg_restore -c -i -U postgres -d client03 -v "/Tmp/client03.tar" -W Cuối cùng -W là thủ thuật chính buộc đầu vào mật khẩu theo yêu cầu cho phép mọi thứ được đặt lại với nhau.
Stephen

Câu trả lời:


24

Tìm thấy chuỗi mã chính xác, trong trường hợp người khác tìm thấy chuỗi này.

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

Sự cố là từ http://www.postgresql.org/docs/7.3/static/app-pgrestore.html và một chút thử nghiệm và lỗi.

Bản chất...

-c to clean the database
-i to ignore any database version checks
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

Hy vọng những điều trên giúp người khác.


Làm thế nào để làm tương tự với tar.gz?
eri

2

Khi sử dụng PGAdmin III để thực hiện khôi phục cho tôi, nó hoạt động hoàn hảo bằng cách sử dụng lệnh sau mà nó tự xây dựng:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

Lưu ý để tránh cảnh báo, nên có vai trò của chủ sở hữu đối tượng trong tệp sao lưu đã tồn tại trong máy chủ đích. Ngoài ra, bạn đã có DB đích được tạo và sở hữu bởi vai trò đó.


1

Tôi không chắc nó có thể nhập tệp .tar. Tôi sẽ làm một

tar -zxvf client03.tar 

để trích xuất bất cứ thứ gì có trong tệp và thử lại pg_restore. Tôi biết pg_restore hoạt động, vì chúng ta có cùng phương thức khôi phục từ khôi phục kim loại trần.


1
Xin chào Stephen, vâng, rõ ràng là có thể, tôi chỉ mất một lúc để lấy mã chính xác và thả tệp vào một thư mục có quyền truy cập :)
Stephen

"-Z" sẽ trả về lỗi, vì nó chỉ là tar, không được nén bằng gzip.
Alex

Alex đúng 100%.
Stephen Thompson

0

Dưới đây được tạo cho tôi từ pgAdmin iii bằng cách nhấp vào cơ sở dữ liệu và nhấp chuột phải và chọn khôi phục. Tôi đã điều hướng đến tập tin .tar tôi có và nó đã tự làm điều đó.

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

0

Đối với phiên bản 9.5, hãy chạy dòng lệnh sau trong dòng lệnh

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"


0

TIÊU THỤ GNU / LINUX:

pg_restore -h 127.0.0.1 -p 5432 -U "postgres" -d "dvdrental_tpl" -v "/var/backups/dvdrental.tar";

- Trợ giúp chi tiết

pg_restore - trợ giúp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.