はじめに
Local環境でPostgeSQLの14を使用していたのですが、15にバージョンアップしたくなりました。ただHomebrew経由でインストールしたPostgreSQLはなく、GUIのPostgres.appからインストールしたPostgreSQLを使用していました。GUI版かつデータ移行有でのメジャーバージョンアップを解説したサイトがそんなになさそうだったので記録しておきます。どなたかの参考になれば幸いです。(基本的にPostgres.app公式サイトのドキュメントを参考にしてますが、公式サイトはデータの移行とメジャーバージョンアップを分けて記載しており少々分かりにくかったです。)
環境
項目 | 情報 |
---|---|
OS | macOS Ventura 13.1 |
プロセッサ | 1.6 GHz デュアルコアIntel Core i5 |
PostgreSQL(アップデート前) | 14.6 |
PostgreSQL(アップデート後) | 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は閉じる。
旧バージョンの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.appの公式サイトから最新のメジャーアップデートのインストーラーをダウンロード
Postgres.app公式のインストーラーダウンロードページ
Applicationsフォルダへのドラッグ&ドロップ
ダウンロードしたdmgファイルをダブルクリックし、インストールを開始する。
以下のウィンドウが表示されたら"Postgres.app"を"Applications"にドラッグ&ドロップ
「開く」をクリック
新しく配備されたApplicationsフォルダのPostgres.appを開くと以下のウィンドウが表示されるので、「開く」をクリック。
「Initialize」をクリック
新しいバージョンのPostgres.appが開かれるので、「Initialize」をクリックして初期化する。
初期化が完了するとサーバが起動する。
パスを通す。
付属のコマンドラインツールを使用できるようにするため、ターミナルで以下のコマンドを実行する。
$ 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等で確認してください。
データが正常に移行されていれば、以上となります。