Postgresql – Postgres slave max_connections = master’s max_connections

postgresql

I am using binary replication for Postgres.

Is it true that the max_connections has to be the SAME for both the master and slave in postgresql.conf?

Can they be different?

Best Answer

The documentation has something to say about it [emphasis mine - ed.]:

When running a standby server, you must set this parameter to the same or higher value than on the master server. Otherwise, queries will not be allowed in the standby server.

There are a number of reasons to try to keep your hardware and configuration as close to identical as possible. So I think a strict reading of your question is no. But there are good reasons to keep it the same.

The big reasons have to do with two things: base backups and fail over. If you are taking base backups from the slave then the base backup also includes the configuration. If you later restore it on the master, then you have configuration changes taking place solely because you restored a backup. In a disaster recovery situation, the last thing you want is to be trying to track down "what changed when we restored the backup?!"

The second thing is that this applies in more or less the same way when failing over. Because failing back is still a bit of a pain, you need to be assuming your slave can handle the master's load for a bit of time while you set things up. Keeping the configuration the same is a good way to avoid unpleasant surprises there.