簡體   English   中英

Heroku pgbackups:恢復重建數據庫還是只重新填充它?

[英]Does Heroku pgbackups:restore rebuild the database or just repopulate it?

我正在嘗試將Heroku上的生產數據庫復制到我的登台服務器。

我的登台服務器已經超越了我的生產服務器,並且遷移創建了一個額外的表。 我現在想干運行遷移以在生產數據庫上添加該表,因此希望還原我的暫存數據庫以便這樣做。

問題是,每次我restore臨時數據庫restore到生產數據庫時,表格都會粘在一起。 我期待數據庫被銷毀和重新填充,但它似乎只是被重新填充。

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

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

每次我這樣做,我發現“更新”的表仍然存在。

pgbackups:restore實際上是恢復表結構還是簡單的數據 - 這里發生了什么?

還原是一種簡單的Postgres還原,因此基本上是數據的腳本版本。

為此,您需要首先對數據庫進行核對,然后從數據庫腳本重建它:

heroku pg:reset
heroku pgbackups:restore blah...

正如neil所說,pgbackups:restore只會移動數據並且不會改變實際的db結構。

完整的數據庫恢復(更改app-production,app-staging和migration_number以適合您的應用):

首先,從您的生產中獲取當前的遷移。

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

重置staging db(自然,如果需要,備份它)

heroku pg:reset DATABASE_URL --confirm app-staging

運行遷移直到migration_number以適應生產數據庫結構

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

現在,staging db應該與生產數據和結構匹配

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

希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM