PostgreSQL 起動についての備忘録

Database

以前下記ブログでデータベース作成や、基本的なコマンドをまとめたが、今回はその前段階のSQLサーバー起動について

環境

当方の環境はMac、OSはBIg Sur

% sw_vers
ProductName:	macOS
ProductVersion:	11.6.2
BuildVersion:	20G314

PostgresSQLの前準備

PostgresSQLを起動する前に、まずはデータベースサーバを起動させる必要がある。

サーバ起動なしにはPostgreSQLも起動できない。

すなわちpsqlと言うデータベースを扱うターミナル(PostgreSQL interactive terminal)を立ち上げようとしても、下記エラーが出て起動できない。

% psql postgres
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?

データベースサーバの起動

と言う事でまずはデータベースサーバの起動。
起動の為のコマンドはbrew upgradeの時に下記の通り教えてくれる。

% brew upgrade
(中略)
To restart postgresql after an upgrade:
  brew services restart postgresql
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres

これによると起動方法は下記2つ

  1. Homebrewを利用して起動
  2. ターミナルのコマンドで起動

1. Homebrewを利用して起動

私も多用している方法だが、Homebrewを利用し、”brew services restart postgresql”でサーバを起動する。

% brew services restart postgresql
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

最初は”restar”じゃなくて”start”じゃないの?と思ったあなた。私も同様に思いました。

確かに、”brew services start postgresql”でも起動するが、バックグラウンドで起動していると、下記エラーが出て気持ち悪い。

% brew services start postgresql 
Service `postgresql` already started, use `brew services restart postgresql` to restart.

restartをするとバックグラウンドで起動していても下記の通りstopしてstartしてくれる。

% brew services restart postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

都度使い始めは再起動してから使い始めるのがスッキリ気持ち良いので、バックグラウンドで動いていようがいまいが、”restart”で(再)起動するのがデフォルトとして良さそう。

Homebrewで起動すると止めるまで動いている

ところで、”brew services start postgresql”で起動すると、下記の通り”brew services stop postgresql”のコマンドを入れて”Successfully stopped postgresql“を見るまでずっと背後(バックグラウンド)でpostgresqlが起動している事になる。

% brew services stop postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

特に負荷を感じる事も無かったので当方はこちらを多用していたが、環境によっては都度起動する方が良いのかもしれない。

その場合の、バックグラウンドで動かし続けない、都度起動して停止したい場合の起動方法がこの2つ目ターミナルのコマンドで起動。

2. ターミナルのコマンドで起動

ターミナルで直接”/usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres”を打ち込んで起動。

% /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres
2022-05-14 12:48:09.617 JST [60997] LOG:  starting PostgreSQL 14.3 on x86_64-apple-darwin20.6.0, compiled by Apple clang version 13.0.0 (clang-1300.0.29.30), 64-bit
2022-05-14 12:48:09.619 JST [60997] LOG:  listening on IPv6 address "::1", port 5432
2022-05-14 12:48:09.619 JST [60997] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2022-05-14 12:48:09.619 JST [60997] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2022-05-14 12:48:09.630 JST [60998] LOG:  database system was shut down at 2022-05-14 12:48:06 JST
2022-05-14 12:48:09.646 JST [60997] LOG:  database system is ready to accept connections

この場合のデータベースサーバを止める方法は、コントロールc(ctr+c)か、お勧めしないが強制的にターミナルを閉じるか、Macをシステム終了させる事。

下記はctr+cで止めた場合のターミナル画面。

^C2022-05-14 12:50:51.089 JST [61031] LOG:  received fast shutdown request
2022-05-14 12:50:51.090 JST [61031] LOG:  aborting any active transactions
2022-05-14 12:50:51.094 JST [61031] LOG:  background worker "logical replication launcher" (PID 61038) exited with exit code 1
2022-05-14 12:50:51.099 JST [61033] LOG:  shutting down
2022-05-14 12:50:51.109 JST [61031] LOG:  database system is shut down

作業は別タブで

この2で起動した場合、起動させたタブではLOGを取る様なので、データベースターミナルpsqlの操作は別タブで行う事になる。

(別タブで)
% psql postgres
psql (14.3)
Type "help" for help.

以上、PostgreSQL 起動についての備忘録。
現時点ではMac使用なら1つ目のHomebrew利用が便利と考えます。

Homebrew バックグラウンドで動いているかの確認”brew services”

今バックグラウンドで動いているかどうかは”brew services list”で確認できる。

% brew services restart postgresql                             
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
% brew services list          
Name       Status  User      File
postgresql started username ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

止めた後はStatusが”none”になっているのが分かる。

% brew services stop postgresql   
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
% brew services list   
Name       Status  User      File
postgresql none   

ちなみに、2の方法で起動した場合、Homebrewで起動していない訳なのでここのStatusは”none”のまま。
そう考えると、できるだけbrewで管理したい向きにはやはり1のHomebrew利用での起動が望ましいと考える。

[キャンペーン中]

繰り返しになりますが、6/16までのキャンペーンとの事なので。

スタンダードだと普通に契約すると1,320円/月、
長期契約で1年契約1,100円/月、2年契約1,045円/月、3年契約990円/月の所
キャッシュバックのお陰で
1年契約=実質550円/月、2年契約=実質522円/月、3年契約=実質495円/月とプレミアム、ビジネスもそれぞれ長期優待金額から更に半額キャッシュバックされるお得キャンペーン。

契約特典の新規で選んだドメイン永久無料も付くとの事。
今始めたいブログやサイト等ある人にとってはとても良いキャンペーンだと考えます。

コメント

タイトルとURLをコピーしました