LoginSignup
5
4

More than 5 years have passed since last update.

[mastodon] PostgreSQLを 9.5 → 11.1 へアップグレードする

Last updated at Posted at 2019-01-23

経緯

お一人様用のmastodonを運用しているのですが、mastodonの2.7.0へのアップデートにより、PostgreSQLのアップグレードが推奨されることとなりました。
ミドルウェアのアップグレードなんてしたことがないですし、聞ける人もいないしうわーんって感じです。
去年夏ごろに立てた鯖なのですが、入っているPostgreSQLのバージョンが9.5でしたので、これを機に負債を解消すべく一気に気合でアップグレードを行うことにしました。
いろいろ調べて自分で咀嚼できた手順でやってみました。

他の鯖缶さんたちの役に立てばと思い公開しますが、
正直、こっち↓の方法がUbuntuでは最適解だと思いますので、そちらを試してみてほしいなぁと思うところがあります。
https://gorails.com/guides/upgrading-postgresql-version-on-ubuntu-server
存在は知ってたのですがポート変えて起動しなきゃなのか?とかちょっとよくわからなかったのでやめました。
手動でアップグレードしてみた今ならなるほどな~って感じで実行できますね…。
なにも考えずにapt-getで11をインストールしてそのまま↑の流れに乗っかればいいだけですね。

前提

  • Ubuntu 16.04
  • mastodon 非Docker

おおまかな流れ

  • mastodonを停止
  • 既存PostgreSQLのバックアップと退避
  • 新しいPostgreSQLをインストール
  • バックアップより復元
  • サーバリブート

mastodonを停止

とりあえずとめます。

systemctl stop mastodon-*.service

既存PostgreSQLのバックアップと退避

PostgreSQLの中身をpg_dumpallでdumpします。
postgresユーザじゃないと動かないのでsuでユーザ変えるのを忘れずに。

sudo su postgres
mkdir backup
cd backup
pg_dumpall > all_backup_postgres-db_20190122
exit

dumpしおわったらrootで旧PostgreSQLを一応退避
これ退避しなくても正直よしなにやってくれるので放置でもいいとおもうんですけど一応。

sudo su
systemctl stop postgresql
mv /var/lib/postgresql /var/lib/postgresql.old
mv /etc/postgresql /etc/postgresql.old

うちの環境では/var/lib/postgresqlにインストールされているようでした。
また、/etc/postgresql/9.5/main/postgresql.confを見ると
data_directory=/var/lib/postgresqlになっていたので
そちらも退避してます。

新しいPostgreSQLをインストール

コレ自体は本家のページと同様です。
https://www.postgresql.org/download/linux/ubuntu/
ただバージョン指定せずにlatestを引っ張ってきてます。

apt-getのリポジトリに追加します。

vim /etc/apt/sources.list.d/pgdg.list
# でこれ↓を追加
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

その後は新しいPostgreSQLをインストールします。

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
apt-get update
apt-get install postgresql

バックアップより復元

取ってたdumpからDBなど復元します。

sudo su postgres
cd /var/lib/postgresql.old/backup
# dumpより復元
psql -d postgres -f all_backup_postgres-db_20190122
# 一応再起動
sudo systemctl restart postgresql
# クラスターが上がってきているか確認
pg_lsclusters

サーバリブート

この時点でsudo systemctl start mastodon-*.serviceで上げてもある程度は動いたのですが、sidekiq先輩がうまく動かず、他鯖との通信がだめだったのでリブートしました。
自鯖だと自分の裁量でてきとうにできるのでいいですね。

まとめ

DBという飛ぶとやばいやつのアップグレードという貴重な体験をすることができたのでよかったです。
自鯖を持つとインフラ周りの大変さが非常によくわかりますね。。。
何かしらおかしい点があればツッコミをお願いします。
あぁ、次はRedisを3→5に上げるのとRubyを2.5.3→2.6へ上げないと……。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4