Re: Wrong HINT during database recovery when occur a minimal wal.

From: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
To: lchch1990(at)sina(dot)cn
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Wrong HINT during database recovery when occur a minimal wal.
Date: 2021-01-15 08:29:40
Message-ID: 20210115.172940.724791956217367040.horikyota.ntt@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

At Fri, 15 Jan 2021 15:32:58 +0800, "lchch1990(at)sina(dot)cn" <lchch1990(at)sina(dot)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 higher on 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 value was 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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2021-01-15 08:42:15 Re: Parallel INSERT (INTO ... SELECT ...)
Previous Message Peter Eisentraut 2021-01-15 08:00:31 Re: pg_upgrade test for binary compatibility of core data types