使用 PG copy 升級 Heroku Postgres 資料庫

原文:Upgrading Heroku Postgres Databases

本文為 Heroku 官方文件的閱讀 + 翻譯筆記,最新的資料請參考官方網站。

這篇文章將會介紹如何升級 Heroku Postgres 資料庫。這裡所要說的是關於變更資料庫的 plan (付費方案的部分),以及升級資料庫版本。
關於資料庫的變更只能夠使用 Heroku CLI 指令介面來完成。

升級/變更一個正在運作的 Heroku Postgres 資料庫是一件特別需要注意的操作。

Heroku 共有三種變更方式。在所有的情況下,變更資料庫方案時,應用程式會需要停止服務一點時間,此時無法寫入任何資料。

升級方式 需求說明
PG copy 可用於所有升級的情況包含從 Hobby 方案變更到其他方案。也可用於升級 Postgres 的版本。
Follower Changeover 變更正式環境資料庫的使用方案,資料庫版本維持一致。僅可用於 Standard,Premium,Private 或 Enterprise 方案的資料庫。需花費幾小時準備 follower ,期間應用程式仍可運作,切換所需的停機時間小於 1 分鐘。
pg:upgrade 升級大型資料庫版本。僅可用於 Standard,Premium,Private 或 Enterprise 方案的資料庫。
繼續閱讀

Heroku 優化 Node 應用程式 - 併發

Node 對於擴展到不同規格的主機環境上其能力有限。首先是它是單執行緒,所以預設它不會自動使用額外的 CPU 核心。再者由於它基於 v8 引擎所以有記憶體上的限制概略是 1.5GB,所以也無法自動使用額外的記憶體。

因此 Nodejs 的應用程式需要多個進程來最大化可用的資源。這個過程我們稱為叢集,我們可以透過使用 Nodejs Cluster API 來完成這個功能。
我們可以直接在程式中使用 API 又或者使用基於這些 API 抽象化的函式庫。這裡我們將使用 throng

使用叢集的方式,應用程式可以善加利用各種 dyno 的資源使效能得到提升。Heroku 的 Nodejs buildpack 也提供一些環境變數來協助我們。

繼續閱讀

Heroku 運行類別、 Procfile、常用指令筆記

Procfile 是一種定義指令是否可以在 Heroku dynos(一種輕量化的容器,可以執行特定用戶設定的指令)上執行的機制。
它遵循著 Unix 的程序模型(process model)。這裡為了簡化概念,我們可以說 dyno 就是執行指令的一個個體。舉例來說一個 web dyno 就意味著執行一個 web server 的程式。希望這樣的說明可以理解這些特殊的名詞概念。

繼續閱讀

Heroku 無法 fetch gem

當我們在本機設定 gem 的時候有時候會採用直接從 github 下載的方式

1
gem 'datetimepicker-rails', github: 'zpaulovics/datetimepicker-rails', branch: 'master', submodules: true

不過當我們要把程式碼部署到雲上的主機時,有些時候會碰上該機器無法去 fetch repo 的狀況

這個時候請參考這邊改變設定即可