経緯
お一人様用の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へ上げないと……。