HerokuのPgbackupsツールを使って、バックアップダンプをローカル環境にダウンロードしました。
$heroku pg:backups:url ID --app アプリ名
その後、PostgreSQLのpg_restoreコマンドを利用して、バックアップダンプをローカル環境にリストアしようとしました。
$pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
すると、下記のエラーが出てきました。
pg_restore: [archiver] unsupported version (1.14) in file header
公式サイトにも書かれていましたが、このようなエラーが出てきた場合は、pg_restoreコマンドのバージョンをあげてくださいと書いてあります。言われる通り、バージョンアップを行いたいのですが、そのやり方が分かりません。どのようにすればよろしいものでしょうか。
公式サイト
https://devcenter.heroku.com/ja/articles/heroku-postgres-import-export
$pg_restore --version pg_restore (PostgreSQL) 9.5.24
herokuでのPostgreSQLのバージョンって、いくつなんですかね。それとリリースを同じくする9.5にしないといけない気がします。9.5.25が2月11日にリリースされているので、アップデートしてみる、とか? https://www.postgresql.org/about/news/postgresql-132-126-1111-1016-9621-and-9525-released-2165/
herokuのPostgreSQLのバージョンは、13.1っぽいです。
$psql --version で表示されました。
ちなみに、ローカル環境のPostgreSQLのバージョンは、9.5です。
psql --version で表示されるのは psql コマンド (クライアント) のバージョンです。PostgreSQL サーバーのバージョンを調べるには、psql などで接続して select version(); する必要があります。
https://self-development.info/postgresql%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95%E3%80%90ubuntu%E3%80%91/
なるほど。そうなのですね。失礼しました。
select version();をしてもバージョンは同じでした。
むしろ、私の方が間違ってたかも。問題なのは pg_restore のバージョンで、これは psql のバージョンと同じである可能性が高いですね。そして、version (1.13) in file header に対応したバージョンは
https://devcenter.heroku.com/articles/heroku-postgres-import-export
https://help.heroku.com/YNH1ZJUS/why-am-i-getting-pg_restore-archiver-unsupported-version-1-13-in-file-header-error-with-pg_restore
に書いてあるけど、1.14 に対応したバージョンの情報が見当たらない…。
https://help.heroku.com/AS2COT8Q/cause-and-resolution-of-unsupported-version-errors-when-restoring-a-postgres-database
本題はローカル環境の PostgreSQL のバージョンを上げたいということですよね。確認ですが、
・ローカル環境の OS とバージョンは? (また、どこで動いてますか?)
・PostgreSQL はどうやって入れましたか? (OS 標準の方法ですか?)
・現在ローカル環境の PostgreSQL に他のデータベースが存在するなら、それも新しい PostgreSQL で動かしたいですか?
ローカル環境はUbuntu16.4です。
PostgreSQLは、aptでインストールしました。
ローカル環境の既存のPostgreSQLのバージョンで動いているアプリは現在のバージョンのままで動かしたいですが、これから新規に作成するアプリにおいては、最新バージョンのPostgreSQLで動かしたいとは思います。
PostgreSQLってpgdg使ってないの? https://www.postgresql.org/download/linux/ubuntu/
pgdgとは?
PostgreSQLのバージョンアップを行うには、最新のクライアントツールを一括でインストールしないといけないみたいですね。pg_restoreだけバージョンアップさせるという事はできないようです。どうしてもやりたいのであれば、ソースコードをインストールして、make installすればできなくもないようです。
ディストロ標準のリポジトリでは最新のPostgreSQLを入れられないので、PostgreSQL公式から公式リポジトリを主なディストロ向けにリリースしているので、新しいのを使いたいときはpgdgから入れる話になります。(以上、聞きかじり情報、詳しくはリンク先を読んでほしい。
ありがとうございます。
Ubuntu の PostgreSQL パッケージはサーバーとクライアントに別れていて、例えば apt install postgresql-13 だと両方入りますが、apt install postgresql-client-13 でクライアントだけを入れることもできますね。で、pg_restore は psql などと一緒にクライアントパッケージに入ってると思います。(13 のクライアントが 9.5 のサーバーとうまくつながるかは知りませんが…。)
複数バージョンを同居させるには、ソースからのインストールの方が無難なようです。
https://qiita.com/takenori-ooba/items/fa0377fb82ed599d995f
回答1件
あなたの回答
tips
プレビュー