Re: Logical replication in the same cluster

From: Petr Jelinek <petr(dot)jelinek(at)2ndquadrant(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Logical replication in the same cluster
Date: 2017-04-26 21:41:51
Message-ID: 95517899-5415-dc28-e50b-0f651e552a0b@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 26/04/17 18:59, Bruce Momjian wrote:
> I tried setting up logical replication on the same server between two
> different databases, and got, from database test:
>
> test=> CREATE TABLE test (x INT PRIMARY KEY);
> CREATE TABLE
> test=>
> test=> INSERT INTO test VALUES (1);
> INSERT 0 1
> test=> CREATE PUBLICATION mypub FOR TABLE test;
> CREATE PUBLICATION
>
> then from database test2:
>
> test2=> CREATE TABLE test (x INT PRIMARY KEY);
> CREATE TABLE
> test2=> CREATE SUBSCRIPTION mysub CONNECTION 'dbname=test port=5432'
> PUBLICATION mypub;
> NOTICE: synchronized table states
>
> and it just hangs. My server logs say:
>
> 2017-04-26 12:50:53.694 EDT [29363] LOG: logical decoding found initial
> starting point at 0/15FF3E0
> 2017-04-26 12:50:53.694 EDT [29363] DETAIL: 1 transaction needs to
> finish.
>
> Is this expected? I can get it working from two different clusters.
>

Yes that's result of how logical replication slots work, the transaction
that needs to finish is your transaction. It can be worked around by
creating the slot manually via the SQL interface for example and create
the subscription using WITH (NOCREATE SLOT, SLOT NAME = 'your slot') .

--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2017-04-26 21:56:17 Re: Logical replication in the same cluster
Previous Message Tom Lane 2017-04-26 21:05:39 Re: Unportable implementation of background worker start