慕凡(@ryudoawaru)'s blog

目前還沒想到

在 Mac / Homebrew 下升級 PostgreSQL 從 9.3 到 9.4

| Comments

前言

PostgreSQL 和 MySQL 不同,資料檔格式會隨著小數點二位數以上的版號(9.3 - 9.4)變動,換句話說每當升級版本時,資料檔就必需要升級才可以繼續使用。

升級的方式有兩種:

  • 將原本的資料執行 pg_dumpall 後再 restore 回去
  • pg_upgrade 命令從舊的資料檔產生出新版本的資料檔。

這邊要講的是第二種情形。

環境限定:

  • 可執行 Homebrew 的 MacOS 環境
  • 原 PostgreSQL 為 Homebrew 安裝,9.3.x 版

步驟

  1. 安裝新的 PostgreSQL
    1
    2
    
    brew update
    brew install postgresql
    
  2. 停止現在的 PostgreSQL Daemon
    1
    
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    
  3. 建立 9.4 的資料庫檔案
    1
    
    initdb /usr/local/var/postgres9.4 -E utf8
    
  4. 使用 pg_upgrade 指令升級 舊PG的資料檔案到 9.4,注意這邊的 9.3.5_1 和 9.4.0 是會依照你的舊版本和實際安裝的新板本的版號而有差異的
    1
    2
    3
    4
    5
    
    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres9.4 \
        -b /usr/local/Cellar/postgresql/9.3.5_1/bin/ \
        -B /usr/local/Cellar/postgresql/9.4.0/bin/
    
  5. 將舊資料檔備份,並且讓新資料檔的目錄更名使之變成預設的資料檔
    1
    2
    3
    
    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
    
  6. 重啟 PostgreSQL
    1
    
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    
  7. 檢查 /usr/local/var/postgres/server.log 檔是否有正常啟動 server
  8. 如果原本有安裝 pg GEM 的話要重新安裝

以上!

Comments