PostgreSQL 的備份與還原

此篇文章最近更新時間為2014-02-09 01:43:36 目前共有4篇留言

關於作者 - JosephJ

任職於 Faria。喜好戶外運動、2008 年 5 月完成「跑步環島」。對於新技術跟程式碼有著強烈的偏執狂。

最近公司開始要把 MySQL 陸續換為 PostgreSQL,兩者的使用方式有蠻多不同的地方。先把備份跟還原的方式做個筆記吧!

參考文件:PostgreSQL - Backup and Restore

  • 備份:跟 MySQL 一樣,只是 CLI 指令的為 pg_dump,但跟 mysqldump -u 不一樣、得以 sudo 實際切換使用者(一般都是 postgres)

    sudo -u postgres pg_dump %db_name > %dump_file
    
  • 還原:比較複雜

    • 通常你需要先移除原有的 DB,先用 psql 進入、執行下列指令:

      DROP DATABASE <db_name>;
      
    • 但常常會發生有人正在使用,你需要先把他們踢掉 (請記得自行修改下面的 db_name):

      SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
      WHERE pg_stat_activity.datname = <db_name> AND pid <> pg_backend_pid();
      
    • 建立新的資料庫:

      CREATE DATABASE <db_name>
      
    • 最後以 \q 離開 psql 命令模式,以剛剛的檔案做還原

      psql %db_name < %dump_file
      
    • 像 Rails 會記錄剛剛的資料庫伺服器連線,所以會有錯誤訊息,你只要重新啟動一次 Server 即可。



Comments

  1. Tsung 2014-02-23 17:30:23
    PostgreSQL 最大的好處是, 你可以把所學的 SQL 語法拿出來好好用~ (ex: JOIN...)
  2. johnpupu 2014-02-19 01:38:29
    了解 ~ 感謝 Josephj 的開示呀 ~~
    我們還在觀望的原因主要是 Cluster or Master - Master 的機制
    我印象中在 PostgreSQL 好像還沒有比較成熟的 Open Souce 方案
  3. josephj 2014-02-16 17:08:02
    我比較沒辦法給一個好解答,因為 Database 離我的專業領域多少有些距離。

    先前問同事,大概就是考慮到效能、以及功能。再來就是 MySQL 被 Oracle 買了之後似乎並沒有積極地改進(一切都是道聽塗說,有錯歡迎指正)。

    一個我印象比較深刻的功能是 hstore 與 JSON datatype:不像 mysql 只能將 key value mapping 存於 string 或 text,PostgreSQL 可不安裝套件直接以 SQL query 取得。可以直接將一些要求效能的許多非正規資料存於單一欄位。

    對我來說,目前缺點是 Mac 沒有像 Sequel Pro 這樣的好又免費 GUI :p
  4. johnpupu 2014-02-12 00:05:17
    方便說說轉換的原因嗎 ??
暱稱: 必填。
Email: 非必填。若填寫為不公開欄位,僅供站長參考聯繫。
內容: 必填。限 255 個字元以內。
驗證碼:
送出

Facebook Comment