- Mysterious case of dissapearing postgres process
- When in doubts, check the logs
- Upgrade postgres from 11 to 12
Mysterious case of dissapearing postgres process
Had a curious issue of not being able to connect to Postgres the other day.
it was quite baffling because listing the services via
brew services list -
it does indicate that postgres is running.
➜ brew services list Name Status User Plist postgresql started FTjandrawibawa /Users/FTjandrawibawa/Library/LaunchAgents/homebrew.mxcl.postgresql.plist redis started FTjandrawibawa /Users/FTjandrawibawa/Library/LaunchAgents/homebrew.mxcl.redis.plist
ps -ef doesn't show any postgres process.
➜ ps -ef|grep postgresql 502 4764 1512 0 1:43pm ttys001 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn postgresql
And sure enough
psql couldn't find a running server to connect to.
➜ psql psql: error: could not connect to server: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
When in doubts, check the logs
Stumbled upon the following command from stackoverflow:
brew services restart -vvv postgresql
I have been using the restart command, but I haven't come across the
-vvv option which
gives us a few more details about the process.
It spits out the generated
plist for postgress and from there I saw the
location of postgres log in
:facepalm:, how could I forgot to check the logs?
So looking at the logs, it immediately obvious what the issue was.
2019-12-27 13:51:59.077 AEDT  FATAL: database files are incompatible with server 2019-12-27 13:51:59.077 AEDT  DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 12.1.
I just did a
brew upgrade earlier that day, and I must have upgraded postgres version from 11 to 12.
Upgrade postgres from 11 to 12
homebrew gives us a utitlity to upgrade postgres data directory,
found this from running
brew info postgres.
The command is:
And when it's done
➜ ps -ef|grep postgres 502 6744 1 0 1:53pm ?? 0:00.04 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres 502 6753 6744 0 1:53pm ?? 0:00.00 postgres: checkpointer 502 6754 6744 0 1:53pm ?? 0:00.02 postgres: background writer 502 6755 6744 0 1:53pm ?? 0:00.02 postgres: walwriter 502 6756 6744 0 1:53pm ?? 0:00.01 postgres: autovacuum launcher 502 6757 6744 0 1:53pm ?? 0:00.05 postgres: stats collector 502 6758 6744 0 1:53pm ?? 0:00.00 postgres: logical replication launcher 502 6837 1512 0 1:54pm ttys001 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn postgres