web-dev-qa-db-ja.com

データを失うことなくPostgreSQLを9.5から9.6.1にアップグレードする方法

psqlを実行しようとすると、

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

と私がチェックしたときServer.log、 私が見た:

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.5,
        which is not compatible with this version 9.6.1.

私はフォローしようとしました このチュートリアル(9.4から9.5へ) 9.6.1のアップグレード用ですが、このエラーメッセージが表示され続けます

cannot write to log file pg_upgrade_internal.log
Failure, exiting

走った後

$ pg_upgrade -v \
> -d /usr/local/var/postgres \
> -D /usr/local/var/postgres9.6.1 \
> -b /usr/local/Cellar/postgresql/9.5/bin/ \
> -B /usr/local/Cellar/postgresql/9.6.1/bin/

誰かが私が欠けている/間違っていることを知っていますか?ありがとう!


システム:

  • MacOS 10.12.2
  • HomebrewとともにインストールされたPostgreSQL
6
ogirginc

データベースのサイズが大きくない場合は、pg_dumpおよびpg_dumpallを使用して、データベース構造とデータダンプをposgtres 9.5からSQLクエリの形式で取得し、それをpostgres 9.6.1で復元できます。

データベースのサイズが大きすぎる場合は、pg_upgradeを使用してください。エラーを確認すると、ユーザーにはディレクトリに対する権限がなく、ログファイルに書き込むことができないようです。また、時間を節約するため、pg_upgradeの-kオプションを使用してアップグレードを高速化することをお勧めします。 -kは、新しくインストールされたデータディレクトリに古いデータのソフトリンクを作成することに注意してください。したがって、古いデータを削除することはできません。

1
Lohit Gupta

9か月後、pg_upgradeを使用して9.6.5からPostgreSQL 10に更新しました。

1)postgresqlを停止します。

brew services stop postgresql

2)postgresql10データベースを初期化します。

initdb /usr/local/var/postgres10.0 -E utf8

3)新しく作成したdbを再確認します。

ls /usr/local/Cellar/postgresql/

4)pq_upgradeを実行して、データを新しいデータベースに移動します。

pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres10.0 \
  -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
  -B /usr/local/Cellar/postgresql/10.0/bin/ \
  -v

5)古いデータベースの名前を変更します。

mv /usr/local/var/postgres /usr/local/var/postgres9.6.5

6)新しいデータベースの名前をpostgresに変更します。

mv /usr/local/var/postgres10.0 /usr/local/var/postgres

7)postgresqlを再起動します。

brew services start postgresql

4
ogirginc