2015-03-14 18 views
8

Przepraszam, jeśli jest to duplikat, ale starałem się znaleźć odpowiedź tutaj i nic nie pomogło.Nie można zaimportować do bazy danych postgres heroku z dumpa

Więc czytałem artykuły Heroku takie jak this i this. Udało mi się zapisać plik zrzutu, który utworzyłem za pomocą polecenia pg:backups capture. Przesłano go do s3 i próbowano przywrócić go za pomocą:

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

Ale to po prostu nie działa! W konsoli rejestruje:

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

Tried wymienione opcje zamiast DATABASE, ale z takim samym skutkiem. Próbowałem też innego hostingu, ale z tym samym rezultatem. Próbowałem też przywrócić go z innych aplikacji, takich jak to:

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

Ale loguje z Backup oncampus::b001 not found. Jednak komenda heroku pg:backups --app myapp pokazuje, że jest on obecny.

=== 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 

Nie wiem, co teraz zrobić. Mam tylko nadzieję, że ktoś mi pomoże.

+0

Spróbuj: 'heroku pg: kopie zapasowe przywracają HEROKU_POSTGRESQL_SILVER 'https: // s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump'' i upewnij się, że plik na Amazon jest dostępny z zewnątrz. – cristian

+0

Mam dokładnie takie same problemy. Wygląda na to, że Heroku usunął PG: Backup Add On i zbudował funkcjonalność w ich standardowej funkcjonalności PostgreSQL. Zobacz nową dokumentację tutaj: https://devcenter.heroku.com/articles/heroku-postgres-backups. Nie zapewniają dokumentacji importowania za pomocą bezpośredniego adresu URL. –

+0

@cristian Próbowałem tego. Sprawdzono również, czy jest dostępny przez prywatną sesję. –

Odpowiedz

8

Kolejność argumentów polecenia jest znaczna. W pierwszym powyższym przykładzie masz heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump', ale polecenie oczekuje, że referencja FIRST i db zostaną załadowane na sekundę, co da w zamian heroku pg:backups restore 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump' DATABASE. Myślę, że w nowym pliku ID może być preferowany względem URL, ale URL powinien działać tak długo, jak długo jest dostępny. Nadzieję, że pomaga, w przeciwnym razie daj mi znać, a my możemy spróbować innych rzeczy.

+0

Haha, ten szczegół rozwiązał wszystko. Dzięki! –

+0

Awesome. Naprawdę łatwy detal do przeoczenia, i niestety w tym przypadku komunikat o błędzie nie daje wiele pomocy. Cieszę się, że to wróciło na właściwe tory! Wspomnę zespół Heroku Postgres, że nowe dokumenty nie obejmują importowania z adresu URL. – geemus

+0

Świetna odpowiedź.To rozwiązało również mój problem! –

1

przygotować dwa pliki sh poniżej
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” 

trzeba skonfigurować s3cmd poświadczenia nadzieję, że to pomaga!

Powiązane problemy