Help us understand the problem. What is going on with this article?

postgresをアップグレードする(Ubuntuメイン)

More than 3 years have passed since last update.

背景

PostgreSQLは、9.4 からhstore やjson形式に対応したので、古いバージョンからUpgradeが必要になる場合もあり、自分のアップデートの経験をここで記しておきたい。

使える資料

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

基本はこれ一つをそのままやれば、なんとかなる。自分の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-8export 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するのを貼った。

https://www.moncefbelyamani.com/how-to-upgrade-postgresql-with-homebrew/

残りは、DumpしてRestoreすれば大丈夫!

gymnstcs
東大広域システム→吉林大学修士&3idea Web開発データ解析→bytedanceレコメンドエンジニア→beBitエンジニア。趣味: データ解析, 言語:Python, Ruby, C++, Java, 技術: k8s, terraform, Kafka, Athena, (Hadoop, Spark, Storm, Flink, Hive)
bebit
ユーザ視点からの価値創出を追求するエクスペリエンス・デザイン・パートナー
https://www.bebit.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away