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.212258.2262134479731399431.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 17:04:19 +0800, "lchch1990@sina.cn" <lchch1990@sina.cn> wrote in 
> 
> >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)
 
> Then mark hot_standby off and continue try lowered wal_level.
> And do recovery from the basebackup, then you will see the FATAL.
> 
> >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.
> I think this HINT is want to guide users to finish this recovery, and the first guide is
> invalid in my opinion.

I think it's also important to suggest to the users how they can turn
on hot_standby on their standby.  So, perhaps-a-bit-verbose hint would
be like this.

"Either start this standby from base backup taken after setting
wal_level to \"replica\" on the primary, or turn off hot_standby
here."

This this make sense?

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Bharath Rupireddy
Date:
Subject: Re: Logical Replication - behavior of ALTER PUBLICATION .. DROP TABLE and ALTER SUBSCRIPTION .. REFRESH PUBLICATION
Next
From: Ashutosh Bapat
Date:
Subject: Re: Determine parallel-safety of partition relations for Inserts