Re: [PATCH 13/16] Introduction of pair of logical walreceiver/sender

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: pgsql-hackers@postgresql.org
Date: 2012-06-29T15:16:11Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Don't waste the last segment of each 4GB logical log file.

  2. Stamp HEAD as 9.3devel.

  3. Wake WALSender to reduce data loss at failover for async commit.

  4. Make the visibility map crash-safe.

On 13.06.2012 14:28, Andres Freund wrote:
> A logical WALReceiver is started directly by Postmaster when we enter PM_RUN
> state and the new parameter multimaster_conninfo is set. For now only one of
> those is started, but the code doesn't rely on that. In future multiple ones
> should be allowed.

Could the receiver-side of this be handled as an extra daemon: 
http://archives.postgresql.org/message-id/CADyhKSW2uyrO3zx-tohzRhN5-vaBEfKNHyvLG1yp7=cx_YH9UA@mail.gmail.com

In general, I feel that the receiver-side could live outside core. The 
sender-side needs to be at least somewhat integrated into the walsender 
stuff, and there are changes to the WAL records etc. that are hard to do 
outside, but AFAICS the stuff to receive changes is pretty high-level 
stuff. As long as the protocol between the logical replication client 
and server is well-defined, it should be possible to write all kinds of 
clients. You could replay the changes to a MySQL database instead of 
PostgreSQL, for example, or send them to a message queue, or just log 
them to a log file for auditing purposes. None of that needs to be in 
implemented inside a PostgreSQL server.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com