Re: min_safe_lsn column in pg_replication_slots view
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Michael Paquier <michael@paquier.xyz>,
Fujii Masao <masao.fujii@oss.nttdata.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2020-06-26T04:45:08Z
Lists: pgsql-hackers
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.) > 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. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Fix uninitialized value in segno calculation
- b5b4c0fef9fb 14.0 landed
- 794e8e32bb5a 13.0 landed
-
Morph pg_replication_slots.min_safe_lsn to safe_wal_size
- c54b5891f415 13.0 landed
- a8aaa0c786b3 14.0 landed