Не удается импортировать в базу данных 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 ответа:
Порядок аргументов в команде является существенным. В первом примере выше у вас есть
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.shNOWDATE=`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, надеюсь, это поможет!