On 2014-03-07 12:09:54 -0800, Sergey Konoplev wrote:
> Today, when I tried to change a value of max_connections I faced a
> strange postgres behavior on the replicas. The old value was 500. I
> changed it in the config files of all the servers to 100. Then I
> restarted postgres the master and everything was fine. However, when I
> restarted it the replicas I got a fatal on both of them:
>
> [...]
> LOG: database system is shut down
> LOG: database system was shut down in recovery at 2014-03-07 19:00:49 GMT
> LOG: entering standby mode
> FATAL: hot standby is not possible because max_connections = 100 is a
> lower setting than on the master server (its value was 500)
> LOG: startup process (PID 12187) exited with exit code 1
That's easy to explain. The check is done based on the control file and
that's already on the standby in your case. You need to first replay a
bit of WAL from the primary after lowering the value, triggering the
standby to update what it knows about the master's settings. When
lowering values, it's simplest to first restart the primary with the new
values, wait for the standbys to catch up, and then restart them.
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services