12.04 LTS→14.04 LTS アップグレード

今更感がありますが。

ポイントは、14.04にpostgresql-9.1のパッケージがないので、pgdg版を使うのと、普通にdo-release-upgradeすると、サードパーティのapt-lineが無効化されてしまい一発でアップグレードが終わらないので、無効にしないオプションをつけてdo-release-upgradeを起動します。

pgdg版 PostgreSQLがインストールされるように設定

https://www.postgresql.org/download/linux/ubuntu/ にあるように、apt-keyとapt-lineを設定。
/etc/apt/sources.list.d/pgdg.list

deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

ただし、そのままだとpostgresql-9.1以外のPostgreSQLパッケージもpgdg版が入るので、それ以外はUbuntu版が入るように/etc/apt/preferences.d/postgresql として以下を設定

サードパーティのaptが無効にされないようにするオプション

以下のように環境変数 RELEASE_UPRADER_ALLOW_THIRD_PARTY=1 を設定(UP’G’RADERではない)してdo-release-upgradeをかけると、jma-receiptのapt・上で設定したPostgreSQLのpgdg版のapt-lineが無効にならずに、Presice→Trustyに書き換わっていい感じにアップグレードされます。

RELEASE_UPRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
PostgreSQL 9.1→9.3へデータ移行

アップグレード直後はPostgreSQL 9.1で動作しているため、PostgreSQL 9.3で動くように変換します。pg_upgradeclusterコマンドで一発で9.1から9.3へデータ移行できますが、アップグレード時に9.3 mainという名前の空のデータベースクラスタが出来上がっているので一旦削除してから変換します。

pg_dropcluster --stop 9.3 main
pg_upgradecluster 9.1 main

うまく移行できたら、9.1 mainのクラスタ、postgresql-9.1のパッケージ、apt-lineなども削除。

その後、14.04のデスクトップの設定などを行いますが、弊社では極力手作業ではなくAnsibleをつかって自動化しております。
アップグレードにかかった所要時間は、1時間程度でした。(Core i5-4590 4GB、パッケージは事前ダウンロード、HDDで、ext4はnobarrierオプション付き)