是升級的Heroku Postgres的生產數據庫到9.2停機時間最短的推薦方法?是否有可能使用追隨者,或者我們應該採取pgbackups /快照路線?升級到在Heroku Postgres的
回答
直到logical followers in 9.4,你就必須轉儲和恢復(克雷格描述的原因)。你可以用pgbackups來簡化它:transfer。直接傳輸比轉儲和恢復要快,但知道你不會有快照保留。
下面的腳本基本上是Heroku的Using PG Backups to Upgrade Heroku Postgres Databases ,修改爲pgbackups:transfer。 (如果您有多個實例,說臨時服務器,加上「-a」或「--remote」每個Heroku的行指定的服務器。)
# get the pgbackups plugin
heroku plugins:install git://github.com/heroku/heroku-pg-extras.git
# provision new db
heroku addons:add heroku-postgresql:crane --version=9.2
# wait for it to come online, make note of new color
heroku pg:wait
# prevent new data from arriving during dump
heroku ps:scale worker=0 web=0
heroku maintenance:on
# copy over the DB. could take a while.
heroku pgbackups:transfer OLDCOLOR NEWCOLOR
# promote new database as default for DATABASE_URL
heroku pg:promote NEWCOLOR
# start everything back up and test
heroku ps:scale worker=N web=N
heroku maintenance:off
heroku open
# remove old database
heroku addons:remove HEROKU_POSTGRESQL_OLDCOLOR
請注意,如果您比較它們之間的數據大小,由於9.2的效率,新的可能會小得多。 (我的9.2是9.1的約70%)。
Heroku的追隨者,據我所知,只是PostgreSQL的流媒體副本服務器。這意味着你不能跨版本使用它們,你必須有二進制兼容的數據庫。
相同的技術應適用普通PostgreSQL的,但您可能不能夠在Heroku上使用pg_upgrade
。這需要在承載數據庫的系統上以shell(ssh等)的身份作爲postgres
用戶訪問,所以我懷疑在Heroku上是可能的,除非他們已經提供了一個工具來爲您運行pg_upgrade
。我無法找到關於此的很多信息。
除非您可以找到在Heroku數據庫實例上運行pg_upgrade
的方法,否則您可能必須查看使用Slony-I,Bucardo或其他基於觸發器的複製解決方案來執行升級。總的想法是,你設置了一個新的9.2實例,使用Slony將來自9.1實例的數據克隆到它中,然後一旦它們完全同步,就停止9.1實例,刪除Slony觸發器,並將客戶端切換到9.2實例。
搜尋有關「PostgreSQL的低停機升級Slony聚」的更多信息等等,看你怎麼走。
Craig是正確的,他們是流式複製品:您不能使用此路線進行升級。目前,最好的方法是使用pg-extras插件中提供的pgbackups:transfer命令(https://github.com/heroku/heroku-pg-extras#pgbackupstransfer)來快速傳輸數據(當你應用程序處於維護模式)。未來,我們計劃支持更容易的升級選項。 – hgmnz
@hgmnz爲什麼不使用[heroku-pgupgrade](https://github.com/hgmnz/heroku-pgupgrade)? – thejaz
@thejaz aha!那麼,因爲它目前處於測試階段,並且恰好會被破壞(服務器端),直到另行通知。一旦它準備好黃金時間,我會確保在回購上注意它。 – hgmnz
- 1. 升級Heroku Postgres DB計劃
- 2. Heroku Postgres DB升級後變慢
- 3. 升級在Heroku
- 4. 如何在heroku上將postgres數據庫從9.3升級到9.4?
- 5. 從postgres-9.3升級到postgres-9.5
- 6. Heroku Postgres升級後,Flyway無法連接到數據庫
- 7. heroku升級rubygems
- 8. 在Heroku上升級ImageMagick
- 9. Heroku升級過程?
- 10. 升級後未使用的Heroku Postgres連接
- 11. heroku升級或在heroku中進行升級的新應用程序?
- 12. PostgeSQL:升級Postgres服務器
- 13. Rails.application.assets在升級後無法使用Heroku將sprocket-rails升級到3.0.0
- 14. 升級PostgreSQL數據庫在Heroku
- 15. 在Heroku上升級Bundler版本
- 16. 如何在Heroku上升級分發包?
- 17. Ruby版本在Heroku上不升級
- 18. 作者在升級到symfony3後在heroku上安裝失敗
- 19. 玩Heroku的框架數據庫升級
- 20. Postgres 9.2到9.5升級正在丟失數據
- 21. 在Windows上將Postgres從32位升級到64位版本
- 22. 從Heroku共享數據庫遷移到Heroku Postgres; Heroku Postgres的計劃選擇
- 23. 將Jenkins CI服務器上的Postgres從9.1.9升級到9.3
- 24. 從sonarqube 3.5.1升級到3.6.2的Postgres遷移失敗DB
- 25. 導入csv到heroku postgres
- 26. 如何升級Heroku Leiningen版本?
- 27. 無法升級heroku數據庫
- 28. 升級到RabbitMQ的
- 29. 的Heroku雪松不升級到紅寶石1.9.3
- 30. 升級CometD從2.4/2.5升級到2.9.1?
因爲(最高投票)的解決方案,適用於9.2和9.3,你可以考慮從你的問題標題刪除的版本號。 –