2015-03-14 26 views
8

Xin lỗi nếu nó là bản sao, nhưng tôi đã cố tìm câu trả lời ở đây và không có gì hữu ích.Không thể nhập vào cơ sở dữ liệu postgres của cô ấy từ bãi chứa

Vì vậy, tôi đã đọc các bài viết về Heroku như thisthis. Tôi đã có thể lưu một tệp kết xuất, mà tôi đã tạo với lệnh pg:backups capture. Tải nó lên s3 và cố gắng khôi phục nó với:

heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump' 

Nhưng nó không hoạt động! Trong bảng điều khiển, nhật ký:

Unknown database: https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump. Valid options are: DATABASE_URL, HEROKU_POSTGRESQL_SILVER_URL 

Đã thử các tùy chọn được liệt kê thay vì DATABASE nhưng có cùng kết quả. Ngoài ra tôi đã cố gắng lưu trữ khác, nhưng với kết quả tương tự, một lần nữa. Tôi cũng đã cố gắng để khôi phục lại nó từ ứng dụng khác, như thế này:

heroku pg:backups restore myapp::b001 HEROKU_POSTGRESQL_SILVER --app myapp-cedar 

Nhưng nó có thể ghi với Backup oncampus::b001 not found. Tuy nhiên, lệnh heroku pg:backups --app myapp cho thấy nó hiện diện.

=== Backups 
ID Backup Time    Status        Size Database 
---- ------------------------- ---------------------------------- ------ -------- 
b001 2015-03-13 18:10:14 +0000 Finished 2015-03-13 18:10:22 +0000 9.71MB ORANGE 

Không biết phải làm gì bây giờ. Chỉ hy vọng ai đó sẽ giúp tôi.

+0

Hãy thử: 'heroku pg: sao lưu khôi phục HEROKU_POSTGRESQL_SILVER 'https: // s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump'' và đảm bảo rằng tệp trên amazon có thể truy cập được từ bên ngoài. – cristian

+0

Tôi đang gặp sự cố tương tự chính xác này. Dường như Heroku đã loại bỏ PG: Sao lưu Add On và đã xây dựng chức năng vào chức năng Postgres chuẩn của họ. Xem tài liệu mới tại đây: https://devcenter.heroku.com/articles/heroku-postgres-backups. Họ không cung cấp tài liệu từ nhập thông qua URL trực tiếp. –

+0

@cristian Đã thử điều đó. Ngoài ra kiểm tra nếu nó có thể truy cập thông qua phiên riêng. –

Trả lời

8

Thứ tự của đối số cho lệnh là đáng kể. Trong ví dụ đầu tiên ở trên, bạn có heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump', nhưng lệnh mong đợi tham chiếu FIRST và db để tải vào thứ hai, thay vào đó sẽ cung cấp cho heroku pg:backups restore 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump' DATABASE. Tôi nghĩ trong ID công cụ mới có thể được ưa thích hơn với URL, nhưng URL phải hoạt động miễn là URL đó có thể truy cập được. Hy vọng rằng sẽ giúp, nếu không hãy cho tôi biết và chúng tôi có thể thử một số công cụ khác.

+0

Haha, chi tiết này đã giải quyết mọi thứ. Cảm ơn! –

+0

Tuyệt vời. Một chi tiết thực sự dễ dàng bỏ qua và rất tiếc trong trường hợp này, thông báo lỗi không giúp ích nhiều. Vui mừng khi biết rằng bạn đã trở lại đúng hướng! Tôi sẽ đề cập đến nhóm Postgoku của Heroku rằng các tài liệu mới không bao gồm nhập từ URL. – geemus

+0

Câu trả lời hay.Điều này giải quyết vấn đề của tôi là tốt! –

1

chuẩn bị hai file sh như sau
backup.sh

NOWDATE=`date +%Y-%m-%d` 
BACKUPNAME=$NOWDATE.dump 
export PGPASSWORD='<password>' 
echo “Creating backup of database to $BACKUPNAME” 
/usr/bin/pg_dump --host <urhostname> --port 5432 --username "<user>" --role "<role>" --no-password --format tar --blobs --verbose --file "./$BACKUPNAME" "dbname" 
echo “Succesfully created database backup” 
echo “Uploading backup to Amazon S3 bucket…” 
s3cmd put $BACKUPNAME s3://path/to/$BACKUPNAME 
echo “Successfully uploaded backup to S3″ 
echo “Deleting backup file…” 
rm $BACKUPNAME 
echo “Done” 

restore.sh

NOWDATE=`date +%Y-%m-%d` 
BACKUPNAME=$NOWDATE.dump 
echo “downloading the file $BACKUPNAME” 
s3cmd get s3://path/to/$BACKUPNAME 
echo “Succesfully downloaded” 
echo “Will restore it Please wait “ 
export PGPASSWORD='<password>' 
pg_restore --host <host> --port 5432 --username "<user>" --dbname "<databasename>" --role "<role>" --no-password --verbose "./$BACKUPNAME" 
echo “restoring the file $BACKUPNAME” 
echo “Deleting backup file…” 
rm -r $BACKUPNAME 

echo “Done” 

bạn cần phải cấu hình thông tin s3cmd hy vọng nó sẽ giúp!

Các vấn đề liên quan