Mastodonはどうなっていくんだろう 大阪丼にプルリク投げた件

Dockerから下したインスタンスを再びDockerに載せた

クソみたいな文章の前に、役に立ちそうな情報を記述しておきます。

DockerのPostgreSQLのバックアップの方法

Dockerでコンテナを立てる

docker run --rm -p 5432:5432 -v postgres:/var/lib/postgresql/data -d postgres:9.6-alpine

このときに立てるPostgreSQLのバージョンはdocker-compose.ymlなどに書かれてる ものと同じバージョンを指定すること。

ホストでPostgreSQLを走らせていると、同じポートに割り当てできないので、 別のポートを指定すること。

ホスト側でバックアップを実行する

pg_dump -h localhost -p 5432 -U postgres -f backup.sql

Dockerで動かしているとだいたいユーザー名もdb名もpostgresだと思う。 たぶん。

バックアップが済んだら、ちゃんとコンテナをしまっておきましょう。

DockerへDBを移行する

基本的に普通のDBと同じように扱える(そらそう)。

上のように、コンテナを立てて、バックアップしたファイルから流し込めばOK。

psql -h localhost -p 5432 -f backup.sql ${DB_NAME}

これは本当にこのコマンドでいけるかどうかはわかりません…。 当時はマジで適当に移したので、たぶんこうでしょうというアレです。

さて

めんどくせえことやってんな、と思われても仕方なし…。 だけども試行錯誤できるのが一人インスタンスの良さですね。

実際のところ、初期は非力な録画・ファイルサーバにインスタンスを 無理矢理載せてたこともあり、非常に重かったんです。

ただでさえ重い環境にDockerということもあってか、非常にレスポンスが 悪かった。普通に投稿ができないこともあったくらいでした。 そこで直接動かせばよいと思い至り、Dockerから下して直接動かして 動作をすこしでも軽くしようとしていたわけです。

しかし今ではメモリは十分(6GBだけど)にあって、かつSSDなので 非常に高速。本体そのものはThinkCentre M92 Tinyで、 メモリを1枚増やしたのとHDDをSSDに換装したくらい。

これまではパフォーマンス重視でいたので、ほかの不具合などはまあ あってもなんとかやりくりしてきたのですが、 このあいだOS(ArchLinux)のアップデートをかけたところ、 protobufあたりのバージョンがあがって、依存関係が壊れてしまいました。 そもそもArchLinuxなんかを鯖OSにしている時点でアレなんですが。

前回、Node.jsのバージョンによってStreamingが死んだ件で (それに関連する話題が出たときに)、 これはもうDockerで動かしていたほうが安定するだろうというのがあったので、 今回は丁度よく壊れたのでDockerに再び納めることとしました。

どうでもいいことなんですが、DockerでのDBバックアップの方法とか 常識だったんですかね…。 自分が知らなかったので、Dockerから下すときはわりと滅茶苦茶な方法で 下してたんだなあというのを今になって思います。

生MastodonでのDBバックアップはMastodonのdocumentationに記述がありました けども、Docker環境でのDBバックアップは見当たりませんでした。

自分はインスタンス立てたころ、このあたりの知識が皆無 だったので(今は大分マシになった程度)、 Dockerでお気軽に立てられる反面、維持に関する情報を得るには 試行錯誤とともにググり力が必要だったなあと思います。

ともあれ、Dockerで立てたインスタンスがDockerを脱ぎ、再びDockerの 上で動きはじめましたとさ。

Mastodonはどうなっていくんだろう 大阪丼にプルリク投げた件