Не удается импортировать в базу данных heroku postgres из дампа


Извините, если это дубликат, но я пытался найти ответ здесь, и ничего не помогло.

Поэтому я читал статьи heroku, такие как this и this. Мне удалось сохранить файл дампа, который я создал с помощью команды pg:backups capture. Загрузил его в s3 и попытался восстановить с помощью:

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

Но это просто не работает! В консоли он регистрирует:

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

Попробовал перечисленные варианты вместо DATABASE, но с тем же результатом. Также я пробовал другой хостинг, но с тем же результатом, снова. Я также попытался восстановить его из другого приложения, например:

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

Но он регистрируется с Backup oncampus::b001 not found. однако команда heroku pg:backups --app myapp показывает, что он присутствует.

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

Не знаю, что делать теперь. Просто надеюсь, что кто-нибудь мне поможет.

2 8

2 ответа:

Порядок аргументов в команде является существенным. В первом примере выше у вас есть heroku pg:backups restore DATABASE 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump', но команда ожидает, что ссылка первая и БД загрузится во вторую, что даст heroku pg:backups restore 'https://s3-eu-west-1.amazonaws.com/somebucket/uploads/tmp/b011.dump' DATABASE вместо этого. Я думаю, что в новом материале ID может быть предпочтительнее URL, но URL должен работать до тех пор, пока этот URL доступен. Надеюсь, это поможет, иначе дайте мне знать, и мы можем попробовать что-нибудь другое.

Подготовьте два файла sh, как показано ниже
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”

Вам нужно настроить учетные данные s3cmd, надеюсь, это поможет!