#ruby-on-rails #postgresql #heroku
#ruby-on-rails #postgresql #heroku
Вопрос:
У меня есть промежуточное приложение, полное данных, которые я хочу использовать для заполнения моей в настоящее время пустой производственной базы данных. В настоящее время я пытаюсь использовать pg: transfer. Какой правильный синтаксис использовать?
Адреса:
Staging app: afternoon-oasis-XXXX
Production app: warm-springs-XXXX, or postgres://long-database-url.compute-1.amazonaws.com:XXX/XXXXXXXX
В документации говорится:
#documentation
$ heroku pg:transfer --to `heroku config:get DATABASE_URL -a app-staging` --confirm someapp
Я пытался
$ heroku pg:transfer -t postgres://long-database-url.compute-1.amazonaws.com:XXX/XXXXXXXX -f JADE
Это должно быть извлечено из JADE, но появляется сообщение подтверждения, указывающее, что JADE, приложение my afternoon-oasis, мой предполагаемый источник, будет изменен:
WARNING: Destructive Action
! This command will affect the app: afternoon-oasis-XXXX
! To proceed, type "afternoon-oasis-XXXX" or re-run this command with --confirm afternoon-oasis-XXXX
Зачем Heroku изменять исходную базу данных? Или я неправильно понимаю синтаксис?
Заранее спасибо.
Комментарии:
1. Флаг подтверждения, вероятно, отображается в вашей рабочей базе данных. Просто предупреждаю, я считаю, что когда вы переходите от промежуточной к производственной с использованием этого метода, он перезапишет всю вашу производственную базу данных. Таким образом, вы могли бы просматривать множество данных.
2. У меня есть промежуточное приложение, полное данных. Мое производственное приложение пусто. В этом случае флаг поднимается в моем промежуточном приложении, которое я не хочу изменять. Я хочу, чтобы он извлекался из промежуточной обработки, отправлялся в производство. В будущем все будет наоборот, но это первый шаг.
3. Прояснил мой вопрос с этими мыслями.
4. Понял. Быстро нахожу решение
Ответ №1:
Второе обновление
Для этого вам понадобится дополнение pgbackups, но оно бесплатное. Извините, забыл об этом.
Этот аддон будет периодически создавать резервные копии вашей базы данных postgres, что очень удобно, если вам когда-нибудь понадобится восстановить данные.
Чтобы добавить его, просто запустите heroku addons:add pgbackups:auto-week -a warm-springs-XXXX
Также добавьте pgbackups в промежуточное приложение
heroku addons:add pgbackups:auto-week -a afternoon-oasis-XXXX
Затем запустите
heroku pgbackups:capture -a afternoon-oasis-XXXX
для создания резервных копий последней
Наконец, вы можете запустить
heroku pgbackups:restore DATABASE_URL `heroku pgbackups:url -a afternoon-oasis-XXXX` -a warm-springs-XXXX
Эта команда сначала получает URL-адрес резервной копии вашего промежуточного приложения db и переносит его в вашу рабочую среду.
Оригинал
Вместо использования pg:transfer
попробуйте сделать что-то вроде этого:
heroku pgbackups:restore DATABASE_URL 'INPUT YOUR STAGING DATABASE URL' -a warm-springs-XXXX
Дайте мне знать, если у вас возникнут какие-либо вопросы. Затем вы можете просто ввести сообщение подтверждения с подсказкой или добавить --confirm warm-springs-XXXX
в конец приведенной выше команды.
Комментарии:
1. Получение ‘! Ресурс не найден’. Устранение неполадок. Должен ли я заглянуть в pgbackups: transfer?
2. Хм, я предполагаю, что у вашего производственного приложения нет разрешения на прямое извлечение из базы данных. Вы могли бы добавить pgbackups к каждому, который позволит вам это сделать. Позвольте мне пересмотреть мой ответ, указав способ сделать это очень быстро.
3. на каждой из них установлен pgbackups.
4. Информация была передана. Это было ваше второе решение, которое сработало для меня. Спасибо, это было спасением!