如果您使用的是macOS系统并且使用Postgres.app,进行重要的升级(包含数据迁移)

首先

我在本地环境中使用了PostgreSQL 14,但想要升级到15版。然而,我没有通过Homebrew安装PostgreSQL,而是使用了GUI的Postgres.app来安装。因为没太找到有关使用GUI版本进行带有数据迁移的重大版本升级的解释网站,所以我决定把过程记录下来。希望对他人有所帮助。(虽然我基本上是参考Postgres.app官方网站的文档,但官方网站将数据迁移和重大版本升级分开介绍,稍显不太清晰。)

环境

項目情報OSmacOS Ventura 13.1プロセッサ1.6 GHz デュアルコアIntel Core i5PostgreSQL(アップデート前)14.6PostgreSQL(アップデート後)15.1

主要更新流程

获取旧版本的备份

打开Postgres.app,并如果服务器未启动,则启动它。

postgres_backup_2.png

创建临时文件夹

在终端上执行以下命令,在任意位置创建一个临时文件夹。(文件夹名称可以是任意的。)

$ mkdir -m 777 postgresql_dump
$ cd postgresql_dump

执行备份命令

在终端上运行以下命令,备份旧版本的PostgreSQL数据。

$ pg_dumpall --quote-all-identifiers | gzip >postgresapp.sql.gz
$ ls -l
total 8
-rw-r--r--  1 xxxxxx  xxxxxx  1174  2  8 21:36 postgresapp.sql.gz

卸载旧版本的Postgres.app

停用旧版本的服务器

postgres_install_2.png

当停止运行时,Postgres.app将会关闭。

删除旧版本的Postgres.app

将Applications文件夹中的Postgres.app移动到垃圾箱中。

删除旧版本的数据目录

在终端上执行以下命令,删除旧版本的PostgreSQL数据目录。

$ rm -rf ~/Library/Application\ Support/Postgres
$ ls -ld ~/Library/Application\ Support/Postgres
ls: /Users/ngnmsn/Library/Application Support/Postgres: No such file or directory

删除旧版本的设置

在终端上执行以下命令,删除旧版本的PostgreSQL配置。

$ defaults delete com.postgresapp.Postgres2

删除旧版本的$PATH命令行工具的配置

在终端中执行以下命令,删除旧版本的$PATH命令行工具的配置。

$ sudo rm /etc/paths.d/postgresapp

安装新版本

请下载最新的主要更新的安装程序。

postgres_download.png

将文件拖放到应用程序文件夹中。

postgres_15_install_1.png

点击“开”。

postgres_install_4.png

点击「初始化」。

postgres_install_6.png

让通道通过。

为了能够使用附带的命令行工具,请在终端中执行以下命令。

$ sudo mkdir -p /etc/paths.d
$ echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

使用psql进行版本确认。

请在终端上执行以下命令,确认 psql 的版本是否为 15。

$ psql --version
psql (PostgreSQL) 15.1

将旧版本的备份数据迁移到新版本

暫時改變目錄位置

在终端执行以下命令,切换到临时文件夹。
同时确认之前的备份存在。

$ cd /* 一時ディレクトリのパス */
$ ls -l
total 8
-rw-r--r--  1 xxxxxx  xxxxxx  1174  2  8 21:36 postgresapp.sql.gz

执行数据迁移命令

在终端上执行以下命令,将备份数据迁移至新版本的服务器。

$ gunzip <postgresapp.sql.gz | psql

确认数据是否成功迁移。

请使用psql等工具进行确认。
如果数据已经成功迁移,则完成以上步骤。

广告
将在 10 秒后关闭
bannerAds