Heroku передача данных между удаленными базами данных, наглядный пример синтаксиса

#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. Информация была передана. Это было ваше второе решение, которое сработало для меня. Спасибо, это было спасением!