web-dev-qa-db-ja.com

PostgreSQLマイナーバージョンアップグレード中にデータが失われる

Homebrewを使用して実行されたPostgreSQL 9.4.5をMacOSにインストールしました。私はそれを9.4の最新のマイナーバージョンに更新したかったので、これを行いました(正しく覚えている場合)。

brew uninstall postgresql
brew install [email protected]

postgreSQL 9.4.17を正常にインストールしましたが、プロセス中にすべてのデータが失われたようです。 initdbが一度に実行されたのを確認しましたが、削除の原因は何ですか?

:本番データベースではなかったため、実際には何も失われませんでしたが、この結果には驚きました。その理由を知りたいのですが。

2
lunr

実際、PostgreSQL initdbは新しいデータベースストアを最初から開始するため、空であるため、アンインストールして再インストールする必要はありません。

ところで、あなたのデータはまだそこにありますが、別の古いディレクトリにある可能性があります。たとえば、9.4と9.5の間のアップグレードを示すこの記事( https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ )を参照してください。ただし、適用される場合がありますあなたの場合も同じように。

PostgreSQL式 を見ると、次のことがわかります。

def post_install
    (var/"log").mkpath
    (var/name).mkpath
    unless File.exist? "#{var}/#{name}/PG_VERSION"
      system "#{bin}/initdb", "#{var}/#{name}"
    end
end

したがって、initdbは、ディレクトリがまだ設定されていない場合にのみ呼び出す必要があります。この場合、データベースが新しいディレクトリで初期化されて空になり、データはまだ別のディレクトリにあります。

しかし、物事は最近変化しました。

Homebrew 1.5 、2018年1月19日にリリースされ、変更ログに次のように記載されています。

brew postgresql-upgrade-databaseは、メジャーバージョン間でのPostgreSQLデータベースのアップグレードを簡略化する新しいコマンドです。

これはPostgreSQL pg_upgradeツールのラッパーであり、データベースを適切にアップグレードするために使用できるため、メジャーバージョン間を含め、何も失うことはありません。

この記事( https://olivierlacan.com/posts/migrating-homebrew-postgres-to-a-new-version/ )は、PostgreSQLをアップグレードする方法とその内容に関する多くの情報を提供します。 brew upgradeを使用すると発生します。

1
Patrick Mevzek