標籤:
PostgreSQL版本快速升級
寫在前面
PostgreSQL9.5版本支援資料分區的功能,為以後做分布式考慮,準備將生產環境的9.1版本升級至9.5。中間需要做資料移轉。
在遷移操作中,為保證資料完整性,一般需要在資料庫停止的情況下進行備份恢複操作,在資料量小的情況下,通過pg_dumpall的方式備份恢複也是很迅速的,但如果資料量大的情況,再使用這種方式將會耗去大量的時間,特別在生產環境中,長時間的停止使用資料庫是非常致命的。
PostgreSQL提供了pg_upgrade的命令用於資料庫版本的升級,使用link模式可以快速對資料進行遷移操作。
操作步驟:
1、安裝新版本資料庫
/PATH/TO/postgresql-9.5.1-1-linux-x64.run,根據提示進行資料庫安裝操作。
2、停止舊版本的資料庫
/etc/init.d/postgresql-9.1 stop ,根據實際情況停止資料庫運行
3、檢查舊資料的地區支援格式
地區支援在初始化資料庫時被指定,不可更改,因此需要將新的資料庫的地區支援更改成與舊資料庫一樣,否則pg_upgrade操作會報錯。
a、查看舊資料庫的地區支援,主要是lc-collate,lc-ctype兩個參數,進入資料庫,使用\l,可以查看
b、使用initdb指定地區支援初始化新的資料庫。
/PATH/TO/9.5/bin/initdb --lc-collate=zh_CN.utf8 --lc-ctype=zh_CN.utf8 --lc-messages=zh_CN.utf8 --lc-monetary=zh_CN.utf8 --lc-numeric=zh_CN.utf8 --lc-time=zh_CN.utf8 -D /PATH/newdata/
4、通過link mode 進行快速的資料庫升級,要使用link模式需確保新舊資料目錄在同一個檔案系統底下
先介紹下pg_upgrade的幾個常用參數:使用pg_upgrade --help可以查看詳細參數配置
-d, --old-datadir=DATADIR 指定舊資料檔案所在目錄
-D, --new-datadir=DATADIR 指定新資料檔案所在目錄
-b, --old-bindir=BINDIR 指定舊版本可執行命令目錄
-B, --new-bindir=BINDIR 指定新版本可執行命令目錄
-k, --link 使用link模式進行更新(即使用永久連結的方式將新資料檔案指向舊資料檔案的真實存放位置,減去了copy的時間)
/PATH/TO/9.5/bin/pg_upgrade -d /PATH/TO/olddata -D /PATH/TO/newdata -b /PATH/TO/9.1/bin -B /PATH/TO/9.5/bin --link
若沒報錯,則完成。
5、啟動新資料庫
參考:
http://www.postgresql.org/docs/9.5/static/pgupgrade.html
PostgreSQL版本快速升級