Если я удалю свою таблицу heroku, смогу ли я позже восстановить базу данных с помощью резервной копии Heroku?

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

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

Спасибо!


person Ozge Cokyasar    schedule 16.09.2020    source источник


Ответы (1)


Вы должны запустить резервную копию с

pg_dump -h hostname -p 5432 -U username -F c -t mytable -f dumpfile mydatabase

Затем, после того как вы удалили и заново создали таблицу, вы можете восстановить данные с помощью

pg_restore -h hostname -p 5432 -U username -a -d mydatabase dumpfile

Однако это не сработает, если структура таблицы изменилась.

В этом случае вы можете использовать COPY напрямую, чтобы записать данные в файл и восстановить их оттуда.

Предположим, например, что вы планируете добавить еще один столбец. Тогда вы можете сбросить с

COPY (SELECT *, NULL FROM mytable) TO '/file/on/dbserver';

После создания таблицы с новым столбцом вы можете

COPY mytable FROM '/file/on/dbserver';

Новый столбец будет заполнен значениями NULL.

Измените этот базовый рецепт для более необычных требований.

person Laurenz Albe    schedule 16.09.2020
comment
Привет Лоренц, Спасибо за ответ. Я сделаю резервную копию своей производственной базы данных на Heroku. Вы знаете, смогу ли я восстановить базу данных Heroku, если удалю таблицу и создам точно такую ​​же снова? - person Ozge Cokyasar; 16.09.2020
comment
Не знаю об услугах Heroku, возможно, кто-то другой может заполнить. Но мой ответ должен работать с размещенными базами данных так же, как и с другими. - person Laurenz Albe; 16.09.2020
comment
Базы данных не размещаются непосредственно на динамометрическом стенде Heroku. Кроме того, вы можете выбрать свой собственный сервер базы данных и указать ссылку на этот сервер в переменных кода/среды. У Heroku есть руководство по надстройке Postgres. - person Tin Nguyen; 16.09.2020