🚨注意点
- バージョンアップ関連でのトラブルと対応方法について
- Homebrewでインストールしたpostgresqlが起動しないのを調べた - @znz blog
- Homebrewからpostgresqlがなくなった? - Hack myself
※postgresql(バージョン指定無し)
はver.14として使えた(2024/3/26時点。最新はver.16) - ruby on rails - Postgres could not connect to server - Stack Overflow
- 以下、バージョンアップ時の参考(まだ読んでない)
- 停止方法について(cf. 注釈 < postgres - PostgreSQL 15文書)
postgresを終了させるためにSIGKILLを使用するのは可能な限り避けてください。 SIGKILLで終了させると、postgresが終了前に保持しているシステムリソース(共有メモリやセマフォ)を解放しなくなることがあります。 システムリソースが解放されていないと、新しくpostgresを起動する時に問題が起こる可能性があります。
OS等のコマンドで起動・停止する方法
macOS(Homebrew)
⭐️インストールに以下2種類の書き方があり、同様に起動・停止のコマンドも2種類ある
①brew install postgresql@バージョン番号
:指定のバージョンがインストールされる
②brew install postgresql
:バージョン指定無しでインストールした場合、ver.14がインストールされた(2024/3/26時点。最新はver.16)
brew services start postgresql@バージョン番号
:PostgreSQLを起動。OSの再起動でも自動起動する
brew services start postgresql
:(バージョン指定無しでインストールした場合に使える)brew services stop postgresql@バージョン番号
:PostgreSQLの停止と、自動起動の停止
brew services stop postgresql
:(バージョン指定無しでインストールした場合に使える)brew services list
:起動中のサービスの確認
起動失敗と対応の例
Debian
🚨macOSと同様に「バージョン番号指定」の有無で違うと思われるが未確認
sudo systemctrl start postgresql@バージョン番号
:起動sudo systemctrl stop postgresql@バージョン番号
:停止sudo systemctrl restart postgresql@バージョン番号
:再起動sudo systemctrl enable postgresql@バージョン番号
:自動起動の設定sudo systemctrl disable postgresql@バージョン番号
:自動起動の停止
共通の停止方法(Linux、macOS)
ps aux | grep postgres
:起動中のプロセスを確認。詳細情報も表示
ps aux | head -n 1
:各項目名を表示kill プロセスID
:プロセス終了。SIGTERM(まずこれを試す)
kill -9 プロセスID
:プロセス終了。SIGKILL(🚨最後の手段)
(kill -l
:killのシグナル一覧を表示)
PostgreSQLのコマンドで起動・停止する方法
🚨以下の「データベースクラスタのパス(=設定ファイル等の置き場のパス)」が各コマンドで必要になる。(もし該当するディレクトリが無い場合は、
initdb --locale=C -E UTF-8 パス
で作る。cf. initdb - PostgreSQL 15文書)
- macOS:
/opt/homebrew/var/postgres@バージョン番号
(デフォルト。以前はパスが違ったらしい。/usr/local/var/postgres
) - Debian:
/etc/postgres/バージョン番号/main
(デフォルトか未確認。バージョン番号は、メジャーの数字のみ)
pg_ctl
を使う方法
pg_ctl -D データベースクラスタのパス start
:起動pg_ctl -D データベースクラスタのパス stop
:停止pg_ctl -D データベースクラスタのパス restart
:再起動
postgres
を使う方法
postgres - PostgreSQL 15文書
他の方法と違い、フォアグランドでpostgresqlサーバが動き、ターミナルの表示が「postgresqlのログ」になる。
(コマンド入力するには、「別ターミナルを開く」か「表示されるログを別ファイルに保存。cf. 19.3. データベースサーバの起動 - PostgreSQL 15文書」)
postgres -D データベースクラスタのパス
:起動
🚨停止方法は、ctrl
-c