On 2020-05-20 17:16, Anders Bøgh Bruun wrote:
> [67] LOG: logical replication apply worker for subscription
> "widgets_sub" has started
> [67] DEBUG: connecting to publisher using connection string
> "dbname=testdb host=master port=5432 user=repuser password=abc123"
> [67] ERROR: could not receive data from WAL stream: ERROR: publication
> "widgets_pub" does not exist
> CONTEXT: slot "my_slot", output plugin "pgoutput", in the change
> callback, associated LSN 0/1674958
> [1] DEBUG: unregistering background worker "logical replication worker
> for subscription 16396"
> [1] LOG: background worker "logical replication worker" (PID 67) exited
> with exit code 1
>
> I can verify that the publication called widgets_pub does exist, and I
> am not seeing any errors on the sending side.
>
> The SQL-file named "works" just has the creation of the replication slot
> moved down to after I insert some data into the table I want to
> replicate. And that works as expected.
You need to create the publication before the replication slot. The
walsender's view of the world moves along with the WAL it is
decoding/sending. So when the subscription worker connects, it
initially sees a state as of the creation of the replication slot, when
the publication did not exist yet.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services