Есть ли у Heroku pgbackups: восстановить, перестроить базу данных или просто заново ее заполнить? - PullRequest
8 голосов
/ 05 февраля 2012

Я пытаюсь скопировать свою производственную базу данных на Heroku на мой промежуточный сервер.

Мой промежуточный сервер опередил мой рабочий сервер с миграцией, которая создает дополнительную таблицу.Теперь я хочу выполнить пробный запуск миграции, чтобы добавить эту таблицу в производственную базу данных, и поэтому хотел бы восстановить базу данных моего промежуточного уровня, чтобы сделать это.

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

heroku pgbackups:url b104 --app production
# 'http://s3.amazonaws.com/...'

heroku pgbackups:restore DATABASE 'http://s3.amazonaws.com/...' --app staging

Каждый раз, когда я делаю это, я обнаруживаю, что «новая» таблица все еще остается.

Восстанавливает ли pgbackups:restore структуру таблицы или просто данные - что здесь происходит?

Ответы [ 2 ]

11 голосов
/ 06 февраля 2012

Восстановление - это простое восстановление Postgres, поэтому, по сути, это сценарий версии ваших данных.

Для того, чтобы сделать это, вам нужно сначала обнулить базу данных, а затем пересобрать ее из сценария базы данных:

heroku pg:reset
heroku pgbackups:restore blah...
4 голосов
/ 20 сентября 2013

Как сказал Нил, pgbackups: restore только перемещает данные и не меняет фактическую структуру БД.

для полного восстановления БД (измените производство приложений, размещение приложений и номер_перемещения в соответствии с вашим приложением):

сначала получите текущую миграцию из вашего производства.

heroku run rake db:version --app app-production

сбросите промежуточную базу данных (естественно, при необходимости сделайте резервную копию)

heroku pg:reset DATABASE_URL --confirm app-staging

запустите миграциидо миграционного номера, чтобы соответствовать структуре производственной базы данных

heroku run rake db:migrate VERSION=current_migration_number --app app-staging

захватить производственное приложение

heroku pgbackups:capture --app app-production

отправить данные в промежуточное приложение

РЕДАКТИРОВАТЬ - в случаевы используете инструментальный пояс heroku, синтаксический шаблон был изменен с pgbackups:action_name на pg:backups action_name

heroku pgbackups:restore DATABASE "heroku pgbackups:url --app app-production" --app app-staging

промежуточная база данных теперь должна соответствовать производственным данным и структуре

heroku run rake db:migrate --app app-staging

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...