如果您使用的是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,并如果服务器未启动,则启动它。
创建临时文件夹
在终端上执行以下命令,在任意位置创建一个临时文件夹。(文件夹名称可以是任意的。)
$ 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.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
安装新版本
请下载最新的主要更新的安装程序。
将文件拖放到应用程序文件夹中。
点击“开”。
点击「初始化」。
让通道通过。
为了能够使用附带的命令行工具,请在终端中执行以下命令。
$ 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等工具进行确认。
如果数据已经成功迁移,则完成以上步骤。