Re: Wrong HINT during database recovery when occur a minimal wal. - Mailing list pgsql-hackers

From Kyotaro Horiguchi
Subject Re: Wrong HINT during database recovery when occur a minimal wal.
Date
Msg-id 20210115.172940.724791956217367040.horikyota.ntt@gmail.com
Whole thread Raw
In response to Re: Wrong HINT during database recovery when occur a minimal wal.  ("lchch1990@sina.cn" <lchch1990@sina.cn>)
List pgsql-hackers
At Fri, 15 Jan 2021 15:32:58 +0800, "lchch1990@sina.cn" <lchch1990@sina.cn> wrote in 
> 
> Sorry, I don't known why it showed in wrong format, and try to correct it.
> -----
> 
> When I do PITR in a strange step, I get this FATAL:
> 
> 2021-01-15 15:02:52.364 CST [14958] FATAL:  hot standby is not possible because wal_level was not set to "replica" or
higheron the primary server
 
> 2021-01-15 15:02:52.364 CST [14958] HINT:  Either set wal_level to "replica" on the primary, or turn off hot_standby
here.
> 
> The strange step is that I change wal_level to minimal after basebackup.

Mmm. Maybe something's missing. If you took the base-backup using
pg_basebackup, that means max_wal_senders > 0 on the primary. If you
lowered wal_level in the backup (or replica) then started it, You
would get something like this.

| FATAL: WAL streaming (max_wal_senders > 0) requires wal_level "replica" or "logical".

If you changed max_wal_senders to zero, you would get the following instead.

| FATAL:  hot standby is not possible because max_wal_senders = 0 is a lower setting than on the primary server (its
valuewas 2)
 

So I couldn't reproduce the situation.

Anyways..

> My question is that what's the mean of  [set wal_level to "replica" on the primary] in
> HINT describe, I can't think over a case to solve this FATAL by set wal_level, I can
> solve it by turn off hot_standby only.
> 
> Do you think we can do this code change?
> --- a/src/backend/access/transam/xlog.c
> +++ b/src/backend/access/transam/xlog.c
> @@ -6300,7 +6300,7 @@ CheckRequiredParameterValues(void)
>   if (ControlFile->wal_level < WAL_LEVEL_REPLICA)
>   ereport(ERROR,
>   (errmsg("hot standby is not possible because wal_level was not set to \"replica\" or higher on the primary
server"),
> -  errhint("Either set wal_level to \"replica\" on the primary, or turn off hot_standby here.")));
> +  errhint("You should turn off hot_standby here.")));

Since it's obvious that the change in a primary cannot be propagted by
taking a backup or starting replication, the first sentence reads to
me as "you should retake a base-backup from a primary where wal_level
is replica or higher". So *I* don't think it needs a fix.

Any thoughts?

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: pg_upgrade test for binary compatibility of core data types
Next
From: Amit Kapila
Date:
Subject: Re: Parallel INSERT (INTO ... SELECT ...)