【问题标题】:How to migrate PostgreSQL data from Postgres.app version to Homebrew-installed version如何将 PostgreSQL 数据从 Postgres.app 版本迁移到 Homebrew 安装版本
【发布时间】:2019-12-07 18:58:52
【问题描述】:

几年前我使用 Postgres.app 安装了 PostgresSQL(9.4 版),但从现在开始我想使用 Homebrew 来管理 PostgreSQL。我在 Mac OS 10.14 上。我已经使用 Homebrew 安装了最新版本(12.1),我想知道如何将我的数据移动到这个新版本。我读过的所有更新指南都假定新旧版本安装在同一位置。

数据目录:

/Users/robin/Library/Application Support/Postgres/var-9.4 /usr/local/Cellar/postgresql/12.1

【问题讨论】:

    标签: postgresql homebrew upgrade


    【解决方案1】:

    假设您知道 Postgres.app 的 .../data/ 目录所在的位置(检查您的偏好),您应该能够使用 pg_upgrade 从 9.4 迁移到 12。您需要重新创建一个 initdb v. 12 集群中的第一个。

    以下是一些步骤,根据您的环境,假设 1) postgres v. 12 未在您的系统上运行(或您已停止它),以及 2) 您尚未在 v. 12 中创建数据库:

    export PGDATANEW=/Users/robin/pgsql/12/data # (or desired location)
    mkdir -p $PGDATANEW
    /usr/local/Cellar/postgresql/12.1/bin/initdb -D $PGDATANEW -U postgres
    export PGDATAOLD="/Users/robin/Library/Application Support/Postgres/var-9.4"
    export PGBINOLD=/Applications/Postgres.app/Contents/Versions/latest/bin
    export PGBINNEW=/usr/local/Cellar/postgresql/12.1/bin
    /usr/local/Cellar/postgresql/12.1/bin/pg_upgrade -U postgres
    

    如果您已经有一个现有的 v.12 数据库,则需要转储数据,将其保存在某个地方,并在执行 initdb 步骤之前擦除现有的 v.12 数据文件夹

    选项 2:另一个选项是将您的 9.4 数据pg_dump/pg_dumpall 到一个文件,然后将其导入您的 v.12 数据库

    披露:我为EnterpriseDB (EDB)工作

    【讨论】:

    • 感谢您的回复。我添加了 Postgress.app 首选项给我的数据目录。我还添加了 Homebrew 安装版本的位置。我注意到两者都不称为data。至于psql 二进制文件,我不确定我在寻找什么。
    • 运行pg_upgrade时出现以下错误:“无法打开版本文件:/Users/robin/Library/Application\ Support/Postgres/var-9.4/PG_VERSION”
    • 当您在 Postgres.app 中执行 SHOW data_directory; 时,您会得到什么? ls /Users/robin/Library/Application\ Support/Postgres/var-9.4 显示了什么?
    • SHOW data_directory 返回 Postgress.app 首选项中的相同目录。 PG_Version 以及许多其他文件和文件夹都在该目录中。
    • 哦,也许你需要成为 Postgres 用户才能运行 pg_upgrade。我需要尝试一下,但可能要到明天才能解决
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多