結城浩@social.hyuki.net @hyuki

PostgreSQLのアップデートの件、ますどんをDockerで立ち上げている私はどうすればいいのかしら。
‪https://www.postgresql.org/about/news/1746/‬

@hyuki インスタンスを落としてから

$ docker pull postgres:alpine

で postgres:alpine を更新するだけでいいんじゃないでしょうか

hub.docker.com/_/postgres/

ありがとうございます。これ自体はデータそのものはノータッチでいけると思ってるんですが、そうですよね?(バックアップは取ってからやるとして、いちおう理解のための確認)
@gnue

@hyuki docker-compose.yml をちゃんとカスタマイズして volumes: でデータの保存先をちゃんと指定してあるという前提です(^^;

github.com/tootsuite/mastodon/

@hyuki 停止しても良ければ、停止後pg_dump コマンドでDBの内容をSQLフォーマットでダンプしておいて、新しい環境でpg_restore が割と行けます。customフォーマットだとダメな場合がたまにあります

ありがとうございます。public 以下を丸ごと保存だとまずいかしら…@katsusuke

@hyuki public 以下はrails の配下なのでそのまま保存でアップデートしても動きます。
問題はdbコンテナの、 /var/lib/postgresql/data 配下で、ここはPostgreSQLのバージョンが変わると互換性がなくなって動かなくなるので、pg_dump & pg_restore が必要になります。

むむ。そうなんですね。ありがとうございます。@katsusuke

@hyuki もうすでにいろいろ返信来てると思いますが、docker pull postgres:alipine でいけましたー。9.6.3になりました。

ProgreSQLのアップデート、添付画像に書かれた二つのアドバイス(ありがとうございます)、私には矛盾しているように見えるのですが、そうではないのかしら。まだ勘違いしているのかなあ…もう少し調べるか…
@skoji
@katsusuke @gnue social.hyuki.net/media/JV8RRkc

Sensitive content Click to show

@hyuki
postgress:alpineイメージでは今はpostgressのバージョンが9.6.xの指定になっていたと思います。わたしのところでは、9.6.2から9.6.3になりました。このケースだとメジャーバージョンが同じ9.6なので、DBの互換性問題はありません。

とはいえ、バージョンの確認は念のためしてみたほうが良いですね。docker image側が変わることはあるはずなので(すみません)

参考: 「マイナーリリースでは内部データ保存形式は決して変更されず、同じメジャーバージョン番号の以前と以降のマイナーリリースと常に互換性があります」
postgresql.jp/document/9.0/htm

わざわざすみません。ありがとうございます!!@skoji

バージョンアップにより内部のデータ構造が変更されると、pg_dump & pg_restore が必要になります。今回のアップデートではデータ構造に変更が無い様で、そのままアップデートで大丈夫なようです @hyuki

@katsusuke 納得です!!ありがとうございます!

@hyuki わかりにくい説明でごめんなさい。お役に立てれば何よりです。