背景
PostgreSQLは、9.4 からhstore やjson形式に対応したので、古いバージョンからUpgradeが必要になる場合もあり、自分のアップデートの経験をここで記しておきたい。
使える資料
基本はこれ一つをそのままやれば、なんとかなる。自分のUpgradeしたいバージョンに合わせて、適宜変える。しかし、やはり途中でエラーなどが出るものである。
環境
ubuntu 14.04
postgres 9.3 -> 9.5
あれ?自分のバージョンは?という人は、
クライアントバージョン
psql --version
サーバーバージョン
pg=config --version
Ubuntu
とりあえず設定ファイルをコピー
(必要性はない気がする。まあ念のため)
sudo cp /etc/postgresql/9.3/main/postgresql.conf ~/
sudo cp /etc/postgresql/9.3/main/pg_hba.conf ~/
Postgres9.5をインストール
updateして最新の状態にしてからインストール
(最後のpostgisはインストール失敗。なぜかよくわからない)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.5 postgresql-server-dev-9.5 postgresql-contrib-9.5
sudo apt-get install postgresql-9.5-postgis
データをDump
(Dump用のDirectoryを作成(必須ではない))
リンクでは、新しくDirectoryを作っているが、Sudo権限が必要になるので、場所は適宜自分で変更して良いので、これは飛ばしてもいい。
mkdir /mnt/dumps
cd /mnt/dumps
Dump
以下を実行しDumpする(この場合CurrentDirectoryにDumpされるので、どこにいるか確認する)
bash
sudo /usr/lib/postgresql/9.5/bin/pg_dumpall > pre_upgrade_from_9.3_to_9.5.dump
(うまくいかない場合は、sud su postgres
でpostgres User で実行するとできるかもしれないが、postgres がsudoerでない場合は、上のコマンドのsudo
をつけない)
(Configファイルでデータ保存場所の変更(必須ではない))
今回は変更せず。
Postgresをストップ
postgresユーザに切り替えて、postgresユーザがsudoer でない場合は、Sudoerになってから以下を実行すると、今あるPostgreSQLがとまる。(僕の場合は9.3と9.5)
sudo /etc/init.d/postgresql stop
Clusterを新しくして起動
sudo pg_dropcluster 9.5 main
sudo pg_createcluster 9.5 main
注意:Localeの設定ができてないとエラーが出る場合は、http://qiita.com/d6rkaiz/items/c32f2b4772e25b1ba3ba などを参考に、 export=en_US.UTF-8
とexport LC_ALl=$LANG
などを実行してからpg_createclusterをすると大丈夫かも。
sudo /etc/init.d/postgresql start 9.5
Dumpしたデータを取り込む
今の状態では、前のデータはないので、データを取り込む。
- ポート番号は、/etc/postgresql/9.5/main
を確認する。Upgradeした場合は、5433に多分なっている。
- データは自分のDumpがおいてある場所を指定
sudo su postgres
psql -d postgres -p 5433 -f ~/pre_upgrade_from_9.3_to_9.5.dump
最後にRestart(必要かどうかはわからないが。。)
sudo service postgresql restart 9.5
これで完了
最後に
前のバージョンが要らなければ削除
sudo apt-get autoremove postgres-9.3
Mac
以下にUninstallとInstallするのを貼った。
残りは、DumpしてRestoreすれば大丈夫!