From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Amit Kapila <amit.kapila16@gmail.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: Re: min_safe_lsn column in pg_replication_slots view
Date: Tue, 30 Jun 2020 23:23:30 +0900
Message-ID: <c7821eb9-1ca6-1a4c-29a3-3dc1659d8f76@oss.nttdata.com> (raw)
In-Reply-To: <02b19420-20e6-fc3b-d6dd-62e5e6abe511@oss.nttdata.com>
References: <20200625225350.GA1504@paquier.xyz>
<20200625232417.GA11415@alvherre.pgsql>
<CAA4eK1LJjqW5OuAmWLh5ob=+-kdc6twy_EG=nUpHKpVt-tm6Uw@mail.gmail.com>
<02b19420-20e6-fc3b-d6dd-62e5e6abe511@oss.nttdata.com>
On 2020/06/30 17:07, Fujii Masao wrote:
>
>
> On 2020/06/26 13:45, Amit Kapila wrote:
>> On Fri, Jun 26, 2020 at 4:54 AM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
>>>
>>> On 2020-Jun-26, Michael Paquier wrote:
>>>
>>>> On Thu, Jun 25, 2020 at 11:24:27AM -0400, Alvaro Herrera wrote:
>>>>> I don't understand the proposal. Michael posted a patch that adds
>>>>> pg_wal_oldest_lsn(), and you say we should apply the patch except the
>>>>> part that adds that function -- so what part would be applying?
>>>>
>>>> I have sent last week a patch about only the removal of min_safe_lsn:
>>>> https://www.postgresql.org/message-id/20200619121552.GH453547@paquier.xyz
>>>> So this applies to this part.
>>>
>>> Well, I oppose that because it leaves us with no way to monitor slot
>>> limits. In his opening email, Masao-san proposed to simply change the
>>> value by adding 1. How you go from adding 1 to a column to removing
>>> the column completely with no recourse, is beyond me.
>>>
>>> Let me summarize the situation and possible ways forward as I see them.
>>> If I'm mistaken, please correct me.
>>>
>>> Problems:
>>> i) pg_replication_slot.min_safe_lsn has a weird definition in that all
>>> replication slots show the same value
>>>
>>
>> It is also not clear how the user can make use of that value?
>>
>>> ii) min_safe_lsn cannot be used with pg_walfile_name, because it returns
>>> the name of the previous segment.
>>>
>>> Proposed solutions:
>>>
>>> a) Do nothing -- keep the min_safe_lsn column as is. Warn users that
>>> pg_walfile_name should not be used with this column.
>>> b) Redefine min_safe_lsn to be lsn+1, so that pg_walfile_name can be used
>>> and return a useful value.
>>> c) Remove min_safe_lsn; add functions that expose the same value
>>> d) Remove min_safe_lsn; add a new view that exposes the same value and
>>> possibly others
>>>
>>> e) Replace min_safe_lsn with a "distance" column, which reports
>>> restart_lsn - oldest valid LSN
>>> (Note that you no longer have an LSN in this scenario, so you can't
>>> call pg_walfile_name.)
>
> I like (e).
>
>>
>> Can we consider an option to "Remove min_safe_lsn; document how a user
>> can monitor the distance"? We have a function to get current WAL
>> insert location and other things required are available either via
>> view or as guc variable values. The reason I am thinking of this
>> option is that it might be better to get some more feedback on what is
>> the most appropriate value to display. However, I am okay if we can
>> reach a consensus on one of the above options.
>
> Yes, that's an idea. But it might not be easy to calculate that distance
> manually by subtracting max_slot_wal_keep_size from the current LSN.
> Because we've not supported -(pg_lsn, numeric) operator yet. I'm
> proposing that operator, but it's for v14.
Sorry this is not true. That distance can be calculated without those operators.
For example,
SELECT restart_lsn - pg_current_wal_lsn() + (SELECT setting::numeric * 1024 * 1024 FROM pg_settings WHERE name = 'max_slot_wal_keep_size') distance FROM pg_replication_slots;
If the calculated distance is small or negative value, which means that
we may lose some required WAL files. So in this case it's worth considering
to increase max_slot_wal_keep_size.
I still think it's better and more helpful to display something like
that distance in pg_replication_slots rather than making each user
calculate it...
Regards,
--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: masao.fujii@oss.nttdata.com, amit.kapila16@gmail.com, alvherre@2ndquadrant.com, michael@paquier.xyz, horikyota.ntt@gmail.com
Subject: Re: min_safe_lsn column in pg_replication_slots view
In-Reply-To: <c7821eb9-1ca6-1a4c-29a3-3dc1659d8f76@oss.nttdata.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox