Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
От | Ashutosh Bapat |
---|---|
Тема | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart |
Дата | |
Msg-id | CAExHW5vrwcoFRrFG9eZ5t0s-KO3=j0CFn2z=TwSzP1-nXDvv+A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: POC: enable logical decoding when wal_level = 'replica' without a server restart (Masahiko Sawada <sawada.mshk@gmail.com>) |
Ответы |
Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
|
Список | pgsql-hackers |
On Sat, Jan 4, 2025 at 6:03 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote: > > On Fri, Jan 3, 2025 at 6:31 AM Euler Taveira <euler@eulerto.com> wrote: > > > > On Fri, Jan 3, 2025, at 10:14 AM, Bertrand Drouvot wrote: > > > > If we don't want to force wal_level = logical to enable logical decoding (your > > second idea) then I think that it would be better to "hide" everything behind > > logical replication slot creation / deletion. That would mean that having at > > least one logical replication slot created would be synonym to "activate logical > > decoding" and zero logical replication slot created would be synonym to "deactivate > > logical decoding". > > > > > > I like this idea. The logical replication slot existence already has the > > required protections and guarantees (no running transactions from the past while > > creating) for logical decoding. > > I agree that it's better behavior. > > > > > Having said that, you are basically folding 'logical' machinery into 'replica'. > > The 'logical' option can still exists but it will be less attractive because it > > increases the WAL volume even if you are not using logical replication. I don't > > know if the current 'logical' behavior (WAL records for logical decoding even > > if there is no active logical replication) has any use case (maybe someone > > inspects these extra records for analysis) but one suggestion (separate patch) > > is to make 'logical' synonymous with the new 'replica' behavior (logical > > decoding capability). This opens the door to remove 'logical' in future > > releases (accepted as synonym but not documented). > > To enable the logical decoding automatically when the first slot is > created, probably we need to do something like: > > 1. enable WAL-logging logical info. > 2. wait for all running transactions to finish. > 3. enable logical decoding, and write a XLOG_LOGICAL_DECODING_STATUS record, > 4. create a logical slot > 4-1. reserve the WAL and write an XLOG_RUNNING_XACTS record. > 4-2. wait for all transactions in the XLOG_RUNNING_XACTS record to > finish during creating the initial snapshot. A naive question: Can we combine step 2 and 4-2 - may be we need to combine 4-1 and 3 too. -- Best Wishes, Ashutosh Bapat
В списке pgsql-hackers по дате отправления: