昔はドキュメントに「リリース間の移行」っていう節があったのだけど、10 のドキュメントには同じ位置に見当たらない。
https://www.postgresql.jp/document/9.0/html/migration.html
Conversation
Notices
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 09:32:50 JST やきたま :sabakan:
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 09:36:50 JST やきたま :sabakan:
PDF から同じ名前で検索もしてみたけど、その文字列を持つタイトルがないので、たぶんなんらかの理由で削除されてる、と理解。よく分かんないけど。となると、おそらくだけど、9.0 向けのドキュメントに書いてあるとおりの作業をすると、不具合が発生するんじゃないか、というカンがあったりなかったりする。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 09:47:45 JST やきたま :sabakan:
9.4 向けの文書で似たようなこと書いてあるセクションを発見、これで探してみよう。
https://www.postgresql.jp/document/9.4/html/upgrading.html -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 09:49:35 JST やきたま :sabakan:
あったー! 9.1 からセクション名と場所が変わってますね。よかったー
https://www.postgresql.jp/document/9.5/html/upgrading.html
https://www.postgresql.jp/document/10/html/upgrading.html -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 09:58:56 JST やきたま :sabakan:
読んでますけど、ポイントは
1. 今回は、移行元 Postgres と移行先 Postgres が別のシステムであるため、データディレクトリのアップグレードのような複雑な手順を踏む必要はなさそう
2. pg_dump または pg_dumpall のような論理バックアップツールを使用すれば理論的にはうまくいくはず
3. 論理バックアップツールは、新しいバージョンのものを使用する - 今回は 10 に含まれるものと利用するほうがよい
4. バックアップはファイルに出力するだけでなく、パイプを経由して一気に実行することも可能ってことで、あと気になるのは
q. pg_dump はネットワークの先にある postgres に接続して dump してくれるのか?
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:01:18 JST やきたま :sabakan:
pg_dumpall のリファレンスを読む限り、-h スイッチでホストを指定できますね。問題なさそう。ただし、PostgreSQL 9.5 がインストールされたシステムから同 10 がインストールされたシステムへの接続テストは実施したけれど、その逆は実施していない(し、設定もしていない)ので、まずはそこの対応が必要になりそう。
https://www.postgresql.jp/document/10/html/app-pg-dumpall.html -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:09:23 JST やきたま :sabakan:
pg_dumpall のリファレンスを見ていると、アップグレード処理のドキュメントには言及がなかったけど重要な感じのオプションが存在していたりして、なかなかの怖さがあるw
--quote-all-identifiers
強制的にすべての識別子に引用符を付与します。 このオプションは、pg_dumpallのメジャーバージョンとは異なるメジャーバージョンのPostgreSQLのサーバーからデータベースをダンプするとき、あるいは出力を異なるメジャーバージョンのサーバにロードする予定であるときに推奨されます。 -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:18:59 JST やきたま :sabakan:
?
-o, --oids
各テーブルのオブジェクト識別子(OID)をデータの一部としてダンプします。 アプリケーションでOID列を(外部キー制約など)何らかの形で使用している場合は、このオプションを使用してください。 -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:19:26 JST やきたま :sabakan:
Mastodon のコード読んで中身全部理解してないと dump を正確に作ることすらできないのでは……
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:19:47 JST やきたま :sabakan:
いや、Mastodon Documentation にバックアップ方法とか書いてあるのでは。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:21:36 JST やきたま :sabakan:
「pg_dump や pg_dumpall を用いてバックアップしましょう」くらいしか書いてなかった。特に追加のスイッチを指定しなくても十分である、というメッセージだと読んだ。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:24:47 JST やきたま :sabakan:
なので、あくまでも PostgreSQL バージョンが変わることによる不整合、的な側面でのみ考えればよさそう。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:27:43 JST やきたま :sabakan:
pg_dumpall 的なやつのオプション精査してるけど、PostgreSQL の仕様と Mastodon の仕様を正確に把握してないと厳しい感じだし、仮にそれっぽく移行できたとして、それが本当に確実に間違いなくできているかどうか、ってのは僕には絶対に分からないなぁ。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:41:27 JST やきたま :sabakan:
一応、pg_dumpall を使えば、Mastodon がデータベースにアクセスするためのユーザー(ロール)も、認証情報含めてバックアップしてくれるっぽいので、そっち使うほうがよさそう。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:49:16 JST やきたま :sabakan:
んー、WebArchive 様で discourse のページ見てみましたけど、pg_dump ないし pg_dumpall を使ってる人はいなくて、データベースファイルをまるごと tarball みたいなのに固める、って人が多数派っぽい。同じバージョンにリストアすることが分かっているならそれで十分ですからね。んー……
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 03-Jan-2019 10:55:05 JST やきたま :sabakan:
んー、プランは 2 つ。懸念事項は「PostgreSQL 10 へのアップグレードがうまくいくか分かんない」
1. テストインスタンスを立ち上げ、そのテストインスタンスを実際に PostgreSQL 9.5 から同 10 へアップグレードし、そしてその環境でインスタンスを起動してみる。デメリットは、今から本番環境と同じ環境の Ubuntu さんをインストール、インスタンスの立ち上げ、ってあたりを全部やらなきゃいけなくて、立ち上げまでで半日仕事になりそう。
2. えいやー!(ストレンジストラテジー)
-