From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Tatsuo Ishii <ishii(at)postgresql(dot)org> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: max_connections and standby server |
Date: | 2015-08-11 07:37:21 |
Message-ID: | 20150811073721.GA15633@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2015-08-11 13:53:15 +0900, Tatsuo Ishii wrote:
> Today I encountered an interesting situation.
>
> 1) A streaming replication primary server and a standby server is
> running. At this point max_connections = 100 on both servers.
>
> 2) Shutdown both servers.
>
> 3) Change max_connections to 1100 on both servers and restart both
> servers.
>
> 4) The primary server happily started but the standby server won't
> because of lacking resource.
>
> 5) Shutdown both servers.
>
> 6) Restore max_connections to 100 on both servers and restart both
> servers.
>
> 7) The primary server happily started but the standby server won't
> because of the reason below.
>
> 32695 2015-08-11 13:46:22 JST FATAL: hot standby is not possible because max_connections = 100 is a lower setting than on the master server (its value was 1100)
> 32695 2015-08-11 13:46:22 JST CONTEXT: xlog redo parameter change: max_connections=1100 max_worker_processes=8 max_prepared_xacts=10 max_locks_per_xact=64 wal_level=hot_standby wal_log_hints=off
> 32693 2015-08-11 13:46:22 JST LOG: startup process (PID 32695) exited with exit code 1
> 32693 2015-08-11 13:46:22 JST LOG: terminating any other active server processes
>
> I think this is because pg_control on the standby remembers that the
> previous primary server's max_connections = 1100 even if the standby
> server fails to start. Shouldn't we update pg_control file only when
> standby succeeds to start?
I don't think that'd help. There's a WAL record generated that contains
the master's settings (C.f. XLogReportParameters()) and when replaying
we check that the local settings are compatible with the master's. So
you'll either have to have higher settings on the standby for at least
one restart or, maybe easier given 4), simply start the standby for a
second with hot_standby = off, and then re-enable it after it has
replayed pending WAL.
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Haribabu Kommi | 2015-08-11 07:56:02 | Re: Priority table or Cache table |
Previous Message | Amit Kapila | 2015-08-11 06:43:25 | Re: Priority table or Cache table |