最近公司開始要把 MySQL 陸續換為 PostgreSQL,兩者的使用方式有蠻多不同的地方。先把備份跟還原的方式做個筆記吧!
參考文件:[PostgreSQL - Backup and Restore](http://www.postgresql.org/docs/8.1/static/backup.html)
* 備份:跟 MySQL 一樣,只是 CLI 指令的為 pg_dump,但跟 mysqldump -u 不一樣、得_以 sudo 實際切換使用者_(一般都是 postgres)
sudo -u postgres pg_dump %db_name > %dump_file
* 還原:比較複雜
* 通常你需要先移除原有的 DB,先用 psql 進入、執行下列指令:
DROP DATABASE ;
* 但常常會發生有人正在使用,你需要先把他們踢掉 (_請記得自行修改下面的 db_name_):
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = AND pid <> pg_backend_pid();
* 建立新的資料庫:
CREATE DATABASE
* 最後以 q 離開 psql 命令模式,以剛剛的檔案做還原
psql %db_name < %dump_file
* 像 Rails 會記錄剛剛的資料庫伺服器連線,所以會有錯誤訊息,你只要重新啟動一次 Server 即可。
↧