Re: Replication identifiers, take 3

Поиск
Список
Период
Сортировка
От Steve Singer
Тема Re: Replication identifiers, take 3
Дата
Msg-id BLU436-SMTP18739974A640974EFAD403FDCBC0@phx.gbl
обсуждение исходный текст
Ответ на Re: Replication identifiers, take 3  (Andres Freund <andres@2ndquadrant.com>)
Список pgsql-hackers
On 09/26/2014 10:21 AM, Andres Freund wrote:
> On 2014-09-26 09:53:09 -0400, Robert Haas wrote:
>> On Fri, Sep 26, 2014 at 5:05 AM, Andres Freund <andres@2ndquadrant.com> wrote:
>>>> Let me try to summarize the information requirements for each of these
>>>> things.  For #1, you need to know, after crash recovery, for each
>>>> standby, the last commit LSN which the client has confirmed via a
>>>> feedback message.
>>> I'm not sure I understand what you mean here? This is all happening on
>>> the *standby*. The standby needs to know, after crash recovery, the
>>> latest commit LSN from the primary that it has successfully replayed.
>> Ah, sorry, you're right: so, you need to know, after crash recovery,
>> for each machine you are replicating *from*, the last transaction (in
>> terms of LSN) from that server that you successfully replayed.
> Precisely.
>
>>> I don't think a solution which logs the change of origin will be
>>> simpler. When the origin is in every record, you can filter without keep
>>> track of any state. That's different if you can switch the origin per
>>> tx. At the very least you need a in memory entry for the origin.
>> But again, that complexity pertains only to logical decoding.
>> Somebody who wants to tweak the WAL format for an UPDATE in the future
>> doesn't need to understand how this works, or care.
> I agree that that's a worthy goal. But I don't see how this isn't the
> case with what I propose? This isn't happening on the level of
> individual rmgrs/ams - there've been two padding bytes after 'xl_rmid'
> in struct XLogRecord for a long time.
>
> There's also the significant advantage that not basing this on the xid
> allows it to work correctly with records not tied to a
> transaction. There's not that much of that happening yet, but I've
> several features in mind:
>
> * separately replicate 2PC commits. 2PC commits don't have an xid
>    anymore... With some tooling on top replication 2PC in two phases
>    allow for very cool stuff. Like optionally synchronous multimaster
>    replication.
> * I have a pending patch that allows to send 'messages' through logical
>    decoding - yielding a really fast and persistent queue. For that it's
>    useful have transactional *and* nontransactional messages.
> * Sanely replicating CONCURRENTLY stuff gets harder if you tie things to
>    the xid.

At what point in the decoding stream should something related to a 
CONCURRENTLY command show up?
Also, for a logical message queue why couldn't you have a xid associated 
with the message that had nothing else in the transaction?

l



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Steve Singer
Дата:
Сообщение: Re: Replication identifiers, take 3
Следующее
От: Dean Rasheed
Дата:
Сообщение: Re: WITH CHECK and Column-Level Privileges