Thread: BUG #16215: Restore failes if number of workers in postgresql.conf is lower than on source system
BUG #16215: Restore failes if number of workers in postgresql.conf is lower than on source system
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 16215 Logged by: Stefan Sonnenberg-Carstens Email address: stefan.sonnenberg.carstens@gmail.com PostgreSQL version: 10.11 Operating system: Linux Description: I tried to restore a binary backup (basebackup + WAL archives) onto a smaller machine. During restore the following log message was issued: 2020-01-17 07:14:20.524 UTC [19274] FATAL: hot standby is not possible because max_worker_processes = 2 is a lower setting than on the master server (its value was 8) 2020-01-17 07:14:20.526 UTC [19273] LOG: startup process (PID 19274) exited with exit code 1 2020-01-17 07:14:20.526 UTC [19273] LOG: aborting startup due to startup process failure 2020-01-17 07:14:20.541 UTC [19273] LOG: database system is shut down pg_ctl: could not start server Examine the log output. The workaround was to raise the number of max_worker_process for the recovery process to work and lowering it afterwords. This seems to be a bug to me, as I don't see a technical connection between these settings for the restore to be successful. Cheers
Re: BUG #16215: Restore failes if number of workers in postgresql.conf is lower than on source system
From
Sergei Kornilov
Date:
Hello No, this is intended and documented behavior: https://www.postgresql.org/docs/10/hot-standby.html#HOT-STANDBY-ADMIN max_worker_processes must be at least the same as on primary. It is because exactly of our technical connection between recoveryand the number of backends. regards, Sergei
Re: BUG #16215: Restore failes if number of workers inpostgresql.conf is lower than on source system
From
Stefan Sonnenberg-Carstens
Date:
Hi Sergei,
as far as I understand these restrictions apply when
hot_standby
is set to on AND a recovery.conf is missing.I can confirm that hot_standby is commented out - is this setting on by default?
grep hot_standby /etc/postgresql/10/main/postgresql.conf
#hot_standby = on # "off" disallows queries during recovery
#hot_standby_feedback = off # send info from standby to prevent
#hot_standby = on # "off" disallows queries during recovery
#hot_standby_feedback = off # send info from standby to prevent
Cheers
Am Fr., 17. Jan. 2020 um 08:58 Uhr schrieb Sergei Kornilov <sk@zsrv.org>:
Hello
No, this is intended and documented behavior: https://www.postgresql.org/docs/10/hot-standby.html#HOT-STANDBY-ADMIN
max_worker_processes must be at least the same as on primary. It is because exactly of our technical connection between recovery and the number of backends.
regards, Sergei
--
Stefan Sonnenberg-Carstens
IT Ingenieur
Re: BUG #16215: Restore failes if number of workers in postgresql.conf is lower than on source system
From
Sergei Kornilov
Date:
Hello > as far as I understand these restrictions apply when hot_standby is set to on AND a recovery.conf is missing. When hot_standby is set to on AND a recovery.conf is PRESENT Here is: https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/access/transam/xlog.c#L6185 ArchiveRecoveryRequested is set if we found recovery.conf (see readRecoveryCommandFile) > I can confirm that hot_standby is commented out - is this setting on by default? Yes, in postgresql 10 and newer. regards, Sergei
Re: BUG #16215: Restore failes if number of workers inpostgresql.conf is lower than on source system
From
Stefan Sonnenberg-Carstens
Date:
Sure, during restore the recovery.conf is present (as I create it to be able to do the restore).
After setting the parameter hot_standby explicitly to off, I can confirm that it is no longer required to have higher values as on the source system.
Ok, It would be great to have this default as a comment in the postgresql.conf that is created during cluster init as for many other parameters.
Then, indeed, this is not a bug.
Thank you for this explanation and your help!
Cheers
Am Fr., 17. Jan. 2020 um 10:45 Uhr schrieb Sergei Kornilov <sk@zsrv.org>:
Hello
> as far as I understand these restrictions apply when hot_standby is set to on AND a recovery.conf is missing.
When hot_standby is set to on AND a recovery.conf is PRESENT
Here is: https://github.com/postgres/postgres/blob/REL_10_STABLE/src/backend/access/transam/xlog.c#L6185
ArchiveRecoveryRequested is set if we found recovery.conf (see readRecoveryCommandFile)
> I can confirm that hot_standby is commented out - is this setting on by default?
Yes, in postgresql 10 and newer.
regards, Sergei
--
Stefan Sonnenberg-Carstens
IT Ingenieur